掷骰子的方法,Yahtzee游戏

时间:2014-01-11 19:45:29

标签: c#

我在C#中创建了一个简单的游戏(Yatzee)。我创建了一个包含5个不同骰子的数组 int[] dice = new int[5];

现在,我想创建一个抛出这五个骰子之一的方法。哪个应该抛出的模具应该作为该方法中的参数传递。所以这就是我尝试的方式:

public void throwDice(int x)
{
    Random r1 = new Random(6);
    r1.x;
}

我相信正在发生的事情是,该方法接受一个参数x,随机应该将骰子扔到1-6之间的数字。但是当我写下这句话时,我会收到错误:r1.x;

那么,为什么我在这里问,是否能得到一些指导。我在这里走在正确的轨道上,还是我完全迷失了?

3 个答案:

答案 0 :(得分:5)

您使用的Random对象错误。构造函数参数是种子。您需要r1.Next(6)+1

有关详细信息,请参阅相关帖子:How do I generate a random int number in C#?

您可能想要做的是:

Random rnd = new Random();
int[] dice = new int[5];

void ThrowDie(int x)
{
    dice[x] = rnd.Next(6)+1;
}

答案 1 :(得分:1)

r1Random类的实例。 xthrowDice方法的参数。

这并不意味着您的r1必须有一个名为x的字段。

我认为你正在寻找类似的东西;

Random r1 = new Random();
public int throwDice()
{
  return r1.Next(1, 6);
}

Rememer,在Random.Next方法中,lowerbound是包含的,但是upperbound是独占的。

答案 2 :(得分:0)

以下是解决此问题的另一种方法:

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());
   }
}