我正在尝试在python中编写一个控制台(如终端,而不是游戏控制台)pong游戏,我无法确定如何最好地(重新)绘制游戏。
我在考虑将二维数组作为一种位图,编辑数组以反映球/桨的新位置,然后将每一行投射到一个字符串并打印它。但是,这意味着旧的“框架”将保留,如果游戏的尺寸小于控制台窗口,旧框架仍然可见。
有没有办法从控制台删除字符? '\ b'我听说不可靠。
或者是否有更容易的替代路线输出到此类应用的控制台?
答案 0 :(得分:6)
看起来Python有一个curses端口/库:
答案 1 :(得分:4)
试试urwid。与urwid捆绑在一起的一个示例是a simulator for animated bar graphs。条形图可以很好地清除屏幕,而不会留下旧“框架”的伪影。
答案 2 :(得分:3)
实际上有两个库解决了这个问题,旧的curses和更新的S-Lang。 Curses倾向于制作有缺陷的线条艺术,特别是在Windows和unicode控制台上(它的unicode支持很糟糕)。 S-Lang的screen management functions更好。
虽然我没有在Python中使用它们,并且似乎支持curses更好,但在C中我至少因为这些问题而将代码转换为S-Lang,而且因为内心深处我从未真正喜欢过curses API。
答案 3 :(得分:1)
你可以使用诅咒。
它有Windows Port和Unix Port,还有很多documentation。 您还可以使用一些helper libs。
答案 4 :(得分:0)
我会调查使用curses模块。它会处理很多细节,让你专注于更高层次的东西。
答案 5 :(得分:0)
我最近一直在开发一个面临类似问题的ASCII动画包(https://github.com/peterbrittain/asciimatics)。虽然它没有你编写游戏所需的一切,但它应该可以提供你想要的大部分内容。
特别是Sprite类将帮助您处理重绘问题。有大量的样本可以帮助您掌握各种使用方法和包装中的其他效果。这里有一个小小的演示,是为了向我最喜欢的游戏之一致敬...