9

我正在尝试用python编写一个控制台(如终端,而不是游戏控制台)乒乓球游戏,但我无法确定如何最好地(重新)绘制游戏。

我正在考虑将二维数组作为一种位图,编辑数组以反映球/桨的新位置,然后将每一行转换为字符串并打印。然而,这意味着旧的“框架”将保留,如果游戏的尺寸小于控制台窗口,旧的框架仍然可见。

有没有办法从控制台中删除字符?'\b' 我听说是不可靠的。

或者是否有更简单的替代方法可以将此类应用程序输出到控制台?

4

6 回答 6

6

看起来 Python 有一个curses端口/库:

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

于 2008-09-20T02:47:18.983 回答
6

试试urwid。与 urwid 捆绑在一起的示例之一是动画条形图模拟器。条形图可以很好地清除屏幕,不会留下旧“框架”的伪影。

于 2009-07-24T07:16:41.540 回答
4

实际上有两个库可以解决这个问题,旧的curses和新的S-Lang。Curses 倾向于制作有缺陷的线条艺术,尤其是在 Windows 和 unicode 控制台上(它的 unicode 支持很糟糕)。S-Lang的屏幕管理功能更好。

虽然我没有在 Python 中使用它们中的任何一个,而且似乎更支持 curses,但由于这些问题,至少在 C 中我将我的代码切换到 S-Lang,并且因为在内心深处我从来没有真正喜欢过 curses API .

于 2008-11-13T18:30:52.983 回答
3

我最近一直在开发一个面临类似问题的 ASCII 动画包( https://github.com/peterbrittain/asciimatics )。虽然它没有您编写游戏所需的一切,但它应该可以满足您的大部分需求。

特别是 Sprite 类将帮助您处理重绘问题。有大量示例可帮助您掌握使用它们的各种方法以及包中的其他效果。这是我整理的一个小演示,以向我过去最喜欢的游戏之一致敬...

吃豆人

于 2015-06-14T21:48:08.103 回答
1

You can use curses.

It has a Windows Port and Unix Port, and plenty of documentation. You can also use some helper libs.

于 2008-09-20T09:15:16.337 回答
0

我会使用curses模块进行调查。它会处理很多细节,让你专注于更高层次的东西。

于 2008-09-20T02:48:12.787 回答