Java 提克托获胜的情况
在比赛中,我在创造胜利局面方面遇到了一些困难。Java 提克托获胜的情况,java,android,tic-tac-toe,Java,Android,Tic Tac Toe,在比赛中,我在创造胜利局面方面遇到了一些困难。 每次我打开应用程序并点击任何按钮时,它都会显示获胜的按摩。 有人能帮我吗 public class MainActivity extends AppCompatActivity { int[][] table; TextView tv; Button btn, button, button2, button3, button4, button5, button6, button7, button8; int counter = 0; int X
每次我打开应用程序并点击任何按钮时,它都会显示获胜的按摩。
有人能帮我吗
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();
}
});
和其他按钮一样,我添加toast以确保计数器正常工作
public void whotoplay() {
if (counter == 1) {
tv.setText("O");
}
if (counter == 0) {
tv.setText("X");
}
}
下面是我们为获胜所做的(这只是一种情况),但它不起作用
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就会出现。请帮帮我-我几乎做了我所能做的一切。你的罪犯藏在显而易见的地方:
if(表[0][0]==X和表[0][1]==X和表[0][2]==X)
问题是您定义了X=0
,当您创建一个int数组时,数组中的所有值最初都是零。所以你的if
第一次总是返回true。
将定义更改为
int X=1,O=2应该有效,在这种情况下,零表示空状态。您的表在启动时充满了零,您将“X”位定义为零(而“O”为1)。所以你需要另一个约定:
- 完全没有棋子的值(尚未玩过的地方),例如0
- “X”的值为1
- “O”的值表示为2
我尝试了其他方法,但确实有效,但在某些情况下,我无法理解同样的问题再次发生
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();
}
但是,当我尝试在下一行或下一种情况下使用它时,它不起作用。那么你完全是一个赢家,这一点也不坏默认情况下,你的数组都是0
值,所以要么更改逻辑,要么更改数组值,我更喜欢逻辑更改你对更改逻辑有什么建议??我该怎么做???@Pavneet_Singh你建议这个应用程序使用哪种逻辑?你的代码太不完整了,你不能在其中显示X和O的tic toe游戏,因此,我建议谷歌提供一些教程,首先了解游戏背后的逻辑,然后使用android UI创建具有相同逻辑的游戏,因为您的代码不完整,表
值从未更改,因此相同的问题其他方法应该是错误的。我们现在没有足够的代码来提供帮助。