2014-12-26 68 views
-1

我一直在試圖創造遊戲中的「主腦」我嘗試,當我點擊「顯示」按鈕,它會生成ROYGBIV 3種顏色。(已經完成)避免重複隨機顏色

但是現在我需要做一個聲明來比較生成的隨機顏色。 這是代碼的一部分

public partial class Form1 : Form 
    { 
     Color[] RandomColor = new Color[7] { Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Blue, Color.Indigo, Color.Violet }; 
     Random r = new Random(); 

     public Form1() 
     { 
      InitializeComponent(); 

     } 

     private void btnShow_Click(object sender, EventArgs e) 
     { 
      btnShow.Text = "Hide"; 

      for (int i = 0; i < RandomColor.Length; i++) 
      { 
       int RandomColorNum = r.Next(0, RandomColor.Length); 

       switch (i) 
       { 
        case 1: pnlNPC1.BackColor = RandomColor[RandomColorNum]; 
         break; 
        case 2: pnlNPC2.BackColor = RandomColor[RandomColorNum]; 
         break; 
        case 3: pnlNPC3.BackColor = RandomColor[RandomColorNum]; 
         break; 
       } 

      } 

      pnlNPC1.Visible = true; 
      pnlNPC2.Visible = true; 
      pnlNPC3.Visible = true; 



     } 

謝謝你們,祝你一切順利!

+0

爲什麼不比較'ToARGB'值? – Plutonix

+0

如果您想避免重複的顏色,可以將顏色設置爲列表,然後刪除使用的顏色。我建議一個單獨的功能。順便說一句,你正在迭代的顏色數組,而不是我認爲你想要的NPC面板。 –

+0

fyi-我認爲你還需要'r.Next(0,RandomColor.Length -1)'或者你會得到一個索引越界 – alykins

回答

0

這裏是你可以使用一個函數:

int[] PickIntegers(int amountToPick, int maxSize) 
{ 
    List<int> numbers = new List<int>(amountToPick); 

    for (int x = 0; x < amountToPick; x++) 
    { 
     int n = 0; 
     while (true) 
     { 
      n = r.Next(0, maxSize); 
      if (!numbers.Contains(n)) 
      { 
       numbers.Add(n); 
       break; 
      } 
     } 
    } 

    return numbers.ToArray(); 
} 

然後,你可以這樣調用:

private void btnShow_Click(object sender, EventArgs e) 
{ 
    btnShow.Text = "Hide"; 

    int[] numbers = PickIntegers(3, RandomColor.Length); 

    pnlNPC1.BackColor = RandomColor[numbers[0]]; 
    pnlNPC2.BackColor = RandomColor[numbers[1]]; 
    pnlNPC3.BackColor = RandomColor[numbers[2]]; 


    pnlNPC1.Visible = true; 
    pnlNPC2.Visible = true; 
    pnlNPC3.Visible = true; 
} 

注意:此代碼沒有進行測試。它可能包含錯別字。

+0

謝謝兄弟,它的工作原理:'D. – HurpaDerpa