我正在尝试制作一个双人游戏的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
}
}
}
}
}
答案 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;
}
}
}