2017-05-29 8 views
-1

私はWin8 GUIを使って 'HangMan'という簡単なゲームを作ろうとしています。私はスクリーン上に26個のボタンでGUIを構築しました。それぞれはアルファベットの1文字を表しています。C#いくつかのボタンを同じメソッドに割り当てる

押されたボタンの値が選択された単語の文字のいずれかと一致するかどうかをチェックする同じ方法にすべてのボタンを接続したいとします。私はこの質問を見てきましたが、これで私を助けてくれると答えましたが、私の考えでは、ゲームのすべてのロジックとメソッドが別のクラスの "Game Manager"クラスです。

How can I subscribe multiple buttons to the same event handler and act according to what button was clicked?

プラス私が辞めdidntのは、このソリューション私はどのボタンが押された知っているためにすべてのボタンを割り当てます方法を使用して、どのように理解しました。私は私の状況を十分に説明してくれることを願っています。もし私が理解できれば、コードの一部を提供することはできません。

+2

私は専門用語を逆転う:複数のボタンのイベントハンドラに同じメソッドを割り当てる方法。答え:同じものを使っているのと同じですが、常に同じメソッド名を使用します。次に、どのボタンがイベントをトリガーしたかを識別するために 'sender'パラメータ(Buttonにキャスト)を使用してください。 – TaW

答えて

0

それはあなたが望むもののための基本的な方法です。

static string key = "Level solution"; 
    char[] chars = key.ToCharArray(); 
    void check (object sender) 
    { 
     var button = sender as Button; 
     character = Convert.ToChar(button.Text); 
     int i = 0; 
     foreach (char c in chars) 
     { 
      //checks every character to mark them 
      if (c == character) 
      { 
       chars[i] = ' '; 
       //Makes character unusable for later use 

       //Anything you want now for true letters, for example showing pics or adding them to a label 
      } 
      i++; 
     } 
     //checks every character of key again, to see if player is won 
     int count = 0; 
     foreach (char c in chars) { 
      if (c != ' ') count++; 
      //Adds a number for anything expect space 
     } 

     if (count == 0) 
     { 
      MessageBox.Show("You won!"); 
     } 

    } 

あなたはあなたのコードの上に貼り付けた後、任意のボタンにだけ、このコードを使用することができます:

check(sender); 
+0

ありがとうございました!しかし、私はまだ、このメソッドまたは私の単語の文字のいずれかとそれを比較するようにクリックボタンの値が入るどこに理解していない。私は、他のクラスのCheckLetter関数をトリガする1つのイベントクリックにすべてのボタンを登録しました。メソッドを使用してボタンの値をこのチェーンに渡して、それをどのように一致させるかを示します。 – Dolev

+0

'private void CheckLetter_Click(オブジェクト送信者、RoutedEventArgs e) { Mng.CheckLetter(); } ' 'パブリックブールCheckLetter() {ため は(INT i = 0; iはtxtBlkArr.Lengthを<; iは++) { 場合(btnA.Content == txtBlkArr [i])と { txtBlkArr [I] .Visibility = Visibility.Visible; } else { // StartHanging(); falseを返します。 } } trueを返します。 } ' – Dolev

+0

編集したメソッドを使用します。これはあなたが望むことをする必要があります。 *まだテストされていません –

関連する問題