diff --git a/sdl-glisseur_dots_42.c b/sdl-glisseur_dots_42.c new file mode 100644 index 0000000..501d2f5 --- /dev/null +++ b/sdl-glisseur_dots_42.c @@ -0,0 +1,164 @@ +#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; +} +