关于计算一个随机颜色
本文关键字:一个 随机 颜色 计算 于计算 | 更新日期: 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)];
}
关于代码的几点注意事项:
-
您声明返回类型为
Block
,但实际上返回的是Color
对象。 -
因为你正在返回
Color
对象(一旦你得到(1)固定)你很好去。ConsoleColor
不用于XNA(甚至不确定"randomColor"是什么)。 -
你不能只调用
Random.Next
。您需要在此方法中创建一个Random
实例(而不是,特别是如果它将在循环中调用),然后在其上调用Next
。 -
调用
Next
返回[0,x)中的数字(其中x是传递的数字)。如果你不熟悉这个符号,x是排他的,所以你永远不会得到x本身。if语句的范围应该是0到5,而不是1到6。
否则,假设您实际使用的是SpriteBatch.Draw
中的返回值,那么您就完全正确了。没有错误是件好事:)。你的第二个和第三个问题还不太有意义。