Перерисовка экрана и стирание того, что уже было - PullRequest
1 голос
/ 25 августа 2011

Мне нужна помощь - я пытаюсь создать roguelike, используя C ++, и на данный момент у меня очень простой маленький экран с void (), который генерирует карту, используя «#» для стен и""для полов.Он может нарисовать игрока, сравнивая некоторые целые числа, которые отображают значения X и Y игрока.У меня даже есть небольшой HUD, который будет отображать статистику игрока.

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

Я хочу, чтобы игрок перемещался по этой большой пустой комнате, которую я имею, используя цифровую клавиатуру - это работает.С помощью переключателя я настраиваю значение проигрывателя X и Y, а затем снова перерисовываю экран.

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

Так что я делаю не так?Есть ли команда, о которой я не знаю, чтобы очистить экран?
Или я делаю это неправильно с самого начала - например, вы должны нажать «enter», чтобы ввести свою команду, чего-то, чего нет в другихрогалик.Я начинающий программист, так что любая помощь приветствуется!

Спасибо!

Редактировать: Хорошо, спасибо, ребята, сейчас я использую PDCurses и тралюдокументы, чтобы понять, как использовать вещь!Еще раз большое спасибо!Кто-нибудь, пожалуйста, дайте парню, который предложил это большой галочкой!: D

Ответы [ 3 ]

4 голосов
/ 25 августа 2011

Какой метод вы используете для рисования экрана, просто обычный iostream?Для такого рода работы обычно рекомендуется библиотека с именем curses .Это позволит вам рисовать текст в любом месте экрана без прокрутки или перерисовки всего экрана.

0 голосов
/ 25 августа 2011

Вы можете использовать escape-последовательность ANSI: printf ("\ 33 [2]").

0 голосов
/ 25 августа 2011

Я не знаю ни одного надежного способа сделать это с помощью переносимости, возможно, попробуйте поискать какую-нибудь консольно-ориентированную библиотеку ... В любом случае, под Windows вы все еще можете использовать system ("cls");

...