Запись на консоль без задержек - PullRequest
1 голос
/ 08 января 2012

Я пишу игру командной строки, которая должна работать на 4-40 FPS (выберу позже).Но у меня есть проблема.Рисование «изображения», состоящего из 1920 цветных символов, с использованием putchar () занимает 0,2-0,3 секунды, и я вижу, как мое изображение рисуется построчно.Однако, например, в Firefox я могу нарисовать 64000 RGB-пикселей на холсте почти менее чем за одну десятую секунды.

Есть ли способ избежать этой задержки, и это задержка, вызванная консолью, или это действительносколько времени занимает обработка вывода?

Ответы [ 2 ]

7 голосов
/ 08 января 2012

Не используйте putchar.Создайте буфер, полный ваших символов, представляющих состояние экрана, и используйте write, чтобы сразу отправить буфер в стандартный вывод, а затем очистить его.

Например: write(STDOUT_FILENO, buffer, buffer_size); fflush(stdout);

2 голосов
/ 08 января 2012

Вы должны собрать свою выходную строку в памяти и записать ее в один мир, например, используя printf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...