4

我知道如何为控制台文本设置颜色

Console.ForegroundColor = ConsoleColor.Cyan;

谁能想到我可以随机化它的方法?它不一定是完全随机的,但差异会有所帮助。

4

6 回答 6

8
private static Random _random = new Random();
private static ConsoleColor GetRandomConsoleColor()
{
    var consoleColors = Enum.GetValues(typeof(ConsoleColor));
    return (ConsoleColor)consoleColors.GetValue(_random.Next(consoleColors.Length));
}

private static void Main(string[] args)
{
    Console.ForegroundColor = GetRandomConsoleColor();
    Console.WriteLine("Hello World!");
}

解决此问题的一种简单而有效的方法是简单地从 ConsoleColor 枚举中选择一个随机值。

于 2013-07-03T19:46:10.293 回答
2
Console.ForegroundColor=(ConsoleColor)r.Next(0,16);
Console.BackgroundColor = (ConsoleColor)r.Next(0,16);

为背景或文本颜色选择两者之一,您必须将 r 声明为随机:

Random r = new Random();

或作为主要之上的静态。

这是我使用上面的代码编写的简单代码的示例:

            while (true)
        {
            Console.ForegroundColor = (ConsoleColor)r.Next(0,16);
            Console.BackgroundColor = (ConsoleColor)r.Next(0,16);
            Console.Write(r.Next(0, 2));
        }

它基本上以不同的文本颜色和背景颜色打印 0 和 1。

于 2014-03-01T09:40:56.797 回答
1

您可以使用 (ConsoleColor)(new Random()).Next(0,15)返回 ConsoleColor 对象。

它的作用是将 0 到 15(颜色数量)之间的随机数投射到 ConsoleColor 枚举实例,以便您可以将其直接传递给 ForegroundColor 或 BackgroundColor。

于 2016-11-14T17:58:29.470 回答
0
ConsoleColor getRandomColor()
{
    return (ConsoleColor)(new Random().Next(Enum.GetNames(typeof(ConsoleColor)).Length)
}

编辑:正如我的评论者所说,你不应该在new Random每次需要新的随机颜色时都构造一个。相反,您应该只保存Random某处,并且应该像这样使用它:

Random rand = new Random();
ConsoleColor getRandomColor()
{
    return (ConsoleColor)(rand.Next(Enum.GetNames(typeof(ConsoleColor)).Length);
}
于 2013-07-03T19:47:43.730 回答
0

这将选择随机颜色。请注意,这_randomRandom' 实例。

Console.ForegroundColor = (ConsoleColor)_random.Next(15);
于 2018-04-14T07:49:58.373 回答
-1

干得好。

private static void Main(string[] args)
{
    Random random = new Random();

    var query =
        typeof(ConsoleColor)
            .GetFields(BindingFlags.Static | BindingFlags.Public)
            .Select(fieldInfo => (ConsoleColor)fieldInfo.GetValue(null))
            .ToArray();

    Console.BackgroundColor = query.ElementAt(random.Next(query.Length));

    Console.WriteLine(Console.BackgroundColor);

    Console.Read();
}
于 2016-02-19T22:26:54.097 回答