c# - 如何创建包含前景色等属性的 Cha 信息数组?

标签 c# console char console-application

我目前正在编写一款 roguelike 游戏,用于学习目的/娱乐。我正在控制台中编写它,但我遇到了 map 更新滞后的问题。我进行了大量的在线搜索并找到了一个可能的解决方案,但它是用 C++ 编写的(我相信)。

解决方案是使用 WriteConsoleOutput,但我认为这在 C# 中不可用。进一步搜索导致了一个可能的 C# 解决方案。将数组传递给 Console.Write 方法。但是,此方法的问题是我无法传递(据我目前所知)角色的属性,例如前景色。

我拼凑了一些东西来测试将数组传递给 Console.Write。下面的代码将显示数字网格。我希望能够更改网格中每个值的前景色。所以 1 是蓝色的,2 是红色的,等等...

static void Main(string[] args)
    {
        Console.SetWindowSize(80, 35);
        Console.BufferWidth = 80;
        Console.BufferHeight = 35;
        string temp = "";

        int[,] aryMap = new int[,] {
           {0,0,0,0,0},
           {1,1,1,1,1},
           {2,2,2,2,2},
           {3,3,3,3,3},
           {4,4,4,4,4},
           {5,5,5,5,5}
        };         

        for (int h = 0; h < 5; h++)
        {
            temp += "\n";
            for (int w = 0; w < 5; w++)
            {
                temp += aryMap[h, w];
            }
        }
        Console.SetCursorPosition(0, 0);
        Console.Write(temp);
        string test = Console.ReadLine();
   }

解决方案

我最终使用了 Malison,它是一个用于在 C# 中执行控制台样式界面的库。效果很好,现在我不必创建自己的控制台。

http://bitbucket.org/munificent/malison/wiki/Home

最佳答案

您可以输出 ANSI 转义序列,或使用 Control.ForegroundColor 和 Console.BackgroundColor 属性在写入字符之前设置属性。

如果您需要在一次调用中进行写入,我会建议使用 ANSI 转义序列。

关于c# - 如何创建包含前景色等属性的 Cha 信息数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4140275/

相关文章:

java - 控制台输出 Selenium Webdriver

c++ - Console+Windows的窗体

c - 函数错误“字符之前需要表达式?”

c# - 创建具有多个属性的对象集

javascript - 获取iframe当前url

c# - 在 C# 中使用命名空间

c - 从 CSV 中的行读取值时丢失字符串中的最后一个字符

c - 为什么这个 C 代码给我一个段错误?

c# - 使用带有标志枚举的 ProtoBuf-Net 时出错

c# - .NET 服务器如何将文件处理结果推送到客户端 jQuery?