|
|
|
|
/* $Revision$ */
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
#include <math.h>
|
|
|
|
|
#include "SDL.h"
|
|
|
|
|
#include "sdl.h"
|
|
|
|
|
#include "map.h"
|
|
|
|
|
|
|
|
|
|
#define MEERESSPIEGEL 48
|
|
|
|
|
#define BLICKWEITE 55
|
|
|
|
|
#define MAPSIZE 256
|
|
|
|
|
|
|
|
|
|
int sintab[360];
|
|
|
|
|
int costab[360];
|
|
|
|
|
char map[MAPSIZE*MAPSIZE];
|
|
|
|
|
SDL_Surface *screen;
|
|
|
|
|
|
|
|
|
|
void init_tabs() {
|
|
|
|
|
int x;
|
|
|
|
|
|
|
|
|
|
for (x=0;x<360; x++)
|
|
|
|
|
sintab[x] = (int) (127.0 * sin(x*M_PI/180));
|
|
|
|
|
for (x=0; x < 90; x++)
|
|
|
|
|
costab[x] = sintab[x+90];
|
|
|
|
|
for (x=90; x < 360; x++)
|
|
|
|
|
costab[x] = -sintab[x-90];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
|
init_tabs();
|
|
|
|
|
map_init(map,MAPSIZE,MAPSIZE);
|
|
|
|
|
map_generate(map,0,0,MAPSIZE-1,MAPSIZE-1);
|
|
|
|
|
|
|
|
|
|
screen = sdl_init();
|
|
|
|
|
map_setpalette(screen);
|
|
|
|
|
|
|
|
|
|
sleep(30); SDL_Quit(); exit(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
int posx = 0;
|
|
|
|
|
int posy = 0;
|
|
|
|
|
int richtung = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int flughoehe;
|
|
|
|
|
int iy, ix, iy1, iyp, ixp;
|
|
|
|
|
int x, y, z, s, i, j;
|
|
|
|
|
int map_color;
|
|
|
|
|
int rng[] = new int[320];
|
|
|
|
|
|
|
|
|
|
while (true) {
|
|
|
|
|
|
|
|
|
|
// Schnarch...
|
|
|
|
|
try {Thread.sleep(100);} catch (InterruptedException e) {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Richtung wechseln?
|
|
|
|
|
if (java.lang.Math.random()<0.5)
|
|
|
|
|
if (java.lang.Math.random()<1.0)
|
|
|
|
|
if (richtung <= 0) richtung = 357;
|
|
|
|
|
else richtung -= 3;
|
|
|
|
|
else
|
|
|
|
|
if (richtung >= 357) richtung = 0;
|
|
|
|
|
else richtung += 3;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vorw<EFBFBD>rts?
|
|
|
|
|
posy = posy + costab[richtung] / 32;
|
|
|
|
|
posx = posx + sintab[richtung] / 32;
|
|
|
|
|
|
|
|
|
|
if (posy<=0) posy += 256;
|
|
|
|
|
if (posx<=0) posx += 256;
|
|
|
|
|
|
|
|
|
|
Absolute H<EFBFBD>he berechnen
|
|
|
|
|
flughoehe = 100;
|
|
|
|
|
|
|
|
|
|
for (i=0;i<320;i++) rng[i] = 200;
|
|
|
|
|
System.arraycopy(emptyscreen,0,screen,0,320*200);
|
|
|
|
|
|
|
|
|
|
for (iy=posy; iy<=posy+blickweite; iy++) {
|
|
|
|
|
|
|
|
|
|
iy1 = 2 * (iy-posy) + 1;
|
|
|
|
|
s = 4 + 300 / iy1;
|
|
|
|
|
|
|
|
|
|
for (ix=posx-(iy-posy); ix<=posx+(iy-posy); ix++) {
|
|
|
|
|
|
|
|
|
|
ixp = posx + ((ix-posx) * costab[richtung] + (iy-posy) * sintab[richtung])
|
|
|
|
|
/ 128;
|
|
|
|
|
iyp = posy + ((iy-posy) * costab[richtung] - (ix-posx) * sintab[ri
|
|
|
|
|
chtung]) / 128;
|
|
|
|
|
|
|
|
|
|
x = 160 + 360*(ix-posx) / iy1;
|
|
|
|
|
|
|
|
|
|
if ((x>=0) && (x+s<=318) && ((256*iyp+ixp) > 0) && ((256*iyp+ixp)
|
|
|
|
|
< 256*256) ) {
|
|
|
|
|
|
|
|
|
|
map_color = map[256*iyp+ixp];
|
|
|
|
|
z = map[256*iyp+ixp];
|
|
|
|
|
|
|
|
|
|
if (z < meeresspiegel) z = meeresspiegel;
|
|
|
|
|
|
|
|
|
|
y = 100 + 30 * (flughoehe-z) / iy1;
|
|
|
|
|
|
|
|
|
|
if ((y>=0) && (y<=199)) {
|
|
|
|
|
|
|
|
|
|
for (j=x;j<=x+s;j++)
|
|
|
|
|
|
|
|
|
|
for (i=rng[j];i>=y;i--) {
|
|
|
|
|
|
|
|
|
|
if ((320*i+j>=0) && (320*i+j<320*200))
|
|
|
|
|
screen[320*i+j] = (byte)map_color;
|
|
|
|
|
if (y<rng[j]) rng[j] = y;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
*/
|