void fun_snake_game(void) { srand((unsigned int)time(NULL)); Uint8 r=(rand()%0xFF); Uint8 g=(rand()%0xFF); Uint8 b=(rand()%0xFF); Snake S; int d=-1; SDL_Event e; Uint32 ticks; while(1) { ticks=SDL_GetTicks(); SDL_RenderClear(gRenderer); SDL_SetRenderDrawColor(gRenderer, r, g, b, 0xFF); while(SDL_PollEvent(&e)) { if(e.type==SDL_QUIT) { exit(0); } else if(e.type==SDL_KEYDOWN && e.key.repeat==0) { switch(e.key.keysym.sym) { case SDLK_ESCAPE: SDL_SetRenderDrawColor(gRenderer, 0x00, 0x00, 0x00, 0xFF); return; case SDLK_UP: d=UP; break; case SDLK_DOWN: d=DOWN; break; case SDLK_RIGHT: d=RIGHT; break; case SDLK_LEFT: d=LEFT; break; } if(diff(S.getfdir(), d)!=2 && d!=S.getfdir()) { S.createnode(d); } } } S.movesnake(); S.render(); if(S.getcoll()) { SDL_Delay(TIMEOUT_LONG); SDL_RenderClear(gRenderer); SDL_SetRenderDrawColor(gRenderer, 0x00, 0x00, 0x00, 0xFF); wait(); return; } SDL_RenderPresent(gRenderer); while(SDL_GetTicks()-ticks<16) { SDL_Delay(1); } } }