#include #include #include "SDL.h" #include "SDL_image.h" #define DEBUG 0 #define SDL_VIDEO_FLAGS (SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT | SDL_RESIZABLE) #define LARGEUR 70 #define HAUTEUR 70 static void process_events( void ){ //#define LARGEUR 26 //#define HAUTEUR 16 //#define LARGEUR 166 //#define HAUTEUR 100 /* Our SDL event placeholder. */ SDL_Event event; /* Grab all the events off the queue. */ while( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_KEYDOWN: /* Handle key presses. */ if((&event.key.keysym) ->sym == SDLK_ESCAPE){ SDL_Quit(); exit(0); } break; case SDL_QUIT: /* Handle quit requests (like Ctrl-c). */ SDL_Quit(); exit(0); break; default: break; } } } int main(int argc, char * argv[]){ SDL_Surface * screen; SDL_Surface * dots[16]; char filename[16]; unsigned char wall[LARGEUR][HAUTEUR]; int i, j; unsigned char n, nn, direction; for(i=0;i<16;i++){ sprintf(filename,"dots/%X.png",i); dots[i]= IMG_Load(filename); if(!dots[i]){ printf ( "IMG_Load: %s\n", IMG_GetError () ); return 1; } } for(i=0;iw, screen->h, screen->format->BitsPerPixel); SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0,0,0)) ; // i=13; // j=7; i=LARGEUR / 2; j=(HAUTEUR / 2) -1; direction=1; while (1) { if(DEBUG) printf("pos %d / %d col : %d !!! \n",i,j,wall[i][j]); //wall[i][j]= (wall[i][j]+1)%16; n=wall[i][j]; switch(n){ case 0: nn=7; direction=direction+3; break; case 7: nn=11; direction=direction+1; break; case 11: nn=15; direction=direction+1; break; case 15: nn=0; direction=direction+3; break; } wall[i][j]=nn; direction = direction % 4; SDL_Rect dest={10*i,10*j,0,0}; //SDL_BlitSurface(dots[n],NULL,screen,&dest); SDL_BlitSurface(dots[nn],NULL,screen,&dest); //direction = (direction+1 + 2*(((nn/4 )%2))) % 4; SDL_UpdateRect(screen,10*i,10*j,10,10); if(DEBUG) printf("direction=%i\n",direction); switch(direction){ case 0: j=j-1; if (j<0) { //j=15; j=HAUTEUR -1 ; //direction=direction+2; } break; case 1: i=i+1; //if (i>25) { if (i> (LARGEUR - 1)) { i=0; //direction=direction+2; } break; case 2: j=j+1; //if (j>15) { if (j>(HAUTEUR -1)) { j=0; //direction=direction+2; } break; case 3: i=i-1; if (i<0) { //i=25; i=LARGEUR - 1; //direction=direction+2; } break; } direction = direction % 4; SDL_Flip(screen); process_events(); usleep(2); } SDL_Quit(); return 0; }