2012-09-30 63 views
1

我想在Silverlight中製作一個可以在單人模式下玩的Tic Tac Toe遊戲。 因此,點擊任何按鈕後,將其內容更改爲「X」或「O」,我需要更改隨機按鈕的內容。C#WPF如何將內容更改爲隨機按鈕?

我試圖讓所有按鈕的列表,並得到一個隨機值:

public List<string> avail = new List<string>() { "button1", "button2", "button3", "button4", "button5", "button6", "button7", "button8", "button9" }; 

    public string Ran() 
    { 
     Random b1 = new Random(); 
     int index = b1.Next(avail.Count); 
     if (index > 0) 
      return avail[index]; 
     else 
      return null; 
    } 

,但我不知道如何讓我的隨機字符串一個按鈕,這樣我就可以調用下面的方法:

public void buttonchange(Button b) 
    { 
     if (b.Content.ToString() == "") 
      if (x == true) 
      { 
       x = false; 
       b.Content = "X"; 
      } 
      else 
      { 
       x = true; 
       b.Content = "O"; 
      } 
     if(b.Name!=null) 
      avail.Remove(b.Name); 
    } 

任何想法? 謝謝!

回答

0

使按鈕的引用列表來代替:

public List<Button> avail = new List<Button>() { button1, button2, button3, button4, button5, button6, button7, button8, button9 }; 

public Button Ran() 
{ 
    Random b1 = new Random(); 
    int index = b1.Next(avail.Count); 
    if (index > 0) { 
     return avail[index]; 
    } else { 
     return null; 
    } 
} 

public void buttonchange(Button b) 
{ 
    if(b != null) { 
     if (b.Content.ToString() == "") { 
      b.Content = x ? "X" : "O"; 
      x = !x; 
     } 
     avail.Remove(b); 
    } 
} 

不知道爲什麼與指標零按鈕沒有被使用,但...

+0

我不認爲這是和指數0 ...在索引存儲avail.Count –

+0

好吧。我也試過這個。但現在我收到以下錯誤消息:「字段初始值設定項不能引用非靜態字段方法或屬性'project.ttt.button1'」(對於'可用'列表中的每個元素) 請注意「button1」 「button2」「button3」等是我通過拖放到ttt.xaml界面手動添加的9個按鈕的名稱(可能有幫助)。 謝謝! –

+0

所以...我在新遊戲按鈕點擊方法中添加了列表中的每個按鈕。它的工作..最後...感謝Guffa。希望這可以幫助別人:) –