2010-11-10 23 views
2

我目前正在爲學習目的/樂趣編寫一個roguelike遊戲。我正在寫控制檯,我遇到了地圖更新緩慢的問題。我做了大量的在線搜索,並遇到了一個可能的解決方案,但它是用C++編寫的(我相信)。如何創建包含前景顏色等屬性的Cha信息數組?

解決方案是使用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(); 
    } 

SOLUTION

我結束了使用Malison這是在C#中做控制檯風格的界面庫。效果很好,現在我不必創建自己的控制檯。

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

+0

如果這個方法被破壞,可能會用一點StringBuilder操作。 – spender 2010-11-10 00:52:15

回答

1

您可以輸出ANSI轉義序列,或使用Control.ForegroundColor和Console.BackgroundColor性能寫你的角色之前設置該屬性。

如果您需要在單個調用中進行寫操作,我會建議使用ANSI轉義序列。

+0

你能否爲我提供更改字符顏色的語法?我在看MSDN,我看到一個轉義序列的列表,但沒有爲格式化字符一個不同的顏色。 – James 2010-11-10 01:19:35

+0

開始的好地方:http://en.wikipedia.org/wiki/ANSI_escape_code – Boo 2010-11-11 17:29:14

+0

ESC [1; 33; 44mHELLO – Boo 2010-11-11 17:31:22

1

此代碼很好地工作:http://www.daniweb.com/code/snippet216395.html
我相信你可以修改它以適應你的需要。

+0

我回顧了鏈接,但不幸的是這些方法不能解決我的問題。如果可能,我只想調用console.write方法1次。 – James 2010-11-10 02:45:04

+0

您可以調用一次,但只需發送正確的值。使用'StringBuilder'構建一個包含所有顏色標記和文本的字符串,並將其一次發送到'Console.Write()'。該鏈接僅僅是如何爲每個角色輸出不同顏色的控制檯的例子。 – BeemerGuy 2010-11-10 02:47:54

+0

我必須缺少一些東西,因爲我沒有看到如何輸出不同顏色的每個字符的示例,而無需多次調用Console.Write。 – James 2010-11-10 17:08:32

相關問題