Как ограничить частоту кадров в программе curses? - PullRequest
2 голосов
/ 13 мая 2011

Я пытался сделать игру, используя ncurses. Тем не менее, я озадачен тем, как сделать синхронизацию частью моего основного цикла. Может ли кто-нибудь добавить некоторое понимание того, как я могу добавить код с частотой кадров в мой основной цикл, сохраняя при этом мобильность и не снижая скорость. Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 13 мая 2011

Я считаю, что нормальным способом решения этого типа проблем является передача продолжительности с момента последнего цикла (часто называемого дельта) в качестве параметра системы. Это позволяет вам обновлять прогресс сущностей в игре, основываясь на количестве прошедшего реального времени. Например:

new_position = old_position + delta*speed

Это позволяет сущностям в вашей игре перемещаться с постоянной скоростью, не зависящей от частоты кадров вашей программы.

1 голос
/ 13 мая 2011

Предполагая, что у вас есть функциональность для обновления вашего игрового состояния через небольшой промежуток времени, затем вы должны иметь возможность опросить пользователя для ввода.Если вы не укажете иначе, ncurses будет блокироваться при запросе ввода.Чтобы предотвратить это, посмотрите функции инициализации здесь .В частности, функция halfdelay () может быть вам полезна (она реализует своего рода частоту кадров).

Просто не забудьте проверить ERR для возвращаемого значения getch () при использовании этого режима.

...