我在 DOS 环境中使用 turbo C++ 3.0 制作了一个基本的贪吃蛇游戏,我自己也是个菜鸟。我一直在寻找一种在 DOS 窗口中制作不同颜色文本的非常简单且可能是基本的方法。我不是在寻找为文本着色的复杂方法。我正在编写的大多数程序都非常简单和基本,并且用于为大于程序本身的文本着色的复杂代码只会令人困惑和无效。
我的问题是,在 DOS 控制台中用 C 和 C++ 两种语言为文本着色的最简单方法是什么?
如果启用 ansi.sys,则可以使用 ansi 转义序列。
我假设您在 Windows 上使用 DOS,因为您指的是“DOS 窗口”,因此您需要先启用 ansi.sys 才能使用它。
Turbo C++ 3.0 不附带 Windows 头文件或库,因此您将无法使用控制台 API。
您可以使用 Turbo C/C++ 的唯一(即非标准)函数textcolor()
,textbackground()
以及textattr()
与cprintf()
,cputs()
和putch()
. 在 IDE 的帮助中查看它们的描述,它们都在conio.h
.
您实际上在使用 DOS(例如 Win 9x 上的 DOSBox 或 DOS)吗?
如果是这样,ANSI.SYS使用起来非常简单。您只需在文本前面加上设置颜色的控制代码。
如果没有,(即您实际上是在 Windows 上使用命令提示符)然后使用SetConsoleTextAttribute设置前景色和背景色。
而且我只记得,32 位版本的 Windows 仍然支持command.com
并且可以加载ANSI.SYS
.
如果直接写入视频文本缓冲区,屏幕上的每个字符单元对应一对字节,一个是要显示的字符,另一个是它的颜色。见http://en.wikipedia.org/wiki/VGA_compatible_text_mode
起初,这似乎有点令人生畏,但实际上非常简单。只是有点陌生。使用 ANSI 转义序列需要生成相当多的输出,而文本缓冲区是每个字符一个 16 位字。
不再重要了,但在老式硬件上,必须写入文本缓冲区以获得响应更改。通过 ANSI 接口显然花费了大量时间。