【问题标题】:object automatically movement in sdl对象在 sdl 中自动移动
【发布时间】:2019-05-23 06:18:41
【问题描述】:

如何在 sdl 中通过按键盘上的一个键来移动对象,然后对象会自动移动? 例如,我需要从游戏中的坦克(alter tank)中移动子弹,所以我按下一个键,子弹应该会自动移动。

【问题讨论】:

    标签: c sdl


    【解决方案1】:

    只需使用 SDL 事件:https://www.libsdl.org/release/SDL-1.2.15/docs/html/guideinputkeyboard.html

    等待所需的键盘事件并调用移动子弹的函数。

    此示例来自文档,稍作改编。

    SDL_Event event;
    
    
    /* Poll for events. SDL_PollEvent() returns 0 when there are no  */
    /* more events on the event queue, our while loop will exit when */
    /* that occurs.                                                  */
    while( SDL_PollEvent( &event ) ){
        /* We are only worried about SDL_KEYDOWN and SDL_KEYUP events */
        switch( event.type ){
        case SDL_KEYDOWN:
            printf( "Key press detected\n" );
            break;
    
        case SDL_KEYUP:
            printf( "Key release detected\n" );
            move_bullet(); // create your handler here
            break;
    
        default:
            break;
        }
    }
    

    【讨论】:

      【解决方案2】:

      一般来说,如果你想做这样的事情,你会做的是使用game loop。概括地说,您定义的函数检查需要更新的内容(玩家、敌人、子弹、物品等),然后更新每一项。

      在这种情况下,例如,您需要一个项目符号数组。你每帧动画。当你按下一个按钮时,你会在数组中添加一个新的项目符号。一旦该子弹进入阵列,它将“自行移动”。如果这有意义的话。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        • 2017-06-06
        • 2016-06-19
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        • 1970-01-01
        相关资源
        最近更新 更多