У меня проблемы с моей программой termbox, отображающей экран и обрабатывающей события клавиатуры. Недавно я закончил класс C и C ++ в моем университете. Я хотел продемонстрировать свои знания, создав основную игру Snake. Первые шаги, я хотел запустить простой рендер l oop и сделать так, чтобы текстовый блок просто двигался влево и выходил из игры по достижении 0-й x-координаты. Проблема возникает при переходе к следующему кадру рендеринга, поскольку игра выполняется однопоточной, следующий фрейм не будет отображаться, пока не будет принято новое событие клавиатуры. Обычно я ожидаю, что игра продолжит рендеринг независимо от событий, новых событий, влияющих на новый кадр.
Что касается потенциальных решений, я подумал об использовании нескольких потоков для запуска игры l oop и обработки событий клавиатуры. , Но, я думаю, это было бы излишним для такой маленькой проблемы, вероятно, есть более простые альтернативы, чем управление несколькими потоками для простой игры в змейку.
Что касается кода, это так просто, как:
while (1)
{
tb_clear();
draw(gameState);
tb_present();
struct tb_event event;
tb_poll_event(&event);
if (event.ch == 'q')
break;
}