📄 15-11.c
字号:
int main()
{
GameState game_state;
Sprite_t tank;
SDL_Event event;
Init_SDL();
tank.image=IMG_Load("tank.png");
SDL_SetColorKey(tank.image,SDL_SRCCOLORKEY,SDL_MapRGB(tank.image->format,255,0,255));
tank.image=SDL_DisplayFormat(tank.image);
game_state=GAME_RUNNING;
tank.dir=DIR_RIGHT;
tank.width=32;
tank.height=32;
tank.x=300;
tank.y=200;
tank.ox=tank.x;
tank.oy=tank.y;
tank.moving=0;
tank.speed=3;
tank.timer=0;
while(game_state==GAME_RUNNING){
ClearSprite(screen,&tank);
/* Get Input */
SDL_PollEvent(&event);
switch(event.type){
case SDL_KEYDOWN: /* 检测到按键,开始分析并处理 */
switch(event.key.keysym.sym){
case SDLK_ESCAPE:
game_state=GAME_OVER;
break;
case SDLK_UP:
tank.dir=DIR_UP;
tank.y-=tank.speed;
break;
case SDLK_DOWN:
tank.dir=DIR_DOWN;
tank.y+=tank.speed;
break;
case SDLK_LEFT:
tank.dir=DIR_LEFT;
tank.x-=tank.speed;
break;
case SDLK_RIGHT:
tank.dir=DIR_RIGHT;
tank.x+=tank.speed;
break;
default:
break;
}
case SDL_KEYUP: /* 放开按键时,暂时不作处理 */
break;
default:
break;
}
DrawSprite(screen,&tank);
tank.ox=tank.x;
tank.oy=tank.y;
SDL_UpdateRect(screen,0,0,0,0);
SDL_Delay(TimeLeft()); /* 延迟 */
tank.timer++;
tank.timer%=8;
}
SDL_FreeSurface(tank.image);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -