【问题标题】:How best to draw in the console? [closed]如何最好地在控制台中绘制? [关闭]
【发布时间】:2008-09-20 02:45:45
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这不能回答你的问题,但为什么不直接使用PyGame? PyGame 非常适合创建基于绘制 2d 精灵的游戏。
  • 这个previous StackOverflow question应该会给你一些更有用的信息。

标签: python console stdout


【解决方案1】:

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

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

【讨论】:

  • 别忘了指明这在 Windows 下不起作用。
  • 是什么让你这么说? python 模块页面指出“虽然 curses 在 Unix 环境中使用最广泛,但版本可用于 DOS、OS/2 以及可能的其他系统”。
【解决方案2】:

试试urwid。与 urwid 捆绑在一起的示例之一是 a simulator for animated bar graphs。条形图可以很好地清除屏幕,不会留下旧“框架”的伪影。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        你可以使用诅咒。

        它有一个Windows PortUnix Port,还有很多documentation。 你也可以使用一些helper libs

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2015-11-29
            • 1970-01-01
            • 2010-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-09
            • 1970-01-01
            相关资源
            最近更新 更多