对象在sdl中自动移动

时间:2018-12-23 21:56:03

标签: c sdl

如何用键盘上的一个键在sdl中移动对象,然后该对象自动移动? 例如,我需要从游戏中的一辆坦克(改变坦克)中移动一颗子弹,所以我按下一个键,那么子弹应该会自动移动。

2 个答案:

答案 0 :(得分:-1)

通常,如果您想做这样的事情,您要做的就是使用game loop。粗略地讲,您定义了一些功能来检查需要更新哪些内容(玩家,敌人,子弹,物品等),然后更新每个内容。

在这种情况下,例如,您需要一排子弹。您为每一帧动画。当您按下按钮时,您将新的项目符号添加到阵列。一旦该子弹进入阵列,它将“自行移动”。如果这样的话。

答案 1 :(得分:-2)

只需使用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;
    }
}