2016-03-09 89 views
0

如何製作button2如果其顏色與button1中的顏色相同,請更改它的BackColor顏色?如何使按鈕背景顏色不同

我的程序如何工作?好吧,我必須按開始(button5)來混合我的顏色,之後我按下Check按鈕查看答案。

正如你所看到的圖片,我有兩個綠色的按鈕和兩個橙色的按鈕,但我不希望任何button.backcolors是平等的。他們都應該是不同的。

換句話說,如果button2.backcolor 與button1.backcolor是相同的,它應該混合它的背景色,直到它變得不同。我允許使用的唯一的顏色是綠色,紅色,藍色,紫色,橙色,黃色

任何想法我怎麼能做到這一點?

enter image description here

Random random = new Random(); 

List<Color> possibleColors = new List<Color>() 
{ 
    Color.Red, 
    Color.Green, 
    Color.Orange, 
    Color.Blue, 
    Color.Purple, 
    Color.Yellow,  
}; 

private Color GetRandomColorOfLoist() 
{ 
    return possibleColors[random.Next(0, possibleColors.Count)]; 
} 

private void button5_Click(object sender, EventArgs e) 
{ 
    button1.BackColor = GetRandomColorOfLoist(); 
    button2.BackColor = GetRandomColorOfLoist(); 
    button3.BackColor = GetRandomColorOfLoist(); 
    button4.BackColor = GetRandomColorOfLoist(); 
    button1.Visible = false; 
    button2.Visible = false; 
    button3.Visible = false; 
    button4.Visible = false; 
} 

private void button6_Click(object sender, EventArgs e) 
{ 
    button1.Visible = true; 
    button2.Visible = true; 
    button3.Visible = true; 
    button4.Visible = true; 
} 

編輯1個

了Arul Manivannans思想工作,但按下啓動和檢查之後,如果我按重新開始,比賽簡直崩潰。我最後的問題是,如何在點擊檢查按鈕(button6)後隱藏開始按鈕(button5)?

我的代碼:

Random random = new Random(); 

    List<Color> possibleColors = new List<Color>() 
{ 
    Color.Red, 
    Color.Green, 
    Color.Orange, 
    Color.Blue, 
    Color.Purple, 
    Color.Yellow, 

    }; 


     private Color GetRandomColorOfLoist() 
     { 

      int index = random.Next(0, possibleColors.Count); 
      Color ColorToReturn = possibleColors[index]; 
      possibleColors.Remove(possibleColors[index]); 

      return ColorToReturn; 



     } 

     private void button5_Click(object sender, EventArgs e) 
     { 
      button1.BackColor = GetRandomColorOfLoist(); 
      button2.BackColor = GetRandomColorOfLoist(); 
      button3.BackColor = GetRandomColorOfLoist(); 
      button4.BackColor = GetRandomColorOfLoist(); 
      button1.Visible = false; 
      button2.Visible = false; 
      button3.Visible = false; 
      button4.Visible = false; 

      List<Color> possibleColors = new List<Color>() 
{ 
    Color.Red, 
    Color.Green, 
    Color.Orange, 
    Color.Blue, 
    Color.Purple, 
    Color.Yellow, 


     }; 
     } 

     private void button6_Click(object sender, EventArgs e) 
     { 
      button1.Visible = true; 
      button2.Visible = true; 
      button3.Visible = true; 
      button4.Visible = true; 

     } 

EDIT 2

好吧,我知道了。感謝您的幫助

+1

其中實際位置隨機隨機=新Random(); '聲明?這是一個衆所周知的行爲,當跨越多個隨機對象是一個非常小的時間流逝 –

+0

我發佈的整個代碼位於我的form1.cs – Texo

+0

準確的地方。你的代碼不能編譯。你不能從代碼中取出代碼。由於隨機的行爲,這個精度非常重要。 –

回答

0

爲了不重複的顏色,如何從列表中刪除顏色項目?

 private Color GetRandomColorOfLoist() 
     { 
     int index = random.Next(0, possibleColors.Count); 
     Color ColorToReturn = possibleColors[index]; 
     possibleColors.Remove(possibleColors[index]); 

     return ColorToReturn; 
     } 
+0

策劃師的規則允許出現顏色多次 –

+0

Arul Manivannan。你的想法似乎有效,但問題是,當我點擊開始,然後檢查並再次開始...遊戲崩潰。是否有任何方法可以在檢查後阻止START按鈕(button5),以便遊戲不會崩潰? – Texo

+0

或者在按下支票後如何隱藏開始按鈕? – Texo

0

只需將從GetRandomColorOfLoist返回的顏色移出possibleColors列表即可。在button5_Click開始時,您必須重新填充可能的顏色列表。那麼它應該工作。

+0

策劃師的規則允許多次出現顏色 –

+0

我的老師說他不希望顏色多次出現 – Texo