2017-03-09 32 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(); 

}

相关问题