2014-01-11 114 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()); 
    } 
}