我目前有一个骰子滚动游戏的程序。 7掷骰子,我的程序检查不同的匹配,例如三种。有没有办法突出显示使用格式的三种数字?那么三种类型的数字都以红色突出显示?
备受赞赏
代码:
System.out.println("Answer: " + ack(m,n));
答案 0 :(得分:1)
我不认为这可以通过字符串格式化,因为它是一个UI的东西。但是,您可以使用控制台的BackgroundColor
属性突出显示文本:
Console.BackgroundColor = ConsoleColor.Red;
Console.Write("\n{0}", d);
Console.BackgroundColor = ConsoleColor.Black;
Console.WriteLine(" Appeared three times --- 3 Points Awarded\n");
当然,您可以自己编写一个函数,以字符串格式化方式执行此操作:
public static void WriteColoredLine(string formattedString, params object[] pars)
{
var pattern = "[{]\\d[}]";
var splitted = Regex.Split(formattedString, pattern);
var formatItems = Regex.Matches(formattedString, pattern).Cast<Match>().Select(m => int.Parse(m.Value.Trim('{', '}'))).ToList();
for (var i = 0; i < splitted.Length - 1; i++)
{
Console.Write(splitted[i]);
Console.BackgroundColor = ConsoleColor.Red;
Console.Write(pars[formatItems[i]]);
Console.BackgroundColor = ConsoleColor.Black;
}
Console.WriteLine(splitted.Last());
}
如果你想要指定的颜色,你可以使用值元组:
public static void WriteColoredLine(string formattedString, params (object, ConsoleColor)[] pars)
{
var pattern = "[{]\\d[}]";
var splitted = Regex.Split(formattedString, pattern);
var formatItems = Regex.Matches(formattedString, pattern).Cast<Match>().Select(m => int.Parse(m.Value.Trim('{', '}'))).ToList();
for (var i = 0; i < splitted.Length - 1; i++)
{
Console.Write(splitted[i]);
Console.BackgroundColor = pars[formatItems[i]].Item2;
Console.Write(pars[formatItems[i]].Item1);
Console.BackgroundColor = ConsoleColor.Black;
}
Console.WriteLine(splitted.Last());
}
如果您没有定位最新的.Net版本,请记得从NuGet安装ValueTuple
类型。
这个方法被称为:
WriteColoredLine("\n{0} Appeared three times --- 3 Points Awarded\n", ("foo", ConsoleColor.Red));