Я пытаюсь написать консольную (как в терминале, а не игровую консоль) игру в понг на python, и мне сложно понять, как лучше всего (повторно) нарисовать игру.
Я думал о том, чтобы иметь 2d-массив как своего рода растровое изображение, редактировать массив, чтобы отразить новые позиции мяча / лопастей, а затем преобразовывать каждую строку в строку и печатать ее. Однако это означает, что старые «фреймы» останутся, и если размеры игры меньше, чем окно консоли, старые фреймы все равно будут видны.
Есть ли способ удалить символы из консоли? '\ b' Я слышал, что это ненадежно.
Или есть более простой альтернативный способ вывода на консоль для такого рода приложений?
Этот предыдущий вопрос StackOverflow должен дать вам дополнительную полезную информацию.






Похоже, есть порт / библиотека проклятия для Python:
https://docs.python.org/library/curses.html
Не забудьте указать, что это не работает под Windows.
что заставляет тебя говорить это? На странице модуля python указано: «Хотя curses наиболее широко используется в среде Unix, доступны версии для DOS, OS / 2 и, возможно, других систем».
Я бы исследовал с помощью модуля проклятия. Он позаботится о многих деталях и позволит вам сосредоточиться на вещах более высокого уровня.
Вы можете использовать проклятия.
У него есть Порт Windows и Порт Unix, и много документация. Вы также можете использовать вспомогательные библиотеки.
На самом деле существуют библиотеки два, которые решают эту проблему, более старый проклятия и более новый Сленг. Curses имеет тенденцию создавать ошибочные штриховые рисунки, особенно в Windows и на консолях с юникодом (поддержка юникода - дерьмо). S-Lang's функции управления экраном лучше.
Хотя я не использовал ни один из них в Python, и кажется, что curses лучше поддерживается, по крайней мере, в C я переключаю свой код на S-Lang из-за этих проблем, и потому что в глубине души мне никогда не нравился curses API. .
Попробуйте urwid. Один из примеров, связанных с urwid, - симулятор анимированных гистограмм. Гистограммы хорошо очищают экран, не оставляя артефактов старой «рамки».
Недавно я разработал пакет анимации ASCII (https://github.com/peterbrittain/asciimatics), который столкнулся с аналогичными проблемами. Хотя в нем нет всего, что вам нужно для написания игры, он должен дать вам большую часть того, что вы хотите.
В частности, класс Sprite поможет вам справиться с проблемами перерисовки. Есть множество примеров, которые помогут вам разобраться в различных способах их использования и других эффектов в пакете. Вот небольшая демонстрация, которую я собрал как дань уважения одной из моих любимых игр прошлых лет ...
Это не отвечает на ваш вопрос, но почему бы просто не использовать PyGame? PyGame позволяет создавать игры на основе двухмерных спрайтов.