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

时间:2010-11-10 00:50:04

标签: c# console char console-application

我目前正在为学习目的/乐趣编写一个roguelike游戏。我在控制台中写它,我遇到了地图延迟更新的问题。我已经完成了大量的在线搜索并遇到了一个可能的解决方案,但它是用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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

此代码效果很好:http://www.daniweb.com/code/snippet216395.html
我相信你可以修改它以适应你的需要。