Как сохранить персонажа, занимающего определенное место в curses?

Я начинаю пробовать делать простые консольные игры на C++ с проклятиями, и мой первый проект — это просто большая комната, в которой можно ходить. персонаж идет дальше, поэтому, когда он идет на следующую клетку, он может восстановить все, что там было. Проблема в том, что я не знаю, как сохранить символ в определенной позиции в переменной, и, к моему удивлению, я не могу найти исчерпывающую документацию по проклятиям. Я ищу такую ​​​​функцию:

int storage = mvsavechar(1,1);

Существует ли такая функция?


person Maulrus    schedule 05.11.2010    source источник


Ответы (3)


Вы ищете mvinch():

int storage = mvinch(1, 1) & A_CHARTEXT;
person Frédéric Hamidi    schedule 05.11.2010
comment
Спасибо, похоже именно то, что мне нужно! - person Maulrus; 05.11.2010

Вам нужно будет хранить данные для комнаты в какой-то структуре данных в вашей программе. Curses — это библиотека вывода.

person Paul Sonier    schedule 05.11.2010
comment
Я понимаю это, но я хочу попробовать сделать это прямо сейчас: распечатывать вывод и переключать символы по мере перемещения игрока. Когда это станет достаточно сложным, чтобы мне нужно было хранить состояние всей комнаты, я начну это делать. - person Maulrus; 05.11.2010

Я бы сохранил состояние экрана в массиве символов 80x24 (или что-то еще). Но, вероятно, вы бы выбрали размер массива, чтобы он соответствовал размерам вашей «большой комнаты». Если бы комната была очень большой, вы могли бы сохранить эквивалент разреженного массива, используя (например) связанный список координат и содержимого.

Curses, вероятно, не имеет той функции, которую вы хотите, потому что ранние терминалы, вероятно, не имели возможности запрашивать содержимое экрана.

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

person RedGrittyBrick    schedule 05.11.2010