2017-03-09 95 views
0

只是一個關於設置player.playerHealth字符串的顏色的快速問題,我不能讓它顯示我想怎麼樣。如果它大約50,我希望它是綠色的,如果它在20以上,則爲黃色,在下面的任何情況下爲紅色。C#試圖設置一個字符串的顏色

我試過多種不同的解決方案,沒有任何工作,所以我把它帶到這裏。

我也是新的代碼,這只是我的班級的一個小遊戲。

在此先感謝!

public static void redKeeperBattle() 
    { 

if (player.playerHealth > 50) { 
       Console.ForegroundColor = ConsoleColor.Green; 
      } else if (player.playerHealth > 20) { 
       Console.ForegroundColor = ConsoleColor.Yellow; 
      } else { 
       Console.ForegroundColor = ConsoleColor.Red; 
      } 

      Console.Clear(); 
      Console.ForegroundColor = ConsoleColor.Red; 
      Console.WriteLine ("--------------------------------------------------------------------------------"); 
      Console.WriteLine (""); 
      Console.WriteLine ("THE RED KEEPER: {0} HP", boss.redKeeperHealth); 
      Console.ResetColor(); 
      Console.WriteLine (""); 
      Console.WriteLine ("{0}: {1} HP", player.playerName, player.playerHealth); 
      Console.WriteLine (""); 
      Console.WriteLine (""); 
      Console.WriteLine (""); 
      Console.ForegroundColor = ConsoleColor.Magenta; 
      Console.WriteLine ("What would you like to do?"); 
      Console.WriteLine ("1) Attack"); 
      Console.WriteLine ("2) Dodge"); 
      Console.ResetColor(); 
      Console.ReadLine(); 
} 

回答

0

如果你想改變每行的顏色,把你的if-else語句的Console.WriteLine的可聲明之前:

 Console.Clear(); 
     Console.ForegroundColor = ConsoleColor.Red; 
     Console.WriteLine ("--------------------------------------------------------------------------------"); 
     Console.WriteLine (""); 
     Console.WriteLine ("THE RED KEEPER: {0} HP", boss.redKeeperHealth); 
     Console.ResetColor(); 
     Console.WriteLine (""); 
     Console.Write("{0}: ", player.playerName); 

//Put your condition here so that the color will reflect: 
if (player.playerHealth > 50) { 
      Console.ForegroundColor = ConsoleColor.Green; 
     } else if (player.playerHealth > 20) { 
      Console.ForegroundColor = ConsoleColor.Yellow; 
     } else { 
      Console.ForegroundColor = ConsoleColor.Red; 
     } 

Console.Write ("{0} HP", player.playerHealth); 
+0

這幾乎可以工作,但它使player.playerName相同的顏色。我正在尋找只是player.playerHealth – Josh

+0

好的,你可以檢查新的代碼。我用Console.Write而不是Console.WriteLine來分離兩種顏色。 @JoshuaBohning –

+0

這樣做,謝謝我一直堅持這個永遠:) – Josh

0

您與線覆蓋前景色

  Console.ForegroundColor = ConsoleColor.Red; 

因此剪切和粘貼此行像這樣下方的情況下,

 public static void redKeeperBattle() 
{ 


     Console.Clear(); 
     Console.ForegroundColor = ConsoleColor.Red; 

     // Write your condition here like this. 
     //The last else condition is not needed as the default colour is mention as red by above line 

     if (player.playerHealth > 50) { 
      Console.ForegroundColor = ConsoleColor.Green; 
     } else if (player.playerHealth > 20) { 
      Console.ForegroundColor = ConsoleColor.Yellow; 
     } 


     Console.WriteLine ("--------------------------------------------------------------------------------"); 
     Console.WriteLine (""); 
     Console.WriteLine ("THE RED KEEPER: {0} HP", boss.redKeeperHealth); 
     Console.ResetColor(); 
     Console.WriteLine (""); 
     Console.WriteLine ("{0}: {1} HP", player.playerName, player.playerHealth); 
     Console.WriteLine (""); 
     Console.WriteLine (""); 
     Console.WriteLine (""); 
     Console.ForegroundColor = ConsoleColor.Magenta; 
     Console.WriteLine ("What would you like to do?"); 
     Console.WriteLine ("1) Attack"); 
     Console.WriteLine ("2) Dodge"); 
     Console.ResetColor(); 
     Console.ReadLine(); 

}