2名球员Tic Tac toe比赛

时间:2015-01-21 12:59:11

标签: java android android-activity

我正在尝试制作一个双人游戏的tic-tac-toe游戏。当第一个玩家点击按钮上带有标记X的OnClick方法时,但我卡住了 - 我不知道如何让onClick()检测第二个玩家点击的时间以及如何在按钮上标记O.请帮助..我的.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




                    }
                }
            }
        }
}

2 个答案:

答案 0 :(得分:1)

只需使用布尔值来检测点击。假设第一次单击按钮时布尔值isFirstPlayerTurn为真。第二回合让它变错。在所有回合中执行此操作,您将知道哪个玩家正在点击按钮。 例如:

private boolean isFirstPlayerTurn = true;

...

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

    }

答案 1 :(得分:0)

您应该添加一个新变量

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; 
        } 
    }
}