Java GUI 逻辑错误 Tic Tac Toe 当 O 获胜时它不会立即出现

问题描述

我的井字游戏出现逻辑错误 我已经使用 Java 编写了代码 这是每次放X都会放O的方法

   /* creating method to place O*/
private void placeO(){
        String[] arr = { b1.getText(),b2.getText(),b3.getText(),b4.getText(),b5.getText(),b6.getText(),b7.getText(),b8.getText(),b9.getText()};
        
        boolean check = true;
        try{
        boolean result = checkForWinner(arr);
        while(check){
            /*if there is a winner or tie then stop */
            if(result == true){
                break;
            }
            int r = (int)( Math.random()* 8 ) ;
            /*generate random number between 0 and 8 */
            if(arr[r] == ""){
                switch(r){
                    case 0 : b1.setText("O");break;
                    case 1 : b2.setText("O");break;
                    case 2 : b3.setText("O");break;
                    case 3 : b4.setText("O");break;
                    case 4 : b5.setText("O");break;
                    case 5 : b6.setText("O");break;
                    case 6 : b7.setText("O");break;
                    case 7 : b8.setText("O");break;
                    case 8 : b9.setText("O");
                }
               check = false;
            }
        }
            }catch(Error e){
            System.out.print(e);
        }
}

每次我按下按钮都会发生这个事件

 private void b8ActionPerformed(java.awt.event.ActionEvent evt) {                                   
      if(b8.getText() == ""){
       b8.setText("X");
       placeO(); 
   } 
}    

我面临的问题是,每次 O 获胜时,直到我放置另一个 X 时,消息才会出现 有没有办法修复这个错误逻辑?

解决方法

在您放置“X”并将 private void b8ActionPerformed 放在“O”的回合结束后,尝试在您的 boolean result = checkForWinner(arr); 中检查获胜者。

这应该可以修复逻辑错误。