【问题标题】:Easiest way to colour text in C/C++ DOS?在 C/C++ DOS 中为文本着色的最简单方法?
【发布时间】:2012-01-20 18:53:18
【问题描述】:

我在 DOS 环境中使用 turbo C++ 3.0 制作了一个基本的贪吃蛇游戏,我自己还是个菜鸟。我一直在寻找一种在 DOS 窗口中制作不同颜色文本的非常简单且可能是基本的方法。我不是在寻找为文本着色的复杂方法。我正在编写的大多数程序都非常简单和基本,而且比程序本身更大的用于着色文本的复杂代码只会令人困惑和无效。

我的问题是,在 DOS 控制台中用 C 和 C++ 两种语言为文本着色的最简单方法是什么?

【问题讨论】:

  • 1.你确定你用的是DOS?你确定不是windows? 2. 你不能使用现代编译器吗?这可能会让您更有可能获得帮助。
  • @Cody gray,怎么浪费时间?我有没有在帖子的任何地方说过我正在学习 turbo C++?它编译吗?是的。我在学校使用它吗?是的。与其他编译器相比,它是否给了我实际使用的帮助?是的。请不要发布与问题无关的内容。

标签: c++ c dos turbo-c


【解决方案1】:

如果你enable ansi.sys,你可以使用ansi转义序列。

我假设您在 Windows 上使用 DOS,因为您指的是“DOS 窗口”,因此您需要先启用 ansi.sys 才能使用它。

Turbo C++ 3.0 不附带 Windows 头文件或库,因此您将无法使用控制台 API。

【讨论】:

    【解决方案2】:

    您可以将 Turbo C/C++ 的(即非标准)函数 textcolor()textbackground()textattr()cprintf()cputs()putch() 一起使用。在 IDE 的帮助中查看它们的描述,它们都在 conio.h

    【讨论】:

      【解决方案3】:

      您是否真的在使用 DOS(例如 Win 9x 上的 DOSBox 或 DOS)?

      如果是这样,ANSI.SYS 使用起来非常简单。您只需在文本前面加上设置颜色的控制代码。

      如果不是,(即您实际上是在 Windows 上使用命令提示符)然后使用 SetConsoleTextAttribute 设置前景色和背景色。

      我刚刚记得,32 位版本的 Windows 仍然支持 command.com,这可以加载 ANSI.SYS

      【讨论】:

        【解决方案4】:

        如果直接写入视频文本缓冲区,屏幕上的每个字符单元对应一对字节,一个是要显示的字符,另一个是它的颜色。见http://en.wikipedia.org/wiki/VGA_compatible_text_mode

        起初,这似乎有点令人生畏,但实际上非常简单。只是有点陌生​​。使用 ANSI 转义序列需要生成大量输出,而文本缓冲区是每个字符一个 16 位字。

        这不再重要,但在老式硬件上,必须写入文本缓冲区以获得响应更改。通过 ANSI 接口显然花费了大量时间。

        【讨论】:

          猜你喜欢
          • 2011-04-15
          • 1970-01-01
          • 2011-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-26
          • 1970-01-01
          • 2022-01-15
          相关资源
          最近更新 更多