@famousman204

Как реализовать перемещение в терминале?

Задачка такая: хочу сделать змейку на си. Понял что можно сделать перемещение курсора(в терминале) через escape-последовательности. Но проблема в том, что я не понимаю как сделать перемещение курсора на прямую. типа я нажимаю стрелочку вверх и курсор поехал вверх, вправо - поехал вправо и т.д. Каким образом это можно сделать?
И доп вопрос, как узнать размер терминала через escape-последовательность?
ЗЫ ncurses.h не предлагать =)
  • Вопрос задан
  • 594 просмотра
Решения вопроса 1
@DollaR84
Не вспомню всех деталей реализации класса по работе с консолью, но могу точно указать направления для поисков следующее:
  • Функция для получения handle консоли: GetStdHandle;
  • создавался буфер char'ов размером с игровое поле заданного размера (100x80). Затем функцией SetConsoleScreenBufferSize устанавливался буфер консоли размером с нашим буфером;
  • Для заполнения консоли по ее хендлу из буфера используется функция WriteConsoleOutput

Обновление буфера консоли необходимо проводить по таймеру, но как он был там реализован уже не припомню. То есть по таймеру необходимо перерисовывать всю консоль.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы