螢幕截圖:
#include<stdio.h> #include<stdlib.h> #include<SDL/SDL.h> #include<time.h> int main(int argc,char** argv) { SDL_Init(SDL_INIT_EVERYTHING); SDL_Surface *screen; screen=SDL_SetVideoMode(300,300,32,SDL_SWSURFACE); bool running=true; int dx=1,dy=1,R=255,G=255,B=255; Uint32 start; SDL_Rect rect; srand(time(NULL)); rect.x=145; rect.y=145; rect.w=20; rect.h=20; Uint32 color=SDL_MapRGB(screen->format,0,0,0); Uint32 color2; while(running) { start = SDL_GetTicks(); SDL_Event event; Uint32 color2=SDL_MapRGB(screen->format,R,G,B); while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: running=false; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_UP: dy=-1; break; case SDLK_LEFT: dx=-1; break; case SDLK_DOWN: dy=1; break; case SDLK_RIGHT: dx=1; break; case SDLK_a: if(dx>=0 && dy>=0) { dx++; dy++; } if(dx>=0 && dy<=0) { dx++; dy--; } if(dx<=0 && dy>=0) { dx--; dy++; } if(dx<=0 && dy<=0) { dx--; dy--; } break; case SDLK_d: if(dx>=0 && dy>=0) { dx--; dy--; } if(dx>=0 && dy<=0) { dx--; dy++; } if(dx<=0 && dy>=0) { dx++; dy--; } if(dx<=0 && dy<=0) { dx++; dy++; } break; } break; } } if(rect.x==0 || rect.x==280 || rect.y==0 || rect.y==280) { R=rand()%256; G=rand()%256; B=rand()%256; } if(R==0 && G==0 && B==0) { R=rand()%256; G=rand()%256; B=rand()%256; } rect.x+=dx; rect.y+=dy; if(rect.x<=0) dx=-dx; if(rect.x>=280) dx=-dx; if(rect.y<=0) dy=-dy; if(rect.y>=280) dy=-dy; if(rect.x<=0) rect.x=0; if(rect.x>=280) rect.x=280; if(rect.y<=0) rect.y=0; if(rect.y>=280) rect.y=280; //render SDL_FillRect(screen,&screen->clip_rect,color); SDL_FillRect(screen,&rect,color2); SDL_Flip(screen); SDL_Delay(10); } SDL_Quit(); return 0; }
沒有留言:
張貼留言