2 人井字游戏

2 players Tic Tac toe game

我正在尝试制作一款两人井字游戏。当第一个玩家单击按钮上带有标记 X 的 OnClick 方法时,但我卡住了 - 我不知道如何让 onClick() 检测第二个玩家何时单击以及如何在按钮上标记 O ..plz 帮助..我的.java低于

public class MainActivity extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setBoard();
    }
    int c[][];
    int i, j, k = 0;
    Button b[][];
    TextView textView;

    private void setBoard() {

        b = new Button[4][4];
        c = new int[4][4];


        // Button = (TextView) findViewById(R.id.newgame);


        b[1][3] = (Button) findViewById(R.id.one);
        b[1][2] = (Button) findViewById(R.id.two);
        b[1][1] = (Button) findViewById(R.id.three);


        b[2][3] = (Button) findViewById(R.id.four);
        b[2][2] = (Button) findViewById(R.id.five);
        b[2][1] = (Button) findViewById(R.id.six);


        b[3][3] = (Button) findViewById(R.id.seven);
        b[3][2] = (Button) findViewById(R.id.eight);
        b[3][1] = (Button) findViewById(R.id.nine);

        for (i = 1; i <= 3; i++) {
            for (j = 1; j <= 3; j++)
                c[i][j] = 2;
        }

        for (i = 1; i <= 3; i++) {
            for (j = 1; j <= 3; j++) {
                b[i][j].setOnClickListener(new MyClickListener(i, j));
                if (!b[i][j].isEnabled()) {
                    b[i][j].setText("o");
                    b[i][j].setEnabled(true);
                }
            }
        }
    }
    class MyClickListener implements View.OnClickListener {
            int x;
            int y;


            public MyClickListener(int x, int y) {
                this.x = x;
                this.y = y;
            }


            public void onClick(View view) {
                if (b[x][y].isEnabled()) {
                    b[x][y].setEnabled(false);
                    b[x][y].setText("X");
                    c[x][y] = 0;
                    textView.setText("");
//WHAT NEXT




                    }
                }
            }
        }
}

只需使用一个布尔值来检测点击。假设第一次单击按钮时布尔值 isFirstPlayerTurn 为真。在第二轮将其设为 false。在所有回合中都这样做,您就会知道哪个玩家在点击按钮。 示例:

private boolean isFirstPlayerTurn = true;

...

void onclick() {
        if (isFirstPlayerTurn) {
            // clicked by player 1
            isFirstPlayerTurn = false;
        } else {
            // clicked by player 2
            isFirstPlayerTurn = true;
        }

    }

您或许应该添加一个新变量

int playerTurn;

最初应设置为 1。在第一次 onClick() 执行时,playerTurn 的值为 1,因此放置一个 X,并将 playerTurn 更改为 2。在第二次单击时,当您检查该值时在 playerTurn 中,您将放置一个 O,并将其值更改为 1。这样继续下去。

int player = 1;
public void onClick(View view){ 
    if (b[x][y].isEnabled() { 
        b[x][y].setEnabled(false); 
        if (player == 1){ 
            b[x][y].setText("X"); 
            c[x][y] = 0; 
            player = 1; 
        } else {
            b[x][y].setText("O"); 
            c[x][y] = 1; 
            player = 2; 
        } 
    }
}