#include<stdlib.h> #include<SDL/SDL.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; Uint32 start; bool b[4]={0,0,0,0}; SDL_Rect rect; rect.x=145; rect.y=145; rect.w=10; rect.h=10; Uint32 color=SDL_MapRGB(screen->format,0,0,0); Uint32 color2=SDL_MapRGB(screen->format,0xff,0xff,0xff); while(running) { start = SDL_GetTicks(); SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: running=false; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_UP: b[0]=1; break; case SDLK_LEFT: b[1]=1; break; case SDLK_DOWN: b[2]=1; break; case SDLK_RIGHT: b[3]=1; break; } break; case SDL_KEYUP: switch(event.key.keysym.sym) { case SDLK_UP: b[0]=0; break; case SDLK_LEFT: b[1]=0; break; case SDLK_DOWN: b[2]=0; break; case SDLK_RIGHT: b[3]=0; break; } break; } } //logic if(b[0]) rect.y-=10; if(b[1]) rect.x-=10; if(b[2]) rect.y+=10; if(b[3]) rect.x+=10; if( rect.y<0) rect.y=0; if(rect.y>290) rect.y=290; if(rect.x<0) rect.x=0; if(rect.x>290) rect.x=290; //render SDL_FillRect(screen,&screen->clip_rect,color); SDL_FillRect(screen,&rect,color2); SDL_Flip(screen); SDL_Delay(50); } SDL_Quit(); return 0; }
編譯指令 : g++ XXX.c -o LLL -lSDL
沒有留言:
張貼留言