【发布时间】:2019-05-23 06:18:41
【问题描述】:
如何在 sdl 中通过按键盘上的一个键来移动对象,然后对象会自动移动? 例如,我需要从游戏中的坦克(alter tank)中移动子弹,所以我按下一个键,子弹应该会自动移动。
【问题讨论】:
如何在 sdl 中通过按键盘上的一个键来移动对象,然后对象会自动移动? 例如,我需要从游戏中的坦克(alter tank)中移动子弹,所以我按下一个键,子弹应该会自动移动。
【问题讨论】:
只需使用 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;
}
}
【讨论】:
一般来说,如果你想做这样的事情,你会做的是使用game loop。概括地说,您定义的函数检查需要更新的内容(玩家、敌人、子弹、物品等),然后更新每一项。
在这种情况下,例如,您需要一个项目符号数组。你每帧动画。当你按下一个按钮时,你会在数组中添加一个新的项目符号。一旦该子弹进入阵列,它将“自行移动”。如果这有意义的话。
【讨论】: