Как создать статический обрамленный интерфейс ASCII в Python?
когда я использую less
команда в моем терминале Mac мне показан 23-строчный фрагмент указанного файла. Если я перемещаю файл вниз, а затем прокручиваю вверх в окне терминала, я не вижу содержимого файла перед текущим срезом. Вместо этого я вижу команды, которые я набрал перед использованием less
.
Я хотел бы использовать этот или подобный эффект для создания игрового интерфейса ASCII, который показывает только текущий экран, без истории. Я бы нарисовал свои рамки на экране и изменил только текст или варианты в этих рамках. Это очень распространено в старых системах, которые работали в основном или полностью в среде командной строки.
есть ли модуль Python, который предлагает это? Это эффект, который я могу или должен реализовать себя?
вот некоторые примеры элементов экрана, которые могут извлечь выгоду из этого эффекта.
+-------------------------------------------------------------------+
| |
| Dialog dialog dialog dialog dialog dialog dialog dialog dialog |
| dialog dialog dialog dialog dialog dialog dialog dialog dialog |
| dialog dialog dialog dialog dialog dialog dialog dialog dialog |
| dialog dialog dialog dialog dialog dialog dialog dialog dialog |
| dialog dialog dialog dialog. |
| |
| |
| |
+--------------------+---------------+------------------------------+
| Attack | South | HP/Max MP/Max |
| > Cast Magic | - | Tom: 120/120 60/91 |
| Use Item | New | > Dick: 27/133 47/47 |
| Tactics | Schwartzton | Harry: 87/104 16/113 |
+--------------------+---------------+------------------------------+
4 ответов
Я бы предложил заглянуть в curses
модуль. Это интерфейс к ncurses
библиотека, которая используется именно для этой цели (я считаю, что в ней написано много терминальных приложений). The документация вполне прилично, и есть несколько хороших уроки это также должно установить Вас в правильном направлении.
(либо это, либо либеральное использование \r
.) Я настоятельно рекомендую curses
модуль, так как он должен обеспечивают большую гибкость для того, что вы хотите сделать.
EDIT: если вы заинтересованы в создании кросс-платформенного приложения, имейте в виду, что curses
модуль доступен только в системах *nix. Согласно документации:
никто не сделал порт Windows модуля curses.
этот учебник рекомендует библиотека для использования в Windows, хотя если даты на странице Скачать какие-либо указания, он не обновлялся в течение достаточного количества времени. Вы могли бы заглянуть в модуль, который выглядит значительно более поздние.
то, о чем вы говорите, это curses
. Это модуль Python, который взаимодействует с ncurses. Лучший учебник, который я нашел для использования curses
Это один:http://www.dev-explorer.com/articles/python-with-curses
некоторые популярные программы, которые используют проклятия (хотя и с другого языка) являются aptitude и nano.
Я тоже боролся с этой проблемой. Я хотел простое кросс-платформенное решение, поэтому я расширил asciimatics представлять виджеты для создания UIS на основе формы, как это. Например:
полученный код должен быть достаточно кратким и работать на любой современной ОС (включая Windows, Linux и OSX) без установки дополнительных собственных библиотек. Как вы можете видеть из список контактов образец стандартные виджеты легко выложить и должны обеспечить большинство ваших потребностей.
Если вы хотите сделать игру ascii, asciimatics, вероятно, не будет работать, так как это в основном для таких вещей, как формы. Использование проклятий-это определенно путь. Хотя нет официального порта проклятий для windows, есть хороший неофициальный порт в https://www.lfd.uci.edu/%7Egohlke/pythonlibs/#curses, поэтому обязательно проверьте это.