2012-09-30 3 views
1

Silverlight에서 1 인용 플레이어 모드로 재생할 수있는 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

나는 인덱스가 생각하지 않습니다 0 ... 색인에 avail.Count –

+0

괜찮아 저장됩니다. 나는 이것 역시 시도했다. 하지만 지금은 다음과 같은 오류 메시지가 나타납니다 : "필드 이니셜 라이저는 'avail'목록의 모든 요소에 대해 'project.ttt.button1' '이 아닌 정적 필드 메서드 또는 속성을 참조 할 수 없습니다 "button1 " "button2" "button3"등은 ttt.xaml 인터페이스에 드래그 앤 드롭하여 수동으로 추가 한 9 개의 버튼 이름입니다 (아마도 도움이됩니다). 감사합니다. –

+0

그래서 ... 새 게임 버튼 클릭 방법에서 목록의 모든 버튼을 추가했습니다. 그리고 그것은 효과가있었습니다 .. 마침내 ... Guffa에게 감사드립니다. 희망이 다른 사람에게 너무 도움이 :) –

관련 문제