2013-11-26 2 views
1

Я делаю консольную игру под названием инопланетные космические корабли в качестве домашней работы. Он должен выглядеть примерно так: http://img74.imageshack.us/img74/8362/alieninvadersfdcl192720mu1.jpg. До сих пор так хорошо, что мне не разрешено использовать классы или объекты => только функции и массивы. У меня есть один цикл while, который проверяет кнопки, которые я нажимаю на клавиатуру, и в соответствии с кнопкой применяет некоторые функции. Проблема возникает, когда я пытаюсь снимать пропуст, потому что это делается с циклом «за», и когда я стреляю, я не могу двигаться. Может ли кто-нибудь дать мне представление о том, как должна выглядеть модель и как я могу сделать что-то вроде этой работы. Я не думаю, что это нужно, чтобы опубликовать мой код, но если хотите, я опубликую его.C++ параллельные петли

+0

«Мне не разрешено использовать классы или объекты» - вздох! Этот пресловутый подход профессоров: изучите C, а не C++ ... – vines

ответ

1

Я предполагаю, что вы не хотите играть с несколькими потоками. Это не обязательно для простой игры, подобной этой, и добавит немного сложности.

Так общий цикл для monothreaded игры:

state new_state = createInitialState(); 
do 
{ 
    input = readInput(); // non blocking ! 
    new_state = modifyState(input, new_state); 
    updateScreen(new_state); 
} 
while (!exitCondition(input)); 

Ни одна из этих функций должна петля долго.

В вашем случае позиция ракеты должна быть обновлена ​​в modifyState с учетом времени с момента последнего modifyState.

0

Я предполагаю, что вы используете матрицу для хранения всех данных и периодически печатаете содержимое матрицы (так вы создаете консольную игру). Итак, ваш код должен выглядеть примерно так:

render() 
{ 
    update_position(x,y); 
    if(missile_fired) 
     update_missile_position(); 
} 

main() 
{ 
for(;;) 
{ 
    read_input(&x,&y); 
    render(); 
    draw_image(); 
} 
} 
Смежные вопросы