如何在控制台中进行最佳绘图?

10

我正在尝试用Python编写一个控制台(即终端,而不是游戏机)上的乒乓球游戏,并且我在想如何最好地重新绘制游戏。

我考虑使用2D数组作为位图,编辑数组以反映球/挡板的新位置,然后将每一行转换为字符串并打印出来。但是这意味着旧的“帧”将保留下来,如果游戏的尺寸小于控制台窗口,则旧的帧仍将可见。

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

还是有更简单的替代路线来输出此类应用程序到控制台吗?


这并没有回答你的问题,但为什么不直接使用PyGame呢?PyGame使得创建基于2D精灵的游戏非常容易。 - Corey
这个之前的StackOverflow问题应该会给你提供更多有用的信息。 - Ash
6个回答

7

6

2
不要忘记指明这在Windows下不起作用。 - sorin
1
你为什么这么说?Python模块页面指出:“虽然curses在Unix环境中被广泛使用,但也有适用于DOS、OS/2和其他可能的系统的版本。” - matt b

4

我最近开发了一个ASCII动画包(https://github.com/peterbrittain/asciimatics),它面临着类似的问题。虽然它没有你编写游戏所需的一切,但它应该会给你想要的大部分内容。

特别是Sprite类将帮助您处理重绘问题。有很多示例可以帮助您掌握使用它们和包中其他效果的各种方法。这里是一个小演示,我为我最喜欢的旧游戏之一致以敬意...

Pac man


4
实际上有两个库可以解决这个问题,一个是较老的curses,另一个是较新的S-Lang。Curses在Windows和unicode控制台上容易出现错误的行艺术(它的unicode支持很差)。S-Lang的屏幕管理功能更好。

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


1

0
我建议您尝试使用curses模块。它可以处理许多细节,让您专注于更高层次的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接