C# 掷骰子的方法,Yatzee游戏
我正在用C#创建一个简单的游戏(Yatzee)。我已经创建了一个可以容纳5个不同骰子的阵列C# 掷骰子的方法,Yatzee游戏,c#,C#,我正在用C#创建一个简单的游戏(Yatzee)。我已经创建了一个可以容纳5个不同骰子的阵列 int[]dice=newint[5] 现在,我想创建一个抛出这五个骰子中的一个的方法。应该抛出的骰子应该作为该方法中的参数传入。我就是这样尝试的: public void throwDice(int x) { Random r1 = new Random(6); r1.x; } 我认为正在发生的事情是,该方法接受了一个参数x,该参数随机地将骰子掷到1-6之间的数字。但是当我写到:r1.
int[]dice=newint[5]代码>
现在,我想创建一个抛出这五个骰子中的一个的方法。应该抛出的骰子应该作为该方法中的参数传入。我就是这样尝试的:
public void throwDice(int x)
{
Random r1 = new Random(6);
r1.x;
}
我认为正在发生的事情是,该方法接受了一个参数x
,该参数随机地将骰子掷到1-6之间的数字。但是当我写到:r1.x
所以,我在这里问的是,我是否可以得到一些指导。我是在正确的轨道上,还是完全迷路了?您使用的随机对象是错误的。构造函数参数是种子。您需要r1。下一步(6)+1
有关详细信息,请参阅相关帖子:
您可能想做的是:
Random rnd = new Random();
int[] dice = new int[5];
void ThrowDie(int x)
{
dice[x] = rnd.Next(6)+1;
}
r1
是类的实例x
是throwDice
方法的一个参数
这并不意味着您的r1
必须有一个名为x
的字段
我想你正在寻找类似的东西
Random r1 = new Random();
public int throwDice()
{
return r1.Next(1, 6);
}
请记住,在方法中,下限是包含的,上限是排除的。这是解决此问题的另一种方法:
public class RandomDice
{
private const int NUMBER_OF_DICE = 5;
private const int MAX_DICE_VALUE = 6;
private static readonly Random Rng = new Random();
public List<int> NumberList = new List<int>();
private static IEnumerable<int> GetRandomNumbers()
{
while (true)
yield return Rng.Next(1, MAX_DICE_VALUE + 1);
}
internal void AddDice()
{
NumberList.Clear();
NumberList.AddRange(GetRandomNumbers().Take(NUMBER_OF_DICE).ToList());
}
}
公共类随机骰子
{
私有常量整数的个数=5;
私有常量int MAX_DICE_VALUE=6;
私有静态只读随机Rng=new Random();
public List NumberList=新列表();
私有静态IEnumerable GetRandomNumbers()
{
while(true)
下一个收益率返回值(1,最大骰子值+1);
}
内部void AddDice()
{
NumberList.Clear();
NumberList.AddRange(GetRandomNumbers().Take(numberofdice.ToList());
}
}
Random
class上的x
field/property我从没听说过。你有没有试过编译你的代码?我认为你没有掌握基本知识,而不仅仅是Random
。阅读下面的链接,无论世界上什么地方有游戏开发作业,它都会给你一个好的开始,所以到处都是关于石头剪刀Tic Tac Toe Yatzee等的低质量问题。我讨厌那些时候:(这就是我要找的!+1而且Random
实例不应该在方法中。它应该是一个参数或在类级别创建。如果快速重复调用该方法,可能会出现重复问题。@JesseC.Slicer当然,重复使用Random
实例可以生成相同的值。。