如何最好地在控制台中绘制?
时间: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附带的示例之一是动画条形图的模拟器。条形图可以很好地清除屏幕,而不会留下旧的"框架"的假象。