我正在寻找一种以 Roguelike 方式显示“DOS”输出的方法,即。它看起来就像你有一个充满字符(级别)的 DOS 窗口,当用户按下按钮、点击鼠标等时,这些字符可以改变或移动。
在普通的 DOS 窗口中(比如经典的 c++ 程序或 .bat 的输出)你只能“写更多的文本”,如果有任何变化,你必须重新绘制整个关卡,这很麻烦并导致人工制品(更新的关卡慢慢滚动)。
我知道我可以使用 Qt 或 SDL 并绘制带有字符的 2D 图 block 来克服这个问题,但是对于我想做的事情来说这似乎很复杂,有没有一种简单的方法(比如 C++ 库)可以让我绘制字符“DOS”窗口中的任何位置?
谢谢!
[编辑] 谢谢,我会检查你的所有建议,为所有人 +1!
[编辑]PDCurses 获胜,可以在此处找到有关如何使用它的教程(上面写着 NCurses,但对于一个简单的 Hello world 示例来说它工作得非常好): http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
最佳答案
编写 Rogue 时,它使用了 curses screen control library .
您可以获得它的各种 Windows 实现。一些将 curses 调用转换为普通的 Windows 控制台调用:
其他人制作了一个真正的 GUI 窗口,然后在“伪造的”终端中绘制粗体和下划线等增强功能(就像您使用 Qt 或 SDL 绘制图 block 的想法):
如果您想将自己直接绑定(bind)到 Microsoft 很少使用的控制台 API 函数,您可以这样做。但是,如果怀旧是你在这个时代追求这样一个 UI 的目标,那么学习 curses 会让你跨平台并且让你更好地理解诸如 Rogue 源代码之类的东西。
如果进入实际的 DOS 仿真是您的目标(根据 DOSBox ),还有另一个流行的选择:直接访问屏幕内存。您可以四处张望……在正确的位置写一个 65,然后会出现一个“A”。
然后是ANSI.SYS ,它在过去的许多公告板系统中使用...但同样已过时。
关于c++ - 在 DOS 窗口中的任意位置写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13489542/