关于计算一个随机颜色

本文关键字:一个 随机 颜色 计算 于计算 | 更新日期: 2023-09-27 18:15:40

我刚开始在学校学习游戏编程,我们使用c#(和xna)。所以现在我们需要制作一款俄罗斯方块游戏。我想做的是使用随机数来创建颜色,所以我想知道这是否正确:

    public Block RandomColor()
    {
        int r = Random.Next(6);
        if (r == 0)
        {
            return Color.Red;
        }
        else if (r == 1)
        {
            return Color.Orange;
        }
        else if (r == 2)
        {
            return Color.Yellow;
        }
        else if (r == 3)
        {
            return Color.Green;
        }
        else if (r==4)
        {
            return Color.Blue;
        }
        else if (r==5)
        {
            return Color.Indigo;
        }
        else if (r==6)
        {
            return Color.Purple;
        }

我很不确定,因为

1) visual studio没有给出错误

2)但每次我想写颜色2东西弹出:随机颜色和ConsoleColor。我需要randomColor而不是Color吗?

我测试了我是否可以在Color之后修改代码。答案是肯定的。那么这是否意味着当我运行代码时颜色不会改变?

第一次在stackoverflow所以不确定我这样做是正确的:)

关于计算一个随机颜色

下面是从一组颜色中获取随机颜色的另一种方法:

    private Random rnd = new Random();
    private Color[] Colors = new Color[] { Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Purple };
    public Color RandomColor()
    {
        return Colors[rnd.Next(Colors.Length)];
    }

关于代码的几点注意事项:

  1. 您声明返回类型为Block,但实际上返回的是Color对象。

  2. 因为你正在返回Color对象(一旦你得到(1)固定)你很好去。ConsoleColor不用于XNA(甚至不确定"randomColor"是什么)。

  3. 你不能只调用Random.Next。您需要在此方法中创建一个Random实例(而不是,特别是如果它将在循环中调用),然后在其上调用Next

  4. 调用Next返回[0,x)中的数字(其中x是传递的数字)。如果你不熟悉这个符号,x是排他的,所以你永远不会得到x本身。if语句的范围应该是0到5,而不是1到6。

否则,假设您实际使用的是SpriteBatch.Draw中的返回值,那么您就完全正确了。没有错误是件好事:)。你的第二个和第三个问题还不太有意义。