Как лучше рисовать в консоли?

Я пытаюсь написать консольную (как в терминале, а не игровую консоль) игру в понг на python, и мне сложно понять, как лучше всего (повторно) нарисовать игру.

Я думал о том, чтобы иметь 2d-массив как своего рода растровое изображение, редактировать массив, чтобы отразить новые позиции мяча / лопастей, а затем преобразовывать каждую строку в строку и печатать ее. Однако это означает, что старые «фреймы» останутся, и если размеры игры меньше, чем окно консоли, старые фреймы все равно будут видны.

Есть ли способ удалить символы из консоли? '\ b' Я слышал, что это ненадежно.

Или есть более простой альтернативный способ вывода на консоль для такого рода приложений?

Это не отвечает на ваш вопрос, но почему бы просто не использовать PyGame? PyGame позволяет создавать игры на основе двухмерных спрайтов.

Corey 20.09.2008 06:51

Этот предыдущий вопрос StackOverflow должен дать вам дополнительную полезную информацию.

Ash 20.09.2008 06:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
9
2
15 546
6

Ответы 6

Похоже, есть порт / библиотека проклятия для Python:

https://docs.python.org/library/curses.html

Не забудьте указать, что это не работает под Windows.

sorin 25.08.2009 20:58

что заставляет тебя говорить это? На странице модуля python указано: «Хотя curses наиболее широко используется в среде Unix, доступны версии для DOS, OS / 2 и, возможно, других систем».

matt b 25.08.2009 22:32

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

Вы можете использовать проклятия.

У него есть Порт Windows и Порт Unix, и много документация. Вы также можете использовать вспомогательные библиотеки.

На самом деле существуют библиотеки два, которые решают эту проблему, более старый проклятия и более новый Сленг. Curses имеет тенденцию создавать ошибочные штриховые рисунки, особенно в Windows и на консолях с юникодом (поддержка юникода - дерьмо). S-Lang's функции управления экраном лучше.

Хотя я не использовал ни один из них в Python, и кажется, что curses лучше поддерживается, по крайней мере, в C я переключаю свой код на S-Lang из-за этих проблем, и потому что в глубине души мне никогда не нравился curses API. .

Попробуйте urwid. Один из примеров, связанных с urwid, - симулятор анимированных гистограмм. Гистограммы хорошо очищают экран, не оставляя артефактов старой «рамки».

Недавно я разработал пакет анимации ASCII (https://github.com/peterbrittain/asciimatics), который столкнулся с аналогичными проблемами. Хотя в нем нет всего, что вам нужно для написания игры, он должен дать вам большую часть того, что вы хотите.

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

Pac man

Другие вопросы по теме