我在游戏中遇到了一些麻烦 每当我打开应用程序并单击任何按钮时,它会显示获胜的按摩 任何人都可以帮助我吗?
public class MainActivity extends AppCompatActivity {
int[][] table;
TextView tv;
Button btn, button, button2, button3, button4, button5, button6, button7, button8;
int counter = 0;
int X = 0, O= 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
table = new int[3][3];
tv = (TextView) findViewById(R.id.tv);
btn = (Button) findViewById(R.id.btn);
whotoplay();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (counter == 0) {
btn.setText("X");
counter++;
whotoplay();
X = 0;
} else {
btn.setText("O");
counter--;
whotoplay();
O = 1;
}
CheckResult();
Toast.makeText(MainActivity.this, counter + "", Toast.LENGTH_SHORT).show();
}
});
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (counter == 0) {
button.setText("X");
counter++;
whotoplay();
X = 0;
} else {
button.setText("O");
counter--;
whotoplay();
O = 1;
}
CheckResult();
Toast.makeText(MainActivity.this, counter + "", Toast.LENGTH_SHORT).show();
}
});
和其他按钮相同,我添加吐司以确保计数器正常工作。
public void whotoplay() {
if (counter == 1) {
tv.setText("O");
}
if (counter == 0) {
tv.setText("X");
}
}
这就是获胜的原因(仅适用于1种情况),但它不起作用。
public void CheckResult() {
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this);
// horizantal
if (table[0][0] == X && table[0][1] == X && table[0][2] == X) {
dlgAlert.setMessage("X Player wins!");
dlgAlert.setTitle("congratulations");
dlgAlert.setCancelable(true);
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
dlgAlert.create().show();
}
一旦我按下btn,就会出现AlertDialog 请帮助我 - 我几乎尽我所能。
答案 0 :(得分:1)
你的罪魁祸首隐藏在明显的视线中:
if (table[0][0] == X && table[0][1] == X && table[0][2] == X)
问题是您定义了X = 0
,并且在创建int数组时,其中的所有值最初都为零。所以你的if
总是第一次返回真实。
将您的定义更改为int X = 1, O = 2
应该有效,在这种情况下,零表示空状态。
答案 1 :(得分:0)
你的表在启动时充满了零,你将'X'的位置定义为零(和'O'为1)。所以你需要另一个约定:
答案 2 :(得分:0)
我尝试了别的东西,它确实有效,但在某些情况下,我无法理解同样的问题再次发生。
if(btn.getText().equals(button.getText())&&btn.getText()
.equals(button2.getText()))
{
dlgAlert.setMessage("X Player wins!");
dlgAlert.setTitle("congratulations");
dlgAlert.setCancelable(true);
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
dlgAlert.create().show();
}
但是当我尝试将它用于下一行或情况时它不起作用。