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创建具有相同逻辑的游戏,因为您的代码不完整,
值从未更改,因此相同的问题其他方法应该是错误的。我们现在没有足够的代码来提供帮助。