2015-08-28 71 views
0

我創建了一個Mastermind遊戲,用戶在5種顏色中選擇4種顏色並查看它是否匹配。 然後,它會將給定的顏色組合發送到CheckClass以查看組合是否正確。隨機4色並保存C#

我的問題是,我怎麼可以隨機4紅色,藍色,黃色,石灰和紫色之間?

我需要隨機輸入不同的顏色代碼嗎? 這是我到目前爲止已經發現:

private Color GetRandomColor() 
{ 
return Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); 
} 

我應該使用哪種顏色代碼?

謝謝!

回答

3

創建所需顏色的陣列,然後從中隨機一個:

private Color GetRandomColor() 
{ 
    Random r = new Random((int)DateTime.Now.Ticks); 
    var colorArray = new Color[] 
      { 
       Color.Red, 
       Color.Blue, 
       Color.Yellow, 
       Color.Lime, 
       Color.Purple 
      }; 
    return colorArray[r.Next(colorArray.Length-1)]; 
} 

,如果你想從五個4顏色隨機,每次調用函數,第一洗牌陣列在一個循環中,然後從它返回第4種顏色:

private Color[] GetRandomColor() 
{ 
    Random r = new Random((int)DateTime.Now.Ticks); 
    var colorArray = new Color[] 
     { 
      Color.Red, 
      Color.Blue, 
      Color.Yellow, 
      Color.Lime, 
      Color.Purple 
     }; 
    for (int i = 0; i < colorArray.Length; i++) 
    { 
     var j = r.Next(colorArray.Length - 1); 
     var k = r.Next(colorArray.Length - 1); 
     var temp = colorArray[j]; 
     colorArray[j] = colorArray[k]; 
     colorArray[k] = temp; 
    } 
    return colorArray.Take(4).ToArray() 
} 
+0

會更好: 「返回colorArray [r.Next(colorArray.Length-1)]。」 –

+0

@AlexZhevzhik,是的,謝謝 –

+0

非常感謝!但是這會每次產生一個隨機的順序嗎?現在它按照數組的精確順序顯示出來。 – martoo

0

另一種方法可能是,如果你有從那裏你需要選擇任意一個像下面

定義的一組顏色

你可以試試下面的代碼來獲取隨機顏色元素

listOfColors[(new Random()).Next(0, listOfColors.Length)]; 
+0

除了這個答案與Alex Zhevzhik的評論相同之外,它應該每四次運行一次就會崩潰。 –