2017-04-05 41 views
0

我製作了使用javafx的井字遊戲。我是新來的java,我試圖讓勝利或抽籤結束比賽。沒有必要檢查輸贏是什麼。當您無法繼續播放時,我想讓該文本結束。我嘗試使用數組,但我不知道該怎麼做。如何結束我的Javafx tic-tac-toe?

這是我的代碼:

import java.util.ArrayList; 
    import javafx.application.Application; 
    import javafx.scene.Scene; 
    import javafx.scene.control.Button; 
    import javafx.scene.control.Label; 
    import javafx.scene.layout.BorderPane; 
    import javafx.scene.layout.GridPane; 
    import javafx.scene.text.Font; 
    import javafx.stage.Stage; 

    public class ticTacToe extends Application { 

private boolean turn; 
private int[][] locations; 

public RistinollaSovellus() { 
    turn = true; 
    locations = new int[3][3]; 

} 

public static void main(String[] args) { 
    launch(ticTacToe.class); 
} 

@Override 
public void start(Stage window) throws Exception { 
    boolean endGame = false; 

    BorderPane layout = new BorderPane(); 

    Label text = new Label("Turn: X"); 
    text.setFont(Font.font("Monospaced", 40)); 
    layout.setTop(text); 

    GridPane array = new GridPane(); 
    if (!endGame) { 

     for (int x = 1; x <= 3; x++) { 
      for (int y = 1; y <= 3; y++) { 
       Button btn = new Button(" "); 
       btn.setFont(Font.font("Monospaced", 40)); 
       array.add(nappi, x, y); 
       locations[x][y] = 0; 

       btn.setOnAction((event) -> { 
        if (btn.getText().equals(" ")) { 

         if (turn) { 
          btn.setText("X"); 
          text.setText("Turn: O"); 
          turn = false; 

         } else if (!turn) { 
          btn.setText("O"); 
          text.setText("Turn: X"); 
          turn = true; 
         } 

        } 
       }); 
      } 
     } 
    } 

    layout.setCenter(array); 

    Scene showing = new Scene(layout); 

    window.setScene(showing); 
    window.show(); 
} 

    } 
+0

使用一個計數器來跟上做出動作的次數。一旦移動發數量到達9比賽結束 – Sedrick

+0

@SedrickJefferson,如果有人連續得到3使用了所有9圈之前會發生什麼? – Jonah

+0

您可以使用for循環,因爲您知道遊戲擁有的最大移動次數。你也可以使用while循環。在任何勝利條件下打破循環。 – Sedrick

回答

0

傳遞給btn.setOnAction()的參數是一個事件監聽器和它的邏輯是每次用戶點擊該按鈕時執行。

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ButtonBase.html#setOnAction-javafx.event.EventHandler-

上的按鈕,單擊要檢查網格包含一個有效的井字棋配置。爲此,您需要展開偵聽器並使用location陣列檢查網格上所有按鈕的當前狀態。

一旦細胞的有效組合被發現,你叫Platform.exit()停止該應用程序。

編輯:xy循環變量應該從0開始,上升到2,否則,則拋出ArrayIndexOutOfBoundsException。數組的第一個指數是0,而不是1

-1

我不知道你的意思,但我認爲,如果你實現了遊戲這麼遠一樣,如果它的工作,因爲它應該那麼這將是很容易爲你想出如何結束它。

看到你在這裏可以做很多事情,如果任何玩家獲勝,你可以只顯示一個提示,說明玩家x贏了,並給出一個選項,要麼退出或重新啓動應用程序,如果一條領帶可以做同樣的事情。

技術上調用stop()方法來停止所有進程並結束遊戲

+0

只需調用'停止()'是不行的,因爲_Application#stop_包含一個空的身體,什麼都不做,但希望您的應用程序覆蓋它。 –