движение объекта автоматически в SDL - PullRequest
0 голосов
/ 24 декабря 2018

как я могу переместить объект в sdl нажатием одной клавиши на клавиатуре, после чего объект перемещается автоматически?например, мне нужно переместить пулю из танка в игре (изменить танк), поэтому я нажимаю клавишу, после чего пуля должна двигаться автоматически.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Как правило, если вы хотите сделать что-то подобное, вам нужно использовать игровой цикл .В общих чертах вы определяете функции, которые проверяют, что нужно обновить (игрок, враги, патроны, предметы и т. Д.), А затем обновляете каждый из них.

В этом случае вы хотите, например,массив пуль.Вы анимируете каждый кадр.Когда вы нажимаете кнопку, вы добавляете новую пулю в массив.Как только эта пуля окажется в массиве, она будет «двигаться сама по себе».Если это имеет смысл.

0 голосов
/ 24 декабря 2018

Просто используйте события 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;
    }
}
...