Могу ли я отображать обратную связь в реальном времени в терминальной игре?

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

Я помню, как использовал kbhit() много лет назад, но я также помню, что процессор работал на 100% в течение жизни программы. Я хотел бы избежать этого полностью. И я работаю в Linux сейчас.

Допустим, вы находитесь в подземелье текстовой приключенческой игры. Подземелье опечатано. В комнате мало воздуха. Чем дольше вы остаетесь там, тем ниже уровень кислорода. Я хочу сообщать об уровне кислорода в помещении в режиме реального времени, одновременно принимая команды от пользователя.

Есть ли способ сделать это?

РЕДАКТИРОВАТЬ: Единственная идея, которая у меня была, заключалась в том, чтобы использовать два терминальных окна. Команды принимаются в одном терминале, результаты этих команд могут быть записаны в текстовый файл. На другом терминале будет запущена программа, которая работает в режиме реального времени и периодически проверяет один и тот же текстовый файл на наличие обновлений по ставкам и т. д. В идеале я хотел бы сделать это в одном окне.


person Korgan Rivera    schedule 07.06.2014    source источник
comment
Есть много способов сделать то, что вы пытаетесь; Вы просите рекомендации библиотеки?   -  person Carl Norum    schedule 08.06.2014
comment
Попробуйте цикл, который устанавливает таймер, а затем ожидает истечения определенного времени или клавиша нажата.   -  person Jongware    schedule 08.06.2014
comment
@Jongware Я надеялся, что кто-нибудь предложит более эффективный метод, чем опрос.   -  person Korgan Rivera    schedule 08.06.2014
comment
Просто чтобы быть уверенным: вы смотрели на это?   -  person Natan Streppel    schedule 08.06.2014


Ответы (1)


Конечно, есть способ сделать это. Взгляните на ncurses. Я думаю, что это правильный путь.

person Andreas    schedule 07.06.2014