【问题标题】:generate a window for ascii game为 ascii 游戏生成一个窗口
【发布时间】:2010-01-21 22:13:29
【问题描述】:

我正在尝试为作业编写一个 ascii 游戏。该程序必须完全用 c 编写,而不是 c++。 我怎样才能让程序打开一个能够渲染 ascii 艺术的窗口?我想创建一个特定大小的窗口,可以打印多种颜色。一个简单的控制台窗口是不够的。

另外,在相关说明中,任何人都可以向我展示一个可以直接写入缓冲区的函数吗? printf 太慢了,而且对于我想要制作的图形来说似乎不够通用。

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

  • 你在这里定位什么操作系统?
  • 我正在为 windows 编写代码,特别是 windows XP。
  • 你的老师会允许你使用 ncurses 吗? (提示:可能不会)

标签: window ascii buffer


【解决方案1】:

简单的控制台窗口是不够的。

我不同意。控制台窗口非常适合您似乎想要做的任何事情。颜色、完整的 ascii 范围、突出显示...

另外,在相关说明中,任何人都可以向我展示一个可以直接写入缓冲区的函数吗? printf 太慢了,

你需要写多快?如果您自己构建字符串并调用 printf,它实际上只是为您将其复制到缓冲区中。

【讨论】:

  • 我的游戏是声波风格的游戏,你从左到右奔跑,速度是关键。在使用 printfs 进行一些简单测试时,我发现将字符串打印到屏幕上速度很慢,以至于我可以看到屏幕闪烁。
  • 确保将 stdout 设置为使用输出缓冲。它自己执行此操作,但默认情况下,它会在每个 \n 之后刷新缓冲区
  • 屏幕闪烁是由顺序绘制线条引起的 - 您希望禁用缓冲区的自动刷新并在每个屏幕后手动刷新它。
【解决方案2】:

试试ncurses

尽管我认为它目前不适用于 Windows (v5.7)

甚至AAlib

【讨论】:

  • 某处有一个 ncurses 端口实际上适用于 windows。我以前用过。
【解决方案3】:

您希望Windows Console API 中的功能可以完全按照您的要求进行。例如使用SetConsoleDisplayMode 更改控制台大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多