⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 15-11.c

📁 《Linux应用开发技术详解》附书光盘中的例程。
💻 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 + -