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;
}
}
}
我正在尝试制作一款两人井字游戏。当第一个玩家单击按钮上带有标记 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;
}
}
}