如何最好地在控制台中绘制?

时间:2020-03-06 14:28:30  来源:igfitidea点击:

我试图用python编写一个控制台(例如在终端上,而不是在游戏机上)pong游戏,但在确定如何最好地(重新)绘制游戏时遇到了麻烦。

我当时正在考虑将2d数组作为一种位图,对数组进行编辑以反映球/球拍的新位置,然后将每一行转换为字符串并进行打印。但是,这意味着将保留旧的"框架",并且如果游戏的尺寸小于控制台窗口,则旧框架仍然可见。

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

还是有一种更简单的替代方法可以输出到此类应用程序的控制台?

解决方案

看来有一个针对Python的curses端口/库:

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

我将使用curses模块进行调查。它会处理很多细节,并让我们专注于更高层次的内容。

前面的StackOverflow问题应该为我们提供更多有用的信息。

我们可以使用诅咒。

它具有Windows端口和Unix端口,以及大量的文档。
我们还可以使用一些帮助程序库。

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

虽然我没有在Python中使用过它们,而且似乎更好地支持curses,但至少在C语言中,由于这些问题,我将代码切换到S-Lang,而且从深层次上讲,我从未真正喜欢curses API 。

尝试urwid。 urwid附带的示例之一是动画条形图的模拟器。条形图可以很好地清除屏幕,而不会留下旧的"框架"的假象。