From 61987ec143ee8dcfe48cd7aa572aa3611f1a8205 Mon Sep 17 00:00:00 2001
From: JimmyTheCat <154287729+JimmyTheCatOwO@users.noreply.github.com>
Date: Thu, 9 Jan 2025 17:18:14 +0100
Subject: [PATCH] privatisation of Board attributes and creation of relevant
 Board setters and getters

---
 Board.java  | 67 +++++++++++++++++++++++++++++++++++++++++++++++++----
 GameUI.java | 21 +++++++++--------
 2 files changed, 73 insertions(+), 15 deletions(-)

diff --git a/Board.java b/Board.java
index 895d2e7..7e74f2f 100644
--- a/Board.java
+++ b/Board.java
@@ -10,27 +10,27 @@ public class Board extends Thread {
      * 3 4 5
      * 6 7 8
      */
-    Tile tiles[] = new Tile[9];
+    private Tile tiles[] = new Tile[9];
 
     /**
      * This Array contains the Players.
      */
-    Player players[] = new Player[2];
+    private Player players[] = new Player[2];
 
     /**
      * This Integer defines which character gets to draw first.
      */
-    int firstPlayer;
+    private int firstPlayer;
 
     /**
      * This Integer defines which character can currently draw on a tile.
      */
-    int currentPlayer;
+    private int currentPlayer;
 
     /**
      * This Integer tracts the amount of marks that were already placed.
      */
-    int marks;
+    private int marks;
 
     /**
      * Constructor of the Board class.
@@ -64,6 +64,63 @@ public class Board extends Thread {
         marks = 0;
     }
 
+    /**
+     * Getter for currentPlayer
+     * 
+     * @return current player
+     */
+    public int getCurrentPlayer() {
+        return currentPlayer;
+    }
+    
+    /**
+     * Getter for firstPlayer
+     * 
+     * @return first player
+     */
+    public int getFirstPlayer() {
+        return firstPlayer;
+    }
+    
+    /**
+     * Getter for players
+     * 
+     * @return players
+     */
+    public Player[] getPlayers() {
+        return players;
+    }
+    
+
+    /**
+     * Getter for player at specific index
+     * 
+     * @param index location of player in players
+     * @return specific player
+     */
+    public Player getPlayer(int index) {
+        return players[index];
+    }
+
+    /**
+     * Determins if a specific tile has an owner.
+     * 
+     * @param index loction of tile in tiles
+     * @return specific tile has owner
+     */
+    public boolean hasTileOwner(int index) {
+        return tiles[index].existOwner();
+    }
+
+    /**
+     * Sets the owner of a specific tile
+     * 
+     * @param index loction of tile in tiles
+     * @param owner number of player who now owns tile
+     */
+    public void setTileOwner(int index, int owner) {
+        tiles[index].setOwner(owner);
+    }
     
     /**
      * Ends the turn by increasing the mark counter and changing the player.
diff --git a/GameUI.java b/GameUI.java
index 39cc703..e2a79b5 100644
--- a/GameUI.java
+++ b/GameUI.java
@@ -90,7 +90,7 @@ public class GameUI extends Application{
         Button reset = new Button("Reset");
         reset.setStyle("-fx-font-size: 30px; -fx-font-family: 'Impact'; -fx-text-fill: black;");
         reset.setOnAction(e -> {
-            board = new Board(board.players, board.firstPlayer);
+            board = new Board(board.getPlayers(), board.getFirstPlayer());
             for(int i = 0; i < 9; i++){
                 int index = i;
                 
@@ -104,7 +104,7 @@ public class GameUI extends Application{
     
                 buttons[index].setGraphic(imageView);
             }
-            updatePlayerTurn(board.currentPlayer);
+            updatePlayerTurn(board.getCurrentPlayer());
             stage.setScene(game);
         });
         
@@ -131,15 +131,16 @@ public class GameUI extends Application{
      * @param stage current scene
      */
     private void handleTurn(int index, Stage stage){
-        if (board.tiles[index].existOwner()) {
+        if (board.hasTileOwner(index)) {
             return; 
         }
-        board.tiles[index].setOwner(board.currentPlayer);
+        int currentPlayer = board.getCurrentPlayer();
+        board.setTileOwner(index, currentPlayer);
        
         //replace symbols with images
         int i = rnd.nextInt(3);
-        String imageSymbols = board.currentPlayer == 0 ? getClass().getResource("/textures/1_" + i + ".png").toExternalForm() :
-                                                         getClass().getResource("/textures/0_" + i + ".png").toExternalForm();
+        String imageSymbols = currentPlayer == 0 ? getClass().getResource("/textures/1_" + i + ".png").toExternalForm() :
+                                                   getClass().getResource("/textures/0_" + i + ".png").toExternalForm();
         Image image = new Image(""+ imageSymbols);
         ImageView imageView = new ImageView(image);
 
@@ -152,12 +153,12 @@ public class GameUI extends Application{
         
         switch (board.turnEnd()) {
             case 0:
-                updatePlayerTurn(board.currentPlayer);
+                updatePlayerTurn(currentPlayer);
                 break;
         
             case 1:
                 //changes label state for the winning player and updates its score
-                winnerLabel.setText("Player " + (board.currentPlayer == 0 ? "X" : "O") + " wins!");
+                winnerLabel.setText("Player " + (currentPlayer == 0 ? "X" : "O") + " wins!");
                 updatePlayerScore();
                 stage.setScene(winningScene);
                 break;
@@ -190,8 +191,8 @@ public class GameUI extends Application{
      * 
      */
     private void updatePlayerScore(){
-        scoreLabelX.setText("Player X: " + board.players[0].getPlayerScore());
-        scoreLabelO.setText("Player O: " + board.players[1].getPlayerScore());
+        scoreLabelX.setText("Player X: " + board.getPlayer(0).getPlayerScore());
+        scoreLabelO.setText("Player O: " + board.getPlayer(1).getPlayerScore());
     }
     
     /** 
-- 
GitLab