2016-07-04 6 views
-1

私は自分自身でいくつかのアンドロイドを学ぼうとしています。私は非常に基本的な質問があり、Googleは私にまだ答えられませんでした。Androidスタジオ変数ボタン名

少しのXOXゲームを作って自分のスキルを向上させたい。 「AI」の最初のステップは無作為化されています。

if (Zugzahl == 1) { 
    while (var == 0) { 
     Random(); 

     if (ACButton[Rand].getText().equals = "X") { 
      Random(); 
     } else { 
      ACbutton[Rand].setText() = "O"; 
      var = 1; 
     } 
    } 
} 

Random()数として0を除外少しラインです。私は基本的に、ACButtonの名前に乱数を追加して、それを正しく扱いたいと思っています。

はここにあなたの助け

いただきありがとうござい全体のことである:

package com.example.abu.myapplication; 


import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 

import java.util.Random; 


public class MainActivity extends AppCompatActivity { 

private Button ACButton1; 
private Button ACButton2; 
private Button ACButton3; 
private Button ACButton4; 
private Button ACButton5; 
private Button ACButton6; 
private Button ACButton7; 
private Button ACButton8; 
private Button ACButton9; 
private int Zugzahl; 
private int Rand; 
private double var; 
private String[] ACButton = {String.valueOf(ACButton1), String.valueOf(ACButton2), String.valueOf(ACButton3), String.valueOf(ACButton4), String.valueOf(ACButton5), String.valueOf(ACButton6), String.valueOf(ACButton7), String.valueOf(ACButton8), String.valueOf(ACButton9)}; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    ACButton1 = (Button) findViewById(R.id.button); 
    ACButton1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton1.getText().equals("0")) { 
       ACButton1.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 

      } 
     } 
    }); 
    ACButton2 = (Button) findViewById(R.id.button2); 
    ACButton2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton2.getText().equals("O")) { 
       ACButton2.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
    ACButton3 = (Button) findViewById(R.id.button3); 
    ACButton3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton3.getText().equals("O")) { 
       ACButton3.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
    ACButton4 = (Button) findViewById(R.id.button4); 
    ACButton4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton4.getText().equals("O")) { 
       ACButton4.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
    ACButton5 = (Button) findViewById(R.id.button5); 
    ACButton5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton5.getText().equals("O")) { 
       ACButton5.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
    ACButton6 = (Button) findViewById(R.id.button6); 
    ACButton6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton6.getText().equals("O")) { 
       ACButton6.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
    ACButton7 = (Button) findViewById(R.id.button7); 
    ACButton7.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton7.getText().equals("O")) { 
       ACButton7.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
    ACButton8 = (Button) findViewById(R.id.button8); 
    ACButton8.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton8.getText().equals("O")) { 
       ACButton8.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
    ACButton9 = (Button) findViewById(R.id.button9); 
    ACButton9.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!ACButton9.getText().equals("O")) { 
       ACButton9.setText("X"); 
       Zugzahl = Zugzahl + 1; 
       Logic(); 
      } 
     } 
    }); 
} 


private void Logic() { 


    while (!ACButton1.getText().equals("X") && !ACButton4.getText().equals("X") && !ACButton7.getText().equals("X") || 
      !ACButton2.getText().equals("X") && !ACButton5.getText().equals("X") && !ACButton8.getText().equals("X") || 
      !ACButton3.getText().equals("X") && !ACButton6.getText().equals("X") && !ACButton9.getText().equals("X") || 
      !ACButton1.getText().equals("X") && !ACButton2.getText().equals("X") && !ACButton3.getText().equals("X") || 
      !ACButton4.getText().equals("X") && !ACButton5.getText().equals("X") && !ACButton6.getText().equals("X") || 
      !ACButton7.getText().equals("X") && !ACButton8.getText().equals("X") && !ACButton9.getText().equals("X") || 
      !ACButton1.getText().equals("X") && !ACButton5.getText().equals("X") && !ACButton9.getText().equals("X") || 
      !ACButton7.getText().equals("X") && !ACButton5.getText().equals("X") && !ACButton3.getText().equals("X")) { 

     if (Zugzahl == 1) { 
      while (var == 0) { 
       Random(); 
       if (ACButton[Rand].getText().equals = "X") { 
        Random(); 
       } else { 
        ACButton[Rand].setText() = "O"; 
        var = 1; 
       } 


      } 


     } 
    } 
} 


private void Random() { 

    Rand = new Random().nextInt(9); 

} 

private void endgame() { 
} 

}

+0

私は "XOX"は英語で "Tic Tac Toe"と呼ばれると思います。 AKA "Connect Three"。 しかし、もう一度あなたの質問は何ですか? – Shark

+0

ドイツではTic Tac Toeとも呼ばれますが、XOXを書く方が簡単です。私は自分のフィールドの変数番号が入る場所としてコード内に[Rand]を持っていますが、フィールドから実際の番号としてRand変数を受け入れるためにAndroidスタジオを持ってくる方法はわかりません。私の9つのフィールドは9までACButton1と呼ばれています。私はランダム番号で固定番号を切り替える必要があります。 –

答えて

0

あなたは9 の長さと各セルを、あなたのACButton配列を作成することができますが、彼のACButtonが含まれます:たとえば、 ACButton[0] = ACButton0です。あなたが使用している場合その後

Rand = new Random().nextInt(9); // random number in [0,8] 

は、このような何かをランダム関数を使用しif (ACButton[Rand].getText().equals = "X") をあなたのACButtonが配列に彼の指数によると、彼の名前に対応します達成することができます。

更新:あなたはACButtonの値を持つStringの配列を作成するため あなたは例外を取得します。したがって、getText()でテキストを取得することはできません。 ボタンの配列を作成してください:

private Button[] ACButton = {ACButton1, ACButton2, ...}; 

この方法は、あなたがButtonインスタンスを取得し、彼の方法を使用することができます。

+0

さて、私はすべての私のボタンを持つ配列を作った。しかし、if(ACButton [Rand] .getText()。equals = "X")行は機能しません。 .getText以降の.setTextメソッドは機能しません。 –

+0

あなたの質問に 'ACButton'クラスコードを追加できますか? –

+0

私はコード全体をアップロードしました。マバイは物事を楽にします。そう遠くのサポートに感謝します。 –

関連する問題