2014-01-11 110 views
-2

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

现在,我想创建一个方法来抛出这五个骰子中的一个。应该抛出哪个死亡,作为该方法的争论。所以这是我尝试:

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

我相信正在发生什么,是该方法接受一个参数x,它随机应该扔骰子是1-6之间的数字。但是当我写信时,我得到错误:r1.x;

那么,为什么我问这里,就是如果我能得到一些指导。我在这里的正确轨道,还是我完全失去了?

+1

我从来没有听说过关于'Random'类x'字段/属性的'。你甚至试过编译你的代码吗? – MarcinJuraszek

+1

我认为你错过了基本知识,而不仅仅是“Random”。阅读下面的链接,它应该给你一个良好的开端http://stackoverflow.com/questions/2706500/how-to-generate-random-int-number-c –

+2

每当在世界某个地方给游戏开发作业,所以得到全程约*剪刀石头布*井字低质量的问题* * * Yatzee等我讨厌那些时间:( –

回答

1

r1Random类的一个实例。 x是您的throwDice方法的参数。

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

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

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

Rememer,在Random.Next方法lowerbound是包容性的,但upperbound是包容性的,但上限是排他性的。

+1

这'Random'例如不应该在这个方法应该是一个参数或者是在类的层次上创建的,如果这个方法被快速重复调用,可能会出现重复问题 –

+0

@ JesseC.Slicer当然,重复使用'Random'实例可以生成相同的值。 –

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