From 2113ed1802196b6e2e47e91ef90d7831161c53ed Mon Sep 17 00:00:00 2001 From: sahm124 Date: Sun, 10 Jan 2021 19:26:22 +0330 Subject: [PATCH 1/3] graphical first --- .idea/.gitignore | 2 +- .idea/compiler.xml | 23 +- .idea/description.html | 2 + .idea/encodings.xml | 6 + .idea/gradle.xml | 4 + ...googlecode_json_simple_json_simple_1_1.xml | 13 + .idea/libraries/Maven__junit_junit_4_13_1.xml | 13 + ..._org_apiguardian_apiguardian_api_1_1_0.xml | 13 + .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 + ..._org_junit_jupiter_junit_jupiter_5_7_0.xml | 13 + ..._junit_jupiter_junit_jupiter_api_5_7_0.xml | 13 + ...nit_jupiter_junit_jupiter_engine_5_7_0.xml | 13 + ...nit_jupiter_junit_jupiter_params_5_7_0.xml | 13 + ..._platform_junit_platform_commons_1_7_0.xml | 13 + ...t_platform_junit_platform_engine_1_7_0.xml | 13 + ...Maven__org_opentest4j_opentest4j_1_2_0.xml | 13 + .idea/misc.xml | 14 +- .idea/modules.xml | 8 + .idea/uiDesigner.xml | 3 +- Plato.iml | 26 + graphical.iml | 12 + pom.xml | 11 +- .../java/BattleSea/Controller/BattleSea.java | 22 - .../BattleSea/Controller/GameManager.java | 215 -------- .../BattleSea/Controller/GridManager.java | 189 ------- .../BattleSea/Controller/ShipManager.java | 114 ----- .../java/BattleSea/Model/Coordination.java | 78 --- src/main/java/BattleSea/Model/Grid.java | 49 -- src/main/java/BattleSea/Model/Ship.java | 71 --- src/main/java/BattleSea/View/InGameMenu.java | 196 ------- .../java/BattleSea/View/StartingPage.java | 12 - src/main/java/Main.java | 21 - .../Controller/FriendsMenuController.java | 124 ----- .../Plato/Controller/LoginPageController.java | 103 ---- .../Controller/MainPageAdminController.java | 286 ----------- .../Controller/MainPagePlayerController.java | 142 ------ .../Plato/Controller/UserPageController.java | 61 --- src/main/java/Plato/Model/Admin.java | 40 -- src/main/java/Plato/Model/Event.java | 123 ----- src/main/java/Plato/Model/Game.java | 32 -- src/main/java/Plato/Model/Log.java | 62 --- src/main/java/Plato/Model/Player.java | 281 ---------- src/main/java/Plato/Model/User.java | 132 ----- src/main/java/Plato/View/BattleSeaMenu.java | 122 ----- src/main/java/Plato/View/Commands.java | 54 -- src/main/java/Plato/View/FriendsMenu.java | 97 ---- src/main/java/Plato/View/GamesMenu.java | 59 --- src/main/java/Plato/View/LoginPage.java | 77 --- src/main/java/Plato/View/MainPageAdmin.java | 169 ------ src/main/java/Plato/View/MainPagePlayer.java | 139 ----- src/main/java/Plato/View/Page.java | 11 - src/main/java/Plato/View/ReversiMenu.java | 124 ----- src/main/java/Plato/View/UserPage.java | 108 ---- src/main/java/Reversi/Reversi.java | 479 ------------------ src/main/java/Reversi/ReversiController.java | 153 ------ src/main/java/Reversi/ReversiView.java | 46 -- 56 files changed, 233 insertions(+), 4012 deletions(-) create mode 100644 .idea/description.html create mode 100644 .idea/encodings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_13_1.xml create mode 100644 .idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_0.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_0.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_0.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_0.xml create mode 100644 .idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_0.xml create mode 100644 .idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_0.xml create mode 100644 .idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml create mode 100644 .idea/modules.xml create mode 100644 Plato.iml create mode 100644 graphical.iml delete mode 100644 src/main/java/BattleSea/Controller/BattleSea.java delete mode 100644 src/main/java/BattleSea/Controller/GameManager.java delete mode 100644 src/main/java/BattleSea/Controller/GridManager.java delete mode 100644 src/main/java/BattleSea/Controller/ShipManager.java delete mode 100644 src/main/java/BattleSea/Model/Coordination.java delete mode 100644 src/main/java/BattleSea/Model/Grid.java delete mode 100644 src/main/java/BattleSea/Model/Ship.java delete mode 100644 src/main/java/BattleSea/View/InGameMenu.java delete mode 100644 src/main/java/BattleSea/View/StartingPage.java delete mode 100644 src/main/java/Main.java delete mode 100644 src/main/java/Plato/Controller/FriendsMenuController.java delete mode 100644 src/main/java/Plato/Controller/LoginPageController.java delete mode 100644 src/main/java/Plato/Controller/MainPageAdminController.java delete mode 100644 src/main/java/Plato/Controller/MainPagePlayerController.java delete mode 100644 src/main/java/Plato/Controller/UserPageController.java delete mode 100644 src/main/java/Plato/Model/Admin.java delete mode 100644 src/main/java/Plato/Model/Event.java delete mode 100644 src/main/java/Plato/Model/Game.java delete mode 100644 src/main/java/Plato/Model/Log.java delete mode 100644 src/main/java/Plato/Model/Player.java delete mode 100644 src/main/java/Plato/Model/User.java delete mode 100644 src/main/java/Plato/View/BattleSeaMenu.java delete mode 100644 src/main/java/Plato/View/Commands.java delete mode 100644 src/main/java/Plato/View/FriendsMenu.java delete mode 100644 src/main/java/Plato/View/GamesMenu.java delete mode 100644 src/main/java/Plato/View/LoginPage.java delete mode 100644 src/main/java/Plato/View/MainPageAdmin.java delete mode 100644 src/main/java/Plato/View/MainPagePlayer.java delete mode 100644 src/main/java/Plato/View/Page.java delete mode 100644 src/main/java/Plato/View/ReversiMenu.java delete mode 100644 src/main/java/Plato/View/UserPage.java delete mode 100644 src/main/java/Reversi/Reversi.java delete mode 100644 src/main/java/Reversi/ReversiController.java delete mode 100644 src/main/java/Reversi/ReversiView.java diff --git a/.idea/.gitignore b/.idea/.gitignore index 3f6be49..4ebaf35 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -2,7 +2,7 @@ /shelf/ /workspace.xml # Datasource local storage ignored files -/../../../../../../../:\# Personal Data\University\Advanced Programming\Project\Phase 1\.idea/dataSources/ +/../../../../:\project team 13\graphical\.idea/dataSources/ /dataSources.local.xml # Editor-based HTTP Client requests /httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml index f060d48..217af47 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,14 +1,23 @@ + - \ No newline at end of file + + diff --git a/.idea/description.html b/.idea/description.html new file mode 100644 index 0000000..cc10d56 --- /dev/null +++ b/.idea/description.html @@ -0,0 +1,2 @@ +Simple JavaFX 2.0 application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided. + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..3e3960b --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml new file mode 100644 index 0000000..ea70fe1 --- /dev/null +++ b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_13_1.xml b/.idea/libraries/Maven__junit_junit_4_13_1.xml new file mode 100644 index 0000000..9fa24fc --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_13_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml new file mode 100644 index 0000000..f854ab0 --- /dev/null +++ b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_0.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_0.xml new file mode 100644 index 0000000..f7cf4fe --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_0.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_0.xml new file mode 100644 index 0000000..cc01e3f --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_0.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_0.xml new file mode 100644 index 0000000..f198e4b --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_0.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_0.xml new file mode 100644 index 0000000..a53686b --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_0.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_0.xml new file mode 100644 index 0000000..cde8a48 --- /dev/null +++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_0.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_0.xml new file mode 100644 index 0000000..3391deb --- /dev/null +++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml new file mode 100644 index 0000000..fbc1b16 --- /dev/null +++ b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 48b4b95..95ae90c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,17 +1,9 @@ - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..42fbad4 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml index e96534f..3b00020 100644 --- a/.idea/uiDesigner.xml +++ b/.idea/uiDesigner.xml @@ -121,4 +121,5 @@ - \ No newline at end of file + + diff --git a/Plato.iml b/Plato.iml new file mode 100644 index 0000000..a3bb54c --- /dev/null +++ b/Plato.iml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/graphical.iml b/graphical.iml new file mode 100644 index 0000000..285926b --- /dev/null +++ b/graphical.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6d28849..0b9298b 100644 --- a/pom.xml +++ b/pom.xml @@ -62,11 +62,20 @@ RELEASE compile + com.googlecode.json-simple json-simple - 1.1 + 1.1.1 + + + org.openjfx + javafx + 11 + pom + + diff --git a/src/main/java/BattleSea/Controller/BattleSea.java b/src/main/java/BattleSea/Controller/BattleSea.java deleted file mode 100644 index 77ac40f..0000000 --- a/src/main/java/BattleSea/Controller/BattleSea.java +++ /dev/null @@ -1,22 +0,0 @@ -package BattleSea.Controller; - -import Plato.Model.Game; -import Plato.Model.Player; - -public class BattleSea extends Game { - public static BattleSea battleSea = new BattleSea(); - private Player firstPlayer; - private Player secondPlayer; - - public BattleSea(Player firstPlayer, Player secondPlayer) { - this.firstPlayer = firstPlayer; - this.secondPlayer = secondPlayer; - - } - - public BattleSea() { - - } - - -} diff --git a/src/main/java/BattleSea/Controller/GameManager.java b/src/main/java/BattleSea/Controller/GameManager.java deleted file mode 100644 index 7b1d82a..0000000 --- a/src/main/java/BattleSea/Controller/GameManager.java +++ /dev/null @@ -1,215 +0,0 @@ -package BattleSea.Controller; - -import BattleSea.Model.Coordination; -import BattleSea.Model.Grid; -import BattleSea.Model.Ship; -import BattleSea.View.InGameMenu; -import Plato.Model.Player; - -import java.io.IOException; -import java.security.SecureRandom; -import java.util.ArrayList; - -public class GameManager { - private final Player firstPlayer; - private final Player secondPlayer; - private Player turn; - private int firstPlayerScore; - private int secondPlayerScore; - GridManager firstPlayerGridManager; - GridManager secondPlayerGridManager; - ShipManager firstPlayerShipManager; - ShipManager secondPlayerShipManager; - - public GameManager(Player firstPlayer, Player secondPlayer, int boardDimension, int numberOfShips) { - this.firstPlayer = firstPlayer; - this.secondPlayer = secondPlayer; - createBoard(boardDimension); - createShips(boardDimension, numberOfShips); - turn = firstPlayer; - firstPlayerScore = 0; - secondPlayerScore = 0; - } - - public void addScore(int score, Player player) { - if (player.equals(firstPlayer)) firstPlayerScore += score; - else if (player.equals(secondPlayer)) secondPlayerScore += score; - } - - private void createBoard(int boardDimension) { - firstPlayerGridManager = new GridManager(firstPlayer, boardDimension); - secondPlayerGridManager = new GridManager(secondPlayer, boardDimension); - } - - private void createShips(int boardDimension, int numberOfShips) { - firstPlayerShipManager = new ShipManager(firstPlayer, boardDimension, numberOfShips); - secondPlayerShipManager = new ShipManager(secondPlayer, boardDimension, numberOfShips); - putTheShipsOnBoardRandomly(firstPlayerGridManager, firstPlayerShipManager, boardDimension); - putTheShipsOnBoardRandomly(secondPlayerGridManager, secondPlayerShipManager, boardDimension); - } - - public byte bombLocation(int xAxis, int yAxis) { - if (turn.equals(firstPlayer)) { - return bombLocationByPlayer(xAxis, yAxis, firstPlayerGridManager, firstPlayerShipManager, secondPlayerGridManager, secondPlayerShipManager); - } else { - return bombLocationByPlayer(xAxis, yAxis, secondPlayerGridManager, secondPlayerShipManager, firstPlayerGridManager, firstPlayerShipManager); - } - } - - public byte changeLocationOfShip(int shipCode, int xAxis, int yAxis) { - if (turn.equals(firstPlayer)) { - if (firstPlayerShipManager.getShipByShipCode(shipCode).isDestroyed() || !firstPlayerShipManager.getShipByShipCode(shipCode).isMovable()) - return 0; //"This Ship Cannot Move Because It Is Partially or Completely destroyed" - } else if (secondPlayerShipManager.getShipByShipCode(shipCode).isDestroyed() || !secondPlayerShipManager.getShipByShipCode(shipCode).isMovable()) - return 0; //"This Ship Cannot Move Because It Is Partially or Completely destroyed" - try { - if (turn.equals(firstPlayer)) { - if (firstPlayerGridManager.changeLocationOfShip(firstPlayerShipManager.getShipByShipCode(shipCode), xAxis, yAxis)) { - return 1; //"The Ship " + shipCode + " Has Been Moved To The New Location Successfully" - } else return 2; //"Cannot Move The Ship To The Requested Location! Try A New Location" - } else { - if (secondPlayerGridManager.changeLocationOfShip(secondPlayerShipManager.getShipByShipCode(shipCode), xAxis, yAxis)) { - return 1; //"The Ship " + shipCode + " Has Been Moved To The New Location Successfully" - } else return 2; //"Cannot Move The Ship To The Requested Location! Try A New Location" - } - } catch (IndexOutOfBoundsException e) { - firstPlayerGridManager.fixTheGrid(); - secondPlayerGridManager.fixTheGrid(); - return 3; //"You Cannot Move The Ship To This Location! Because Part Of Ship Will Be Out Of The Board. Try A New Location"; - } - } - - public byte changeDirectionOfShip(int shipCode, char newDirection) { - if (turn.equals(firstPlayer)) { - if (firstPlayerShipManager.getShipByShipCode(shipCode).isDestroyed() || !firstPlayerShipManager.getShipByShipCode(shipCode).isMovable()) - return 0; //"This Ship Cannot Rotate Because It Is Partially or Completely destroyed"; - } else if (secondPlayerShipManager.getShipByShipCode(shipCode).isDestroyed() || !secondPlayerShipManager.getShipByShipCode(shipCode).isMovable()) - return 0; //"This Ship Cannot Rotate Because It Is Partially or Completely destroyed"; - try { - if (turn.equals(firstPlayer)) { - if (firstPlayerGridManager.changeDirectionOfShip(firstPlayerShipManager.getShipByShipCode(shipCode), newDirection)) { - return 1; //"The Ship " + shipCode + " Has Been Rotated To The New Direction Successfully"; - } else return 2; //"Cannot Rotate The Ship To The Requested Direction! Try A New One"; - } else { - if (secondPlayerGridManager.changeDirectionOfShip(secondPlayerShipManager.getShipByShipCode(shipCode), newDirection)) { - return 1; //"The Ship " + shipCode + " Has Been Rotated To The New Direction Successfully"; - } else return 2; //"Cannot Rotate The Ship To The Requested Direction! Try A New One"; - } - } catch (IndexOutOfBoundsException e) { - firstPlayerGridManager.fixTheGrid(); - secondPlayerGridManager.fixTheGrid(); - return 3; //"You Cannot Move The Ship To This Location! Because Part Of Ship Will Be Out Of The Board. Try Another Direction"; - } - } - - private byte bombLocationByPlayer(int xAxis, int yAxis, GridManager playerGridManager, ShipManager playerShipManager, GridManager opponentGridManager, ShipManager opponentShipManager) { - if (playerGridManager.bombLocation(xAxis, yAxis, turn, playerShipManager)) { - if (opponentGridManager.bombLocation(xAxis, yAxis, turn, opponentShipManager)) { - addScore(1, turn); - playerGridManager.wasBombingLocationSuccessful(true, xAxis, yAxis); - if (!(opponentShipManager.isAnyShipDestroyed(opponentGridManager) == -1)) { - addScore(5, turn); - playerGridManager.destroyShip(opponentShipManager.isAnyShipDestroyed(opponentGridManager),turn); - opponentGridManager.destroyShip(opponentShipManager.isAnyShipDestroyed(opponentGridManager),turn); - if (opponentShipManager.areAllShipsDestroyed()) InGameMenu.gameHasEnded(); - return 2; //"You Destroyed Your Opponent's Ship"; - } - return 1; //"Your Bomb Hit The Opponent's Ship"; - } else { - playerGridManager.wasBombingLocationSuccessful(false, xAxis, yAxis); - changeTurn(); - return 0; //"You Missed Your Shot"; - } - } else { - if (playerGridManager.isTheGridFullyBombed() && opponentGridManager.isTheGridFullyBombed()) - InGameMenu.gameHasEnded(); - return 3; //"You Have Already Bombed This Location! Choose Another Location"; - } - } - - private void changeTurn() { - if (turn.equals(firstPlayer)) turn = secondPlayer; - else turn = firstPlayer; - } - - public void putTheShipsOnBoardRandomly(GridManager gridManager, ShipManager shipManager, int boardDimension) { - for (Ship ship : shipManager.getAllShips()) { - ship.setStartPoint(new Coordination(randomNumber(boardDimension), randomNumber(boardDimension))); - int temp = randomNumber(4); - if (temp == 0) ship.setDirection('n'); - else if (temp == 1) ship.setDirection('e'); - else if (temp == 2) ship.setDirection('s'); - else ship.setDirection('w'); - putThisShipOnBoard(ship, gridManager, boardDimension); - } - } - - private void putThisShipOnBoard(Ship ship, GridManager gridManager, int boardDimension) { - try { - gridManager.changeLocationOfShip(ship, randomNumber(boardDimension), randomNumber(boardDimension)); - } catch (IndexOutOfBoundsException e) { - putThisShipOnBoard(ship, gridManager, boardDimension); - } - } - - private int randomNumber(int max) { - SecureRandom rand = new SecureRandom(); - return rand.nextInt(max); - } - - public Player getTurn() { - return turn; - } - - public GridManager getFirstPlayerGridManager() { - return firstPlayerGridManager; - } - - public GridManager getSecondPlayerGridManager() { - return secondPlayerGridManager; - } - - public ShipManager getFirstPlayerShipManager() { - return firstPlayerShipManager; - } - - public ShipManager getSecondPlayerShipManager() { - return secondPlayerShipManager; - } - - public Grid getTurnsOwnBoard(){ - if (turn.equals(firstPlayer)) return firstPlayerGridManager.getPlayerGrid(); - else return secondPlayerGridManager.getPlayerGrid(); - } - - public Grid getTurnsOpponentBoard(){ - if (turn.equals(firstPlayer)) return firstPlayerGridManager.getOpponentGrid(); - else return secondPlayerGridManager.getOpponentGrid(); - } - - public Player getFirstPlayer() { - return firstPlayer; - } - - public Player getSecondPlayer() { - return secondPlayer; - } - - public int getFirstPlayerScore() { - return firstPlayerScore; - } - - public int getSecondPlayerScore() { - return secondPlayerScore; - } - - public void withdraw(){ - if (turn.equals(firstPlayer)) firstPlayerScore=-10; - else secondPlayerScore=-10; - InGameMenu.gameHasEnded(); - } - - public void clearScreen() throws IOException, InterruptedException { - new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); - } -} diff --git a/src/main/java/BattleSea/Controller/GridManager.java b/src/main/java/BattleSea/Controller/GridManager.java deleted file mode 100644 index f09f49b..0000000 --- a/src/main/java/BattleSea/Controller/GridManager.java +++ /dev/null @@ -1,189 +0,0 @@ -package BattleSea.Controller; - -import BattleSea.Model.Coordination; -import BattleSea.Model.Grid; -import BattleSea.Model.Ship; -import Plato.Model.Player; - -public class GridManager { - private final Player owner; - private Grid playerGrid; - private Grid opponentGrid; - private boolean bombingFlag; - - public GridManager(Player owner, int gridDimension) { - this.owner = owner; - playerGrid = new Grid(gridDimension, owner); - opponentGrid = new Grid(gridDimension, owner); - } - - public boolean bombLocation(int xAxis, int yAxis, Player bomber, ShipManager playerShipManager) { - - if (bomber.equals(owner)) { - if(opponentGrid.getLocation(xAxis, yAxis).Bomb()){ - return true; - } else return false; - } else { - playerGrid.getLocation(xAxis, yAxis).Bomb(); - if (playerGrid.getLocation(xAxis, yAxis).isOccupied()) { - playerGrid.getLocation(xAxis, yAxis).setContent("+"); - int shipCode = Integer.parseInt(playerGrid.getLocation(xAxis, yAxis).getContent().split(" ")[1]); - playerShipManager.getShipByShipCode(shipCode).makeItImmovable(); - return true; - } else { - playerGrid.getLocation(xAxis, yAxis).setContent("-"); - playerGrid.getLocation(xAxis, yAxis).occupy(); - return false; - } - } - } - - public void wasBombingLocationSuccessful(boolean answer,int xAxis, int yAxis){ - if (answer){ - opponentGrid.getLocation(xAxis,yAxis).setContent("+"); - } else opponentGrid.getLocation(xAxis,yAxis).setContent("-"); - } - - public boolean changeLocationOfShip(Ship ship, int newStartPointXAxis, int newStartPointYAxis) throws IndexOutOfBoundsException { - boolean flag = true; - int changeInX = newStartPointXAxis - ship.getStartPoint().getXAxis(); - int changeInY = newStartPointYAxis - ship.getStartPoint().getYAxis(); - if (ship.getDirection() == 'n' || ship.getDirection() == 's') { - for (int i = 0; i < ship.getLength(); i++) { - for (int j = 0; j < ship.getWidth(); j++) { - if (ship.getDirection() == 'n') { - if (!reserveLocation(ship, changeInX - i, changeInY + j)) flag = false; - } else { - if (!reserveLocation(ship, changeInX + i, changeInY + j)) flag = false; - } - } - } - } else if (ship.getDirection() == 'w' || ship.getDirection() == 'e') { - for (int i = 0; i < ship.getWidth(); i++) { - for (int j = 0; j < ship.getLength(); j++) { - if (ship.getDirection() == 'w') { - if (!reserveLocation(ship, changeInX + i, changeInY - j)) flag = false; - } else { - if (!reserveLocation(ship, changeInX + i, changeInY + j)) flag = false; - } - } - } - } - if (flag) { - moveShipToReservedLocation(ship); - ship.setStartPoint(playerGrid.getLocation(newStartPointXAxis, newStartPointYAxis)); - } else { - fixTheGrid(); - } - return flag; - } - - public boolean changeDirectionOfShip(Ship ship, char newDirection) throws IndexOutOfBoundsException { - boolean flag = true; - if (newDirection == 'n' || newDirection == 's') { - for (int i = 0; i < ship.getLength(); i++) { - for (int j = 0; j < ship.getWidth(); j++) { - if (newDirection == 'n') { - if (!reserveLocation(ship, -i, +j)) flag = false; - } else { - if (!reserveLocation(ship, +i, +j)) flag = false; - } - } - } - } else if (newDirection == 'w' || newDirection == 'e') { - for (int i = 0; i < ship.getWidth(); i++) { - for (int j = 0; j < ship.getLength(); j++) { - if (newDirection == 'w') { - if (!reserveLocation(ship, +i, -j)) flag = false; - } else { - if (!reserveLocation(ship, +i, +j)) flag = false; - } - } - } - } - - if (flag) { - moveShipToReservedLocation(ship); - ship.setDirection(newDirection); - } else { - fixTheGrid(); - } - return flag; - } - - private boolean reserveLocation(Ship ship, int xAxis, int yAxis) { - if (playerGrid.getLocation(ship.getStartPoint().getXAxis() + xAxis, ship.getStartPoint().getYAxis() + yAxis).isOccupied()) { - if (playerGrid.getLocation(ship.getStartPoint().getXAxis() + xAxis, ship.getStartPoint().getYAxis() + yAxis).getContent().equalsIgnoreCase("ship " + ship.getCode())) { - playerGrid.getLocation(ship.getStartPoint().getXAxis() + xAxis, ship.getStartPoint().getYAxis() + yAxis).setContent("reserve"); - return true; - } else return false; - } else { - playerGrid.getLocation(ship.getStartPoint().getXAxis() + xAxis, ship.getStartPoint().getYAxis() + yAxis).setContent("reserve"); - return true; - } - - } - - public void fixTheGrid() { - for (Coordination[] coordinations : playerGrid.getTheGrid()) { - for (Coordination coordination : coordinations) { - if (coordination.getContent().equalsIgnoreCase("reserve")) coordination.rollbackContentChange(); - } - } - } - - private void moveShipToReservedLocation(Ship ship) { - for (Coordination[] coordinations : playerGrid.getTheGrid()) { - for (Coordination coordination : coordinations) { - if (coordination.getContent().equalsIgnoreCase("ship " + ship.getCode())) { - coordination.setContent(""); - coordination.unoccupy(); - } - if (coordination.getContent().equalsIgnoreCase("reserve")) { - coordination.setContent("ship " + ship.getCode()); - coordination.occupy(); - } - - } - } - } - - public Grid getPlayerGrid() { - return playerGrid.getClone(); - } - - public Grid getOpponentGrid() { - return opponentGrid.getClone(); - } - - public Player getOwner() { - return owner; - } - - public boolean isTheGridFullyBombed(){ - for (Coordination[] coordinations : opponentGrid.getTheGrid()) { - for (Coordination coordination : coordinations) { - if (!coordination.isBombed()) return false; - } - } - return true; - } - - public void destroyShip(int shipCode,Player destroyer){ - if (destroyer.equals(owner)){ - for (Coordination[] coordinations : opponentGrid.getTheGrid()) { - for (Coordination coordination : coordinations) { - if (coordination.getContent().equalsIgnoreCase("ship "+shipCode)) - coordination.setContent("*"); - } - } - }else{ - for (Coordination[] coordinations : playerGrid.getTheGrid()) { - for (Coordination coordination : coordinations) { - if (coordination.getContent().equalsIgnoreCase("ship "+shipCode)) - coordination.setContent("*"); - } - } - } - } -} diff --git a/src/main/java/BattleSea/Controller/ShipManager.java b/src/main/java/BattleSea/Controller/ShipManager.java deleted file mode 100644 index 43eefd1..0000000 --- a/src/main/java/BattleSea/Controller/ShipManager.java +++ /dev/null @@ -1,114 +0,0 @@ -package BattleSea.Controller; - -import BattleSea.Model.Coordination; -import BattleSea.Model.Grid; -import BattleSea.Model.Ship; -import Plato.Model.Player; - -import java.util.ArrayList; - -public class ShipManager { - private ArrayList allShips; - private final Player owner; - - public ShipManager(Player owner, int gridDimension, int numberOfShips) { - this.owner = owner; - allShips = new ArrayList(); - createShips(gridDimension, numberOfShips); - } - - public ArrayList getAllShips() { - return allShips; - } - - public Ship getShipByShipCode(int shipCode) { - return allShips.get(shipCode - 1); - } - - public int isAnyShipDestroyed(GridManager playerGridManager) { - for (Ship ship : allShips) { - if (!ship.isDestroyed()) { - boolean flag = true; - for (Coordination[] line : getShipOnGrid(ship, playerGridManager)) { - for (Coordination coordination : line) { - if (!coordination.getContent().equals("+")) { - flag = false; - break; - } - } - if (!flag) break; - } - if (flag) { - ship.destroy(); - - return ship.getCode(); - } - } - } - return -1; - } - - private void createShips(int gridDimension, int numberOfShips) { - int length = gridDimension / 2; - int width = 2; - for (int i = 0; i < numberOfShips; i++) { - if (i == numberOfShips / 2) { - width--; - length = (gridDimension / 2) - 1; - } - allShips.add(new Ship(i + 1, length, width, owner)); - length--; - } - } - - public Coordination[][] getShipOnGrid(Ship ship, GridManager gridManager) { - Coordination[][] theShip; - if (ship.getDirection() == 'n' || ship.getDirection() == 's') { - theShip = new Coordination[ship.getLength()][ship.getWidth()]; - if (ship.getDirection() == 'n') { - for (int i = ship.getLength() - 1; i >= 0; i--) { - for (int j = 0; j < ship.getWidth(); j++) { - theShip[i][j] = gridManager.getPlayerGrid().getLocation( - ship.getStartPoint().getXAxis() + (i - ship.getLength() + 1), - ship.getStartPoint().getYAxis() + (j)); - } - } - } else { - for (int i = 0; i < ship.getLength(); i++) { - for (int j = 0; j < ship.getWidth(); j++) { - theShip[i][j] = gridManager.getPlayerGrid().getLocation( - ship.getStartPoint().getXAxis() + (i), - ship.getStartPoint().getYAxis() + (j)); - } - } - } - } else { - theShip = new Coordination[ship.getWidth()][ship.getLength()]; - if (ship.getDirection() == 'w') { - for (int j = ship.getLength() - 1; j >= 0; j--) { - for (int i = 0; i < ship.getWidth(); i++) { - theShip[i][j] = gridManager.getPlayerGrid().getLocation( - ship.getStartPoint().getXAxis() + (i), - ship.getStartPoint().getYAxis() + (j - ship.getLength() + 1)); - } - } - } else { - for (int j = 0; j < ship.getLength(); j++) { - for (int i = 0; i < ship.getWidth(); i++) { - theShip[i][j] = gridManager.getPlayerGrid().getLocation( - ship.getStartPoint().getXAxis() + (i), - ship.getStartPoint().getYAxis() + (j)); - } - } - } - } - return theShip; - } - - public boolean areAllShipsDestroyed() { - for (Ship ship : allShips) { - if (!ship.isDestroyed()) return false; - } - return true; - } -} diff --git a/src/main/java/BattleSea/Model/Coordination.java b/src/main/java/BattleSea/Model/Coordination.java deleted file mode 100644 index a71d7c7..0000000 --- a/src/main/java/BattleSea/Model/Coordination.java +++ /dev/null @@ -1,78 +0,0 @@ -package BattleSea.Model; - -public class Coordination implements Comparable { - private final int xAxis; - private final int yAxis; - private String content; - private String previousContent; - private boolean isBombed; - private boolean isOccupied; - - public Coordination(int xAxis, int yAxis) { - this.xAxis = xAxis; - this.yAxis = yAxis; - content=""; - previousContent=""; - } - - public void setContent(String content) { - this.previousContent=this.content; - this.content = content; - } - - public String getPreviousContent() { - return previousContent; - } - - public void rollbackContentChange(){ - this.content=this.previousContent; - } - - public boolean Bomb() { - if (this.isBombed) return false; - else { - this.isBombed = true; - return true; - } - } - - public boolean occupy() { - if (this.isOccupied) return false; - else { - this.isOccupied = true; - return true; - } - } - - public void unoccupy(){ - this.isOccupied=false; - } - - public int getXAxis() { - return xAxis; - } - - public int getYAxis() { - return yAxis; - } - - public String getContent() { - return content; - } - - public boolean isBombed() { - return isBombed; - } - - public boolean isOccupied() { - return isOccupied; - } - - public int compareTo(Coordination o) { - return (this.xAxis - o.getXAxis()) + (this.yAxis - o.getYAxis()); - } - - public Coordination getClone(){ - return new Coordination(this.getXAxis(),this.getYAxis()); - } -} diff --git a/src/main/java/BattleSea/Model/Grid.java b/src/main/java/BattleSea/Model/Grid.java deleted file mode 100644 index abbb62c..0000000 --- a/src/main/java/BattleSea/Model/Grid.java +++ /dev/null @@ -1,49 +0,0 @@ -package BattleSea.Model; - -import Plato.Model.Player; - -public class Grid { - private final int dimension; - private Coordination[][] theGrid; - private final Player owner; - - public Grid(int dimension, Player owner) { - this.dimension = dimension; - theGrid = new Coordination[dimension][dimension]; - for (int i = 0; i < dimension; i++) { - for (int j = 0; j < dimension; j++) { - theGrid[i][j] = new Coordination(i + 1, j + 1); - } - } - this.owner = owner; - } - - public int getDimension() { - return dimension; - } - - public Player getOwner() { - return owner; - } - - public Coordination[][] getTheGrid() { - return theGrid; - } - - public Coordination getLocation(int xAxis, int yAxis) { - return theGrid[xAxis - 1][yAxis - 1].getClone(); - } - - public Grid getClone() { - Grid clone = new Grid(this.dimension, this.owner); - for (int i = 0; i < dimension; i++) { - for (int j = 0; j < dimension; j++) { - clone.getTheGrid()[i][j] = theGrid[i][j].getClone(); - } - } - return clone; - } - -} - - diff --git a/src/main/java/BattleSea/Model/Ship.java b/src/main/java/BattleSea/Model/Ship.java deleted file mode 100644 index c54bfac..0000000 --- a/src/main/java/BattleSea/Model/Ship.java +++ /dev/null @@ -1,71 +0,0 @@ -package BattleSea.Model; - -import Plato.Model.Player; - -public class Ship { - private final Player owner; - private final int code; - private final int length; - private final int width; - private Coordination startPoint; - private char direction; - private boolean isDestroyed; - private boolean isMovable; - - public Ship(int code, int length, int width, Player owner) { - this.code = code; - this.length = length; - this.width = width; - this.owner = owner; - isDestroyed=false; - isMovable=true; - } - - public void setStartPoint(Coordination startPoint) { - this.startPoint = startPoint; - } - - public void setDirection(char direction) { - this.direction = direction; - } - - public int getCode() { - return code; - } - - public int getLength() { - return length; - } - - public int getWidth() { - return width; - } - - public Coordination getStartPoint() { - return startPoint; - } - - public char getDirection() { - return direction; - } - - public Player getOwner() { - return owner; - } - - public boolean isDestroyed() { - return isDestroyed; - } - - public void destroy() { - isDestroyed = true; - } - - public boolean isMovable() { - return isMovable; - } - - public void makeItImmovable(){ - isMovable=false; - } -} diff --git a/src/main/java/BattleSea/View/InGameMenu.java b/src/main/java/BattleSea/View/InGameMenu.java deleted file mode 100644 index ee99c25..0000000 --- a/src/main/java/BattleSea/View/InGameMenu.java +++ /dev/null @@ -1,196 +0,0 @@ -package BattleSea.View; - -import BattleSea.Controller.GameManager; -import Plato.Model.Player; -import Plato.View.Page; - -import java.io.IOException; -import java.util.Scanner; - - -public class InGameMenu { - private GameManager gameManager; - private static boolean isGameEnded; - private Scanner scanner; - - - public InGameMenu(GameManager gameManager, Scanner scanner) { - this.gameManager = gameManager; - this.scanner = scanner; - isGameEnded = false; - } - - public static void gameHasEnded() { - InGameMenu.isGameEnded = true; - } - - public void run() { - System.out.println("to see the input options enter \"help\""); - while (!isGameEnded) { - System.out.println("you are in game menu"); - String input = scanner.nextLine().trim().toLowerCase(); - if (input.equals("help")) { - System.out.println("enter the number of one of these inputs to continue\n" + - "0- show turn\n" + - "1- change location of a ship\n" + - "2- change direction of a ship\n" + - "3- bomb a location\n" + - "4- see your ships \n" + - "5- see locations you bombed\n" + - "6- see your board\n" + - "7- see opponents board\n" + - "8- see scores\n" + - "9- clear screen\n" + - "10- withdraw and quit the game"); - - } else if (input.equalsIgnoreCase("0")) { - showTurn(); - } else if (input.equalsIgnoreCase("1")) { - System.out.print("enter the ship's number:"); - int shipCode = Integer.parseInt(scanner.nextLine().trim()); - System.out.print("\n enter x axis of destination:"); - int xDestination = Integer.parseInt(scanner.nextLine().trim()); - System.out.print("\n enter y axis of destination:"); - int yDestination = Integer.parseInt(scanner.nextLine().trim()); - changeLocation(shipCode, xDestination, yDestination); - } else if (input.equalsIgnoreCase("2")) { - System.out.print("enter the ship's number:"); - int shipCode = Integer.parseInt(scanner.nextLine().trim()); - System.out.print("\n1-north \n2-east \n3-south \n4-west \nenter the direction:"); - int direction = Integer.parseInt(scanner.nextLine().trim()); - if (direction == 1) { - changeDirection(shipCode, 'n'); - } else if (direction == 2) { - changeDirection(shipCode, 'e'); - } else if (direction == 3) { - changeDirection(shipCode, 's'); - } else if (direction == 4) { - changeDirection(shipCode, 'w'); - } else System.out.println("you entered an invalid number"); - } else if (input.equalsIgnoreCase("3")) { - System.out.print("enter x axis of bombing location:"); - int xAxis = Integer.parseInt(scanner.nextLine().trim()); - System.out.print("\n enter y axis of bombing location:"); - int yAxis = Integer.parseInt(scanner.nextLine().trim()); - bombLocation(xAxis, yAxis); - } else if (input.equalsIgnoreCase("4")) { - - } else if (input.equalsIgnoreCase("5")) { - - } else if (input.equalsIgnoreCase("6")) { - showPlayerGameBoard(); - } else if (input.equalsIgnoreCase("7")) { - showOpponentGameBoard(); - } else if (input.equalsIgnoreCase("8")) { - showScores(); - } else if (input.equalsIgnoreCase("9")) { - clearScreen(); - } else if (input.equalsIgnoreCase("10")) { - withdraw(); - } else System.err.println("invalid input.\n to see the input options enter \"help\""); - } - finalizingTheGame(); - } - - private void finalizingTheGame(){ - - } - - private void withdraw(){ - gameManager.withdraw(); - } - - private void clearScreen(){ - try{ - gameManager.clearScreen(); - } catch (InterruptedException | IOException ignored) { - - } - } - - private void showTurn() { - System.out.println("It's " + gameManager.getTurn().getFirstname() + " " + gameManager.getTurn().getLastname() + "'s turn"); - } - - private void changeDirection(int shipCode, char direction) { - if (gameManager.changeDirectionOfShip(shipCode, direction) == 0) { - System.out.println("This Ship Cannot Rotate Because It Is Partially or Completely destroyed"); - } else if (gameManager.changeDirectionOfShip(shipCode, direction) == 1) { - System.out.println("The Ship " + shipCode + " Has Been Rotated To The New Direction Successfully"); - } else if (gameManager.changeDirectionOfShip(shipCode, direction) == 2) { - System.out.println("Cannot Rotate The Ship To The Requested Direction!"); - } else - System.out.println("You Cannot Move The Ship To This Location! Because Part Of Ship Will Be Out Of The Board!"); - } - - private void changeLocation(int shipCode, int xDestination, int yDestination) { - if (gameManager.changeLocationOfShip(shipCode, xDestination, yDestination) == 0) { - System.out.println("This Ship Cannot Move Because It Is Partially or Completely destroyed"); - } else if (gameManager.changeLocationOfShip(shipCode, xDestination, yDestination) == 1) { - System.out.println("The Ship " + shipCode + " Has Been Moved To The New Location Successfully"); - } else if (gameManager.changeLocationOfShip(shipCode, xDestination, yDestination) == 2) { - System.out.println("Cannot Move The Ship To The Requested Location!"); - } else - System.out.println("You Cannot Move The Ship To This Location Because Part Of Ship Will Be Out Of The Board!"); - - } - - private void bombLocation(int xAxis, int yAxis) { - if (gameManager.getTurnsOwnBoard().getDimension() < xAxis || - gameManager.getTurnsOwnBoard().getDimension() < yAxis || - xAxis < 1 || yAxis < 1) - System.out.println("Please Choose a Location Inside The Game Board"); - else { - if (gameManager.bombLocation(xAxis, yAxis) == 0) { - System.out.println("You Missed Your Shot"); - changeTurn(); - } else if (gameManager.bombLocation(xAxis, yAxis) == 1) { - System.out.println("Your Bomb Hit The Opponent's Ship"); - } else if (gameManager.bombLocation(xAxis, yAxis) == 2) { - System.out.println("You Destroyed Your Opponent's Ship"); - } else System.out.println("You Have Already Bombed This Location!"); - } - } - - public void showPlayerGameBoard() { - for (int i = 0; i < gameManager.getTurnsOwnBoard().getDimension(); i++) { - System.out.print("|"); - for (int j = 0; j < gameManager.getTurnsOwnBoard().getDimension(); j++) { - if (gameManager.getTurnsOwnBoard().getLocation(i, j).getContent().equalsIgnoreCase("")) - System.out.print(" " + "|"); - else System.out.print(gameManager.getTurnsOwnBoard().getLocation(i, j).getContent() + "|"); - } - System.out.println(); - } - } - - public void showOpponentGameBoard() { - for (int i = 0; i < gameManager.getTurnsOpponentBoard().getDimension(); i++) { - System.out.print("|"); - for (int j = 0; j < gameManager.getTurnsOpponentBoard().getDimension(); j++) { - if (gameManager.getTurnsOpponentBoard().getLocation(i, j).getContent().equalsIgnoreCase("")) - System.out.print(" " + "|"); - else System.out.print(gameManager.getTurnsOpponentBoard().getLocation(i, j).getContent() + "|"); - } - System.out.println(); - } - } - - public void showShips(String setting) { - - } - - public void showBombardLocations(String setting) { - - } - - public void showScores() { - System.out.println(gameManager.getFirstPlayer().getFirstname() + " " + gameManager.getFirstPlayer().getLastname() + " : " + gameManager.getFirstPlayerScore() + - gameManager.getSecondPlayer().getFirstname() + " " + gameManager.getSecondPlayer().getLastname() + " : " + gameManager.getSecondPlayerScore()); - } - - public void changeTurn() { - System.out.println("Next Player's Turn!"); - } - -} diff --git a/src/main/java/BattleSea/View/StartingPage.java b/src/main/java/BattleSea/View/StartingPage.java deleted file mode 100644 index e611dbc..0000000 --- a/src/main/java/BattleSea/View/StartingPage.java +++ /dev/null @@ -1,12 +0,0 @@ -package BattleSea.View; - -import Plato.View.Page; - -public class StartingPage extends Page { - - - - public Page run() { - return null; - } -} diff --git a/src/main/java/Main.java b/src/main/java/Main.java deleted file mode 100644 index 6f929bb..0000000 --- a/src/main/java/Main.java +++ /dev/null @@ -1,21 +0,0 @@ -import Plato.Controller.LoginPageController; -import Plato.Model.Game; -import Plato.View.LoginPage; -import Plato.View.Page; - -import java.io.FileNotFoundException; - -public class Main { - - public static void main(String[] args) { - Page page = LoginPage.getInstance(); - - //update and read resourses shoud add in this line - - LoginPageController.addTheGames(); - - while (page != null) { - page = page.run(); - } - } -} diff --git a/src/main/java/Plato/Controller/FriendsMenuController.java b/src/main/java/Plato/Controller/FriendsMenuController.java deleted file mode 100644 index efd2f67..0000000 --- a/src/main/java/Plato/Controller/FriendsMenuController.java +++ /dev/null @@ -1,124 +0,0 @@ -package Plato.Controller; - -import Plato.Model.Player; - -import java.util.ArrayList; - -public class FriendsMenuController { - private static FriendsMenuController friendsMenuController = new FriendsMenuController(); - - public static FriendsMenuController getInstance() { - return friendsMenuController; - } - - public String showFriendsController(){ - Player player = (Player) LoginPageController.user; - String friends = null; - try { - for (Player friend : player.getFriends()) { - friends=friends+friend.getUsername(); - friends=friends+" "; - friends=friends+friend.getUserID(); - friends=friends+" "; - } - if (friends.equals(null)) { - - return "nothing found"; - } - else { - return friends; - } - - } catch (Exception e) { - return "nothing found"; - } - - } - - - public String getPersonByName(String name) { - ArrayList persons = Player.getPlayers(); - for (Player person : persons) { - if (person.getUsername().equals(name)) - { - String personInfo; - personInfo=person.getFirstname()+" "+person.getLastname()+" "+person.getUserID()+" "+person.getUsername()+" "+" "+person.getEmail()+" "+"\n"; - personInfo=personInfo+person.getDaysPassedRegister()+" "+person.getScore()+" "+person.getMoney()+"\n"; - return personInfo; - } - } - return "player not found"; - } - - public void removeFriend(String username) { - Player player = (Player) LoginPageController.user; - for (Player friend : player.getFriends()) { - if (friend.getUsername().equals(username)) - { - player.getFriends().remove(friend); - break; - } - } - } - - public void addFriend(String username) { - Player player = (Player) LoginPageController.user; - for (Player player1 : Player.getPlayers()) { - if (player1.getUsername().equals(username)) - { - player1.getFriendRequests().add(player); - break; - } - } - } - - public String showFriendRequests() { - Player player = (Player) LoginPageController.user; - StringBuilder requests = new StringBuilder(); - for (Player friendRequest : player.getFriendRequests()) { - requests.append(friendRequest.getUsername()+" "+friendRequest.getUserID()+" "+friendRequest.getScore()+" "+friendRequest.getMoney()+"\n"); - } - return String.valueOf(requests); - } - - public void acceptFrend(String username) { - Player player = (Player) LoginPageController.user; - for (Player friend : player.getFriendRequests()) { - if (friend.getUsername().equals(username)) - { - friend.getMessages().add("friend request accepted by : "+player.getUsername()); - friend.getMessagesShown().add(false); - player.getFriends().add(friend); - player.getFriendRequests().remove(friend); - break; - } - } - } - - public void declineFriend(String username) { - Player player = (Player) LoginPageController.user; - for (Player friend : player.getFriendRequests()) { - if (friend.getUsername().equals(username)) - { - friend.getMessages().add("friend request declined by : "+player.getUsername()); - friend.getMessagesShown().add(false); - player.getFriendRequests().remove(friend); - break; - } - } - } - - public String showUnShownMessages() { - String messages = "\n"; - Player player = (Player) LoginPageController.user; - for (int i=0;i admins = Admin.getAdmins(); - for (Admin admin : admins) { - users.append(admin.getFirstname()+" "+admin.getLastname()+" "+admin.getUserID()+" "+admin.getUsername()+" "+admin.getPassword()+" "+admin.getEmail()+" "+admin.getPhoneNumber()+"\n"); - } - ArrayList players = Player.getPlayers(); - for (Player player : players) { - users.append(player.getFirstname()+" "+player.getLastname()+" "+player.getUserID()+" "+player.getUsername()+" "+player.getPassword()+" "+player.getEmail()+" "+player.getPhoneNumber()+"\n"); - users.append(player.getDaysPassedRegister()+" "+player.getScore()+" "+player.getMoney()+"\n"+"\n"); - - } - return String.valueOf(users); - - } - - public String getUser(int id) { - StringBuilder userInfo = new StringBuilder(); - Player user = null; - Player checker = null; - try { - user = Player.getPlayerByID(id); - if (user.equals(checker)) - { - return "player not found"; - } - } catch (Exception e) { - return "player not found"; - } - - userInfo.append(user.getFirstname()+" "+user.getLastname()+" "+user.getUserID()+" "+user.getUsername()+" "+user.getPassword()+" "+user.getEmail()+" "+user.getPhoneNumber()+"\n"); - userInfo.append(user.getDaysPassedRegister()+" "+user.getScore()+" "+user.getMoney()+"\n"); - for (Player friend : user.getFriends()) { - userInfo.append(friend.getUserID()+" "+friend.getUsername()+"\n"); - } - for (int i=Log.getLogs().size()-1; i>0;i--) - { - if (Log.getLogs().get(i).getPlayer1().equals(user)||Log.getLogs().get(i).getPlayer2().equals(user)) - { - userInfo.append(Log.getLogs().get(i).toString()); - userInfo.append("\n"); - } - - } - for (Game suggestedGame : user.getSuggestedGames()) { - userInfo.append(suggestedGame.getName()+" "+suggestedGame.getGameID()+"\n"); - } - return String.valueOf(userInfo); - } - - public String viewSuggestions() { - StringBuilder games = new StringBuilder(); - - - try { - for (Player player : Player.getPlayers()) { - for (int i=0;imax){ - max=integer; - } - } - } - player.getSuggestionID().add(max); - } - } - } - } - } - } - } - - public void removeSuggestion(int id) { - for (Player player : Player.getPlayers()) { - for (int i=0;i=event.getStartDate().getTimeInMillis()) - { - event.setHasStarted(true); - } - } - } - } - - public void endEvent(int id) { - for (Event event : Event.getEvents()) { - if (event.getEventId()==id) - { - GregorianCalendar now = new GregorianCalendar(); - - if (now.getTimeInMillis()>=event.getStartDate().getTimeInMillis()) - { - event.setHasEnded(true); - } - } - } - } - - public void changeGameName(int id, String newName) { - for (Game game : Game.getGames()) { - if (game.getGameID()==id) - { - game.setName(newName); - } - } - } -} diff --git a/src/main/java/Plato/Controller/MainPagePlayerController.java b/src/main/java/Plato/Controller/MainPagePlayerController.java deleted file mode 100644 index 4e12552..0000000 --- a/src/main/java/Plato/Controller/MainPagePlayerController.java +++ /dev/null @@ -1,142 +0,0 @@ -package Plato.Controller; - -import Plato.Model.*; - -public class MainPagePlayerController { - private static MainPagePlayerController mainPagePlayerController = new MainPagePlayerController(); - - public static MainPagePlayerController getInstance() { - return mainPagePlayerController; - } - - public String showPointController(){ - Player player = (Player) LoginPageController.user; - int score = player.getScore(); - return String.valueOf(score); - } - - public String viewFavoriteGames() { - Player player = (Player) LoginPageController.user; - String favorites = null; - try { - for (Game favorite : player.getFavorites()) { - favorites += favorite.getName() + "\n"; - } - if (favorites.equals(null)) - { - return "nothing found"; - } - return favorites; - } catch (Exception e) { - return "nothing found"; - } - - } - - public String platobotMessages() { - String messages = null; - try { - for (int i=0;i-1;i--) - { - if (Log.getLogs().get(i).getPlayer1().equals(player)||Log.getLogs().get(i).getPlayer2().equals(player)) - { - log = Log.getLogs().get(i).toString(); - return log; - } - - } - return "player didnt played yet"; - } - - public boolean isSuggestedGameValid(int id) { - Player player = (Player) LoginPageController.user; - try { - for (Game suggestedGame : player.getSuggestedGames()) { - if (suggestedGame.getGameID()==id){ - return true; - } - } - } catch (Exception e) { - return false; - } - - return false; - } - - public void addFriend(String username) { - Player player1 = (Player) LoginPageController.user; - for (Player player : Player.getPlayers()) { - if (player.getUsername().equals(username)){ - player.getFriendRequests().add(player1); - } - } - } - - public void joinEvent(int id) { - Player player1 = (Player) LoginPageController.user; - for (Event event : Event.getEvents()) { - if (event.getEventId()==id) - { - event.getPlayersOfThisEvent().add(player1); - } - } - } - public String reversiName() - { - for (Game game : Game.getGames()) { - if (game.getGameID()==1) - { - return game.getName(); - } - } - return "error"; - } - public String battleSeaName() - { - for (Game game : Game.getGames()) { - if (game.getGameID()==2) - { - return game.getName(); - } - } - return "error"; - } -} diff --git a/src/main/java/Plato/Controller/UserPageController.java b/src/main/java/Plato/Controller/UserPageController.java deleted file mode 100644 index 88d0729..0000000 --- a/src/main/java/Plato/Controller/UserPageController.java +++ /dev/null @@ -1,61 +0,0 @@ -package Plato.Controller; - -/*import Plato.Model.Admin; -import Plato.Model.Player; -import Plato.Model.User; -import Plato.View.Page; - -public class UserPageController extends Page { - public static User user; - private static UserPageController userPageController = new UserPageController(); - - public static UserPageController getInstance() { - return userPageController; - } - public void changePasswordController(String old, String newPassword){ - if(LoginPageController.user.getPassword() != old) - System.out.println("the old password isn't true!"); - else - LoginPageController.user.editInformation(LoginPageController.user.getUserID(),"password",newPassword); - } - public void deleteAccount() { - User.deleteUserAccount(LoginPageController.user.getUserID()); - if (LoginPageController.user.isAdmin()) - { - Admin.deleteAdminAccount(LoginPageController.user.getUserID()); - } - else { - Player.deletePlayerAccount(LoginPageController.user.getUserID()); - } - } - public void setUserController(User user) { - - } - public String ViewAccountMenuController(){ - return null; - } - private String ViewPersonalInfoViewController(){ - return null; - } - private void ChangePasswordViewController(String old,String new1){ - - } - private void EditViewController(String field ,String new1){ - - } - private String ViewPlatoStatisticsViewController(){ - return null; - } - private String GamesHistoryViewController(){ - return null; - } - private String GameStatisticsController(String gameName){ - return null; - } - private Page LogoutController(){ - return null; - } - public Page run() { - return null; - } -}*/ diff --git a/src/main/java/Plato/Model/Admin.java b/src/main/java/Plato/Model/Admin.java deleted file mode 100644 index a37b8ce..0000000 --- a/src/main/java/Plato/Model/Admin.java +++ /dev/null @@ -1,40 +0,0 @@ -package Plato.Model; - -import java.util.ArrayList; - -public class Admin extends User{ - private static ArrayList admins =new ArrayList(); - private static ArrayList messages = new ArrayList(); - public static ArrayList getAdmins() { - return admins; - } - - public void addNewAdmin(String username, String password, String email, String firstname, String lastname, String phoneNumber) throws Exception { - for (User allUser : User.getAllUsers()) { - if ((allUser.getUsername().equals(username))||(allUser.getEmail().equals(email))) - { - Exception exception = new Exception(); - throw exception; - } - } - Admin admin = new Admin(); - admin.setAdmin(true); - admin.setEmail(email); - admin.setFirstname(firstname); - admin.setLastname(lastname); - admin.setPassword(password); - admin.setPhoneNumber(phoneNumber); - admin.setUsername(username); - admin.setUserID(User.getAllUsers().size()+1); - User.getAllUsers().add(admin); - admins.add(admin); - - } - - public Admin() { - } - - public static ArrayList getMessages() { - return messages; - } -} diff --git a/src/main/java/Plato/Model/Event.java b/src/main/java/Plato/Model/Event.java deleted file mode 100644 index efc5861..0000000 --- a/src/main/java/Plato/Model/Event.java +++ /dev/null @@ -1,123 +0,0 @@ -package Plato.Model; - -import java.util.ArrayList; -import java.util.Date; -import java.util.GregorianCalendar; - -public class Event { - private static ArrayList events = new ArrayList(); - private ArrayList playersOfThisEvent = new ArrayList(); - private Game game; - private GregorianCalendar startDate; - private GregorianCalendar endDate; - private int eventScore; - private int eventId; - private boolean hasStarted; - private boolean hasEnded; - - public Event( Game game, GregorianCalendar startDate, GregorianCalendar endDate, int eventScore) { - this.game = game; - this.startDate = startDate; - this.endDate = endDate; - this.eventScore = eventScore; - this.eventId = events.size()+1; - this.hasStarted = false; - this.hasEnded = false; - } - - - - public static ArrayList getEvents() { - return events; - } - - public static void setEvents(ArrayList events) { - Event.events = events; - } - - public ArrayList getPlayersOfThisEvent() { - return playersOfThisEvent; - } - - public void setPlayersOfThisEvent(ArrayList playersOfThisEvent) { - this.playersOfThisEvent = playersOfThisEvent; - } - - public Game getGame() { - return game; - } - - - - public int getEventScore() { - return eventScore; - } - - public void setEventScore(int eventScore) { - this.eventScore = eventScore; - } - - public int getEventId() { - return eventId; - } - - public void setEventId(int eventId) { - this.eventId = eventId; - } - - public boolean isHasStarted() { - return hasStarted; - } - - public void setHasStarted(boolean hasStarted) { - this.hasStarted = hasStarted; - } - - public boolean isHasEnded() { - return hasEnded; - } - - public void setHasEnded(boolean hasEnded) { - this.hasEnded = hasEnded; - } - - public void startEvent(int eventId){ - - } - public void endEvent(int eventId){ - - } - public static void removeEvent(int eventId){ - - } - public static Event getEvent(int eventId){ - return null; - } - - public void joinEvent(Player player){ - - } - public void quitEvent(Player player){ - - } - - public void setGame(Game game) { - this.game = game; - } - - public GregorianCalendar getStartDate() { - return startDate; - } - - public void setStartDate(GregorianCalendar startDate) { - this.startDate = startDate; - } - - public GregorianCalendar getEndDate() { - return endDate; - } - - public void setEndDate(GregorianCalendar endDate) { - this.endDate = endDate; - } -} diff --git a/src/main/java/Plato/Model/Game.java b/src/main/java/Plato/Model/Game.java deleted file mode 100644 index 8e82113..0000000 --- a/src/main/java/Plato/Model/Game.java +++ /dev/null @@ -1,32 +0,0 @@ -package Plato.Model; - -import BattleSea.Controller.BattleSea; -import Reversi.ReversiController; -import java.util.ArrayList; - -public class Game { - private static ArrayList games = new ArrayList(); - private String name; - private int gameID; - - - public static ArrayList getGames() { - return games; - } - - public String getName() { - return name; - } - - public int getGameID() { - return gameID; - } - - public void setName(String name) { - this.name = name; - } - - public void setGameID(int gameID) { - this.gameID = gameID; - } -} diff --git a/src/main/java/Plato/Model/Log.java b/src/main/java/Plato/Model/Log.java deleted file mode 100644 index bca4502..0000000 --- a/src/main/java/Plato/Model/Log.java +++ /dev/null @@ -1,62 +0,0 @@ -package Plato.Model; - -import java.time.LocalDate; -import java.util.ArrayList; - -public class Log { - //fields - private static ArrayList logs = new ArrayList(); - private int gameID; - private Player player1; - private Player player2; - private Player winner; - private LocalDate finishTime; - - //constructor - public Log( int gameID, Player player1,Player player2, Player winner) { - this.gameID = gameID; - this.player1 = player1; - this.player2 = player2; - this.winner = winner; - this.finishTime = java.time.LocalDate.now(); - } - - //getter methods - public int getGameID() { - return gameID; - } - public static ArrayList getLogs() { - return logs; - } - public Player getPlayer1() { - return player1; - } - public Player getPlayer2() { - return player2; - } - public Player getWinner() { - return winner; - } - public LocalDate getFinishTime() { - return finishTime; - } - - //add a log - public static void addLog(int gameID, Player player1, Player player2, Player winner){ - Log log = new Log(gameID, player1, player2, winner); - logs.add(log); - } - - //overriding toString method - @Override - public String toString() { - return - "gameID=" + gameID + - "\n player1=" + player1 + - "\n player2=" + player2 + - "\n winner=" + winner + - "\n finishTime=" + finishTime - ; - } - -} diff --git a/src/main/java/Plato/Model/Player.java b/src/main/java/Plato/Model/Player.java deleted file mode 100644 index c5767b1..0000000 --- a/src/main/java/Plato/Model/Player.java +++ /dev/null @@ -1,281 +0,0 @@ -package Plato.Model; - - -import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Date; - -public class Player extends User{ - //fields - private static ArrayList players = new ArrayList(); - private LocalDate registerTime; - private int money; - private int score; - private int reversiWins; - private int reversiDraws; - private int reversiLosses; - private int reversiPlayedCount; - private int reversiPoints; - private int battleSeaWins; - private int battleSeaDraws; - private int battleSeaLosses; - private int battleSeaPlayedCount; - private int battleSeaPoints; - private ArrayList friends = new ArrayList(); - private ArrayList friendRequests = new ArrayList(); - private ArrayList suggestedGames = new ArrayList(); - private ArrayList suggestionID = new ArrayList(); - private ArrayList favorites = new ArrayList(); - private ArrayList messages = new ArrayList(); - private ArrayList messagesShown = new ArrayList(); - - //constructor - public Player() { - this.money = 0; - this.score = 0; - this.reversiWins = 0; - this.reversiDraws = 0; - this.reversiLosses = 0; - this.reversiPlayedCount = 0; - this.reversiPoints = 0; - this.battleSeaWins = 0; - this.battleSeaDraws = 0; - this.battleSeaLosses = 0; - this.battleSeaPlayedCount = 0; - this.battleSeaPoints = 0; - this.registerTime = java.time.LocalDate.now(); - } - - //remove the player from the list of players - public static void deletePlayerAccount(int ID){ - for (Player player : players) { - if (player.getUserID()==ID) { - players.remove(player); - return; - } - - } - } - - //overriding equals method for Player class - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - Player player = (Player) o; - return this.getUsername().equals(player.getUsername()); - } - - //adder and getter methods - public ArrayList getSuggestionID() { - return suggestionID; - } - public ArrayList getFavorites() { - return favorites; - } - public void addScore(){ - this.score += 1; - } - public LocalDate getRegisterTime() { - return registerTime; - } - public ArrayList getMessages() { - return messages; - } - public ArrayList getMessagesShown() { - return messagesShown; - } - public void addFavorite(int id){ - for (Game game : Game.getGames()){ - if (game.getGameID()==id){ - if(!this.getFavorites().contains(game)) - this.getFavorites().add(game); - } - } - - } - public void addReversiWins(){ - this.reversiWins++; - } - public int getReversiWins() { - return reversiWins; - } - public void addReversiDraws(){ - this.reversiDraws++; - } - public int getReversiDraws() { - return reversiDraws; - } - public void addReversiLosses(){ - this.reversiLosses++; - } - public int getReversiLosses() { - return reversiLosses; - } - public void addReversiPlayedCount(){ - this.reversiPlayedCount++; - } - public int getReversiPlayedCount() { - return reversiPlayedCount; - } - public void addReversiPoints(){ - this.reversiPoints++; - } - public int getReversiPoints() { - return reversiPoints; - } - public void addBattleSeaWins(){ - this.battleSeaWins++; - } - public int getBattleSeaWins() { - return battleSeaWins; - } - public void addBattleSeaDraws(){ - this.battleSeaDraws++; - } - public int getBattleSeaDraws() { - return battleSeaDraws; - } - public void addBattleSeaLosses(){ - this.battleSeaLosses++; - } - public int getBattleSeaLosses(){ - return battleSeaLosses; - } - public void addBattleSeaPlayedCount(){ - this.battleSeaPlayedCount++; - } - public int getBattleSeaPlayedCount() { - return battleSeaPlayedCount; - } - public void addBattleSeaPoints(int point){ - this.battleSeaPoints += point; - } - public int getBattleSeaPoints() { - return battleSeaPoints; - } - public int getDaysPassedRegister() { - LocalDate now = java.time.LocalDate.now(); - return ( (getRegisterTime().getYear() - now.getYear()) * 365 + (getRegisterTime().getDayOfYear() - now.getDayOfYear()) ); - } - public static ArrayList getPlayers() { - return players; - } - public int getMoney() { - return money; - } - public int getScore() { - return score; - } - public ArrayList getFriends() { - return friends; - } - public ArrayList getFriendRequests() { - return friendRequests; - } - public ArrayList getSuggestedGames() { - return suggestedGames; - } - - //return the player with id entered - public static Player getPlayerByID(int id){ - for (Player player : players) { - if (player.getUserID()==id){ - return player; - } - - } - return null; - } - - //sort for ReversiMenu - public static ArrayList sortForReversiMenu(ArrayList players){ - int n = players.size(); - for (int i = 0; i < n - 1; i++) - for (int j = 0; j < n - i - 1; j++) { - if (players.get(j).getReversiPoints() > players.get(j + 1).getReversiPoints()) { - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } else if (players.get(j).getReversiPoints() == players.get(j + 1).getReversiPoints()) { - if(players.get(j).getReversiWins() > players.get(j + 1).getReversiWins()){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - else if(players.get(j).getReversiWins() == players.get(j + 1).getReversiWins()){ - if(players.get(j).getReversiDraws() > players.get(j + 1).getReversiDraws()){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - else if(players.get(j).getReversiDraws() == players.get(j + 1).getReversiDraws()){ - if(players.get(j).getReversiLosses() < players.get(j + 1).getReversiLosses()){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - else if(players.get(j).getReversiLosses() == players.get(j + 1).getReversiLosses()){ - if(players.get(j).getUsername().compareToIgnoreCase(players.get(j + 1).getUsername()) < 0){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - } - } - } - } - } - return players; - } - - //sort for BattleSeaMenu - public static ArrayList sortForBattleSeaMenu(ArrayList players){ - int n = players.size(); - for (int i = 0; i < n - 1; i++) - for (int j = 0; j < n - i - 1; j++) { - if (players.get(j).getBattleSeaPoints() > players.get(j + 1).getBattleSeaPoints()) { - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - else if (players.get(j).getBattleSeaPoints() == players.get(j + 1).getBattleSeaPoints()) { - if(players.get(j).getBattleSeaWins() > players.get(j + 1).getBattleSeaWins()){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - else if(players.get(j).getBattleSeaWins() == players.get(j + 1).getBattleSeaWins()){ - if(players.get(j).getBattleSeaDraws() > players.get(j + 1).getBattleSeaDraws()){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - else if(players.get(j).getBattleSeaDraws() == players.get(j + 1).getBattleSeaDraws()){ - if(players.get(j).getBattleSeaLosses() < players.get(j + 1).getBattleSeaLosses()){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - else if(players.get(j).getBattleSeaLosses() == players.get(j + 1).getBattleSeaLosses()){ - if(players.get(j).getUsername().compareToIgnoreCase(players.get(j + 1).getUsername()) < 0){ - players.add(j, players.get(j + 1)); - players.remove(j + 2); - } - } - } - } - } - } - return players; - } - - //returning the level of battle sea - public int getBattleSeaLevel(){ - return (this.battleSeaPoints / 10); - } - - //returning the level of reversi - public int getReversiLevel(){ - return (this.reversiPoints / 10); - } - - //edit information - @Override - public void editInformation(String type, String newValue) { - super.editInformation(type, newValue); - } -} diff --git a/src/main/java/Plato/Model/User.java b/src/main/java/Plato/Model/User.java deleted file mode 100644 index 853bbc3..0000000 --- a/src/main/java/Plato/Model/User.java +++ /dev/null @@ -1,132 +0,0 @@ -package Plato.Model; - -import java.util.ArrayList; - -public abstract class User { - private static ArrayList allUsers = new ArrayList(); - private String firstname; - private String lastname; - private String username; - private int userID; - private String password; - private String email; - private String phoneNumber; - private boolean isAdmin; - private static boolean isMainAdminJoinnt=false; - public void editInformation(String type, String newValue){ - if(type.equals("firstname")){ - this.firstname = newValue; - System.out.println("firstname updated!"); - } - else if(type.equals("lastname")){ - this.lastname = newValue; - System.out.println("lastname updated!"); - } - else if(type.equals("username")){ - this.username = newValue; - System.out.println("username updated!"); - } - else if(type.equals("email")){ - this.firstname = newValue; - System.out.println("email updated!"); - } - else if(type.equals("phoneNumber")){ - this.firstname = newValue; - System.out.println("phone number updated!"); - } - } - public static User login(String username, String password){ - return null; - } - - public String getFirstname() { - return firstname; - } - - public void setFirstname(String firstname) { - this.firstname = firstname; - } - - public String getLastname() { - return lastname; - } - - public void setLastname(String lastname) { - this.lastname = lastname; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public int getUserID() { - return userID; - } - - public void setUserID(int userID) { - this.userID = userID; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public boolean isAdmin() { - return isAdmin; - } - - public void setAdmin(boolean admin) { - isAdmin = admin; - } - - public static ArrayList getAllUsers() { - return allUsers; - } - - public static void setAllUsers(ArrayList allUsers) { - User.allUsers = allUsers; - } - - public static boolean isIsMainAdminJoinnt() { - return isMainAdminJoinnt; - } - - public static void setIsMainAdminJoinnt(boolean isMainAdminJoinnt) { - User.isMainAdminJoinnt = isMainAdminJoinnt; - } - - public static void deleteUserAccount(int ID){ - for (User user : allUsers) { - if (user.getUserID()==ID) - { - allUsers.remove(user); - break; - } - } - } - -} diff --git a/src/main/java/Plato/View/BattleSeaMenu.java b/src/main/java/Plato/View/BattleSeaMenu.java deleted file mode 100644 index 9ff3f0f..0000000 --- a/src/main/java/Plato/View/BattleSeaMenu.java +++ /dev/null @@ -1,122 +0,0 @@ -package Plato.View; - -import BattleSea.Controller.BattleSea; -import Plato.Controller.LoginPageController; -import Plato.Model.Log; -import Plato.Model.Player; -import Reversi.ReversiController; - -import java.util.ArrayList; -import java.util.Scanner; - -public class BattleSeaMenu extends Page{ - public static BattleSeaMenu battleSeaMenu = new BattleSeaMenu(); - private static final int gameID = 2; - public Page run() { - String input; - Scanner scanner = new Scanner(System.in); - Page.seenPages.add(BattleSeaMenu.battleSeaMenu); - while(true){ - input = scanner.nextLine(); - if(input.trim().equalsIgnoreCase("Show scoreboard")){ - ArrayList playersThatHasPlayedBattleSea = new ArrayList(); - for (Player player : Player.getPlayers()) { - if(player.getBattleSeaPlayedCount() > 0) - playersThatHasPlayedBattleSea.add(player); - } - playersThatHasPlayedBattleSea = Player.sortForReversiMenu(playersThatHasPlayedBattleSea); - int n = playersThatHasPlayedBattleSea.size(); - for (int i = n - 1; i >= 0; i--) { - System.out.println("1." + playersThatHasPlayedBattleSea.get(i).getUsername() + " point: " + - playersThatHasPlayedBattleSea.get(i).getReversiPoints() + - " wins: " + playersThatHasPlayedBattleSea.get(i).getReversiWins() + - " draws: " + playersThatHasPlayedBattleSea.get(i).getReversiDraws() + - " losses: " + playersThatHasPlayedBattleSea.get(i).getReversiLosses()); - } - } - else if( input.trim().equalsIgnoreCase("Details")){ - System.out.println("Object of Game\n" + - "Sea Battle is a 2 players game where players take turns trying to destroy the other player's fleet of ships on a 10x10 grid:\n" + - "\n" + - "The game is played in 2 phases: 1. Ship Placement Phase and 2. Attack Phase\n" + - "Ship Placement Phase\n" + - "At the start of each game, you must place your ships on the ocean grid:\n" + - "\n" + - "Each player starts out with 6 ships. Below are the ship and their corresponding sizes:\n" + - "\n" + - "To place a ship, you can tap and drag a ship to any available area.\n" + - "You can rotate a ship by simply tapping on it.\n" + - "You can also tap on \"Random\" button to randomly assign placement to each ship\n" + - "Once you've finished placing your ships, tap on the green \"Ready\" button.\n" + - "Attack Phase\n" + - "When both players have taped on their \"Ready\" button, the Attack Phase will now start.\n" + - "Both players will now see the following game board:\n" + - "\n" + - "The larger grid in the center represents your opponent's area. The smaller grid at the bottom represents your are and your ships.\n" + - "When it is your turn, tap on the square on the main grid you wish to attack. A miss is marked with a white \"X.\" A hit will be marked with a red crosshair marker.\n" + - "Every time you hit an enemy ship, you get another turn. When you miss, your turn is over.\n" + - "When you've sunk your opponent's ship, that ship will appear on the main grid.\n" + - "The first person to sink all five of his/her opponent's ships wins the game."); - } - else if( input.trim().equalsIgnoreCase("Show log")){ - for (Log log : Log.getLogs()) - if(log.getGameID() == 2){ - System.out.println("a match between " + log.getPlayer1().getUsername() + " and " + - log.getPlayer2().getUsername() + " has been done and " + log.getWinner().getUsername() + - " has won this match." + "(" + log.getFinishTime() + ")"); - } - } - else if( input.trim().equalsIgnoreCase("Show wins count")){ - System.out.println("player with username " + LoginPageController.user.getUsername() + - " has won " + ( (Player)LoginPageController.user).getBattleSeaWins() + " time(s) in BattleSea."); - } - else if( input.trim().equalsIgnoreCase("Show played count")){ - System.out.println("player with username " + LoginPageController.user.getUsername() + - " has played " + ( (Player)LoginPageController.user).getBattleSeaPlayedCount() + " time(s) in BattleSea."); - } - else if( input.trim().equalsIgnoreCase("Add to favorites")){ - ((Player)LoginPageController.user).addFavorite(2); - } - else if( input.trim().equalsIgnoreCase("Run game")){ - System.out.println("please enter username:"); - String username = scanner.nextLine(); - System.out.println("please enter password:"); - String password = scanner.nextLine(); - try { - Player secondPlayer = LoginPageController.loginSecond(username,password); - //event score - - } catch (Exception e) { - - } - } - else if( input.trim().equalsIgnoreCase("Show point")) { - System.out.println("the player with username " - + ((Player)LoginPageController.user).getUsername() + " has gained " - + ((Player)LoginPageController.user).getBattleSeaPoints() + " points from BattleSea."); - } - else if(input.trim().equalsIgnoreCase("View account menu")){ - return UserPage.userPage; - } - else if(input.trim().equalsIgnoreCase("Back")){ - return GamesMenu.gamesMenu; - } - else if(input.trim().equalsIgnoreCase("Help")){ - System.out.println("1. Show scoreboard\n" + - "2. Details\n" + - "3. Show log\n" + - "4. Show wins count\n" + - "5. Show played count\n" + - "6. Add to favorites\n" + - "7. Run game\n" + - "8. Show points\n" + - "9. View account menu\n" + - "10. Back\n" + - "11. Help"); - } - else{ - System.out.println("invalid command!"); - } - } - } -} diff --git a/src/main/java/Plato/View/Commands.java b/src/main/java/Plato/View/Commands.java deleted file mode 100644 index b13670b..0000000 --- a/src/main/java/Plato/View/Commands.java +++ /dev/null @@ -1,54 +0,0 @@ -package Plato.View; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public enum Commands { - BACK("(?i)back"), - VIEW_EVENTS("(?i)view\\s+events"), - VIEW_EVENT("(?i)view\\s+event\\s+(\\d+)"), - REMOVE_EVENT("(?!)remove\\s+event\\s+(\\d+)"), - ADD_EVENT("(?i)add\\s+event"), - EDIT_EVENT("(?!)edit\\s+event\\s+(\\d+)\\s+(\\S+)\\s+(\\S+)"), - ADD_SUGGESTION("(?!)add\\s+suggestion\\s+(\\S+)\\s+(\\S+)"), - VIEW_SUGGESTIONS("(?i)view\\s+suggestions"), - REMOVE_SUGGESTION("(?!)remove\\s+suggestion\\s+(\\d+)"), - VIEW_USERS("(?i)view\\s+users"), - VIEW_USER_PROFILE("(?i)view\\s+user\\s+profile\\s+(\\S+)"), - VIEW_ACCOUNT_MENU("(?i)view\\s+account\\s+menu"), - ADD_BOT_MESSAGE("(?i)add\\s+message\\s+(\\S+)"), - HELP("(?i)help"), - SHOW_POINT("(?i)show\\s+points"), - VIEW_FAVORITE_GAMES("(?i)view\\s+favorite\\s+games"), - VIEW_PLATOBOT_MESSAGES("(?i)view\\s+platobot\\s+messages"), - VIEW_LAST_PLAYED("(?i)view\\s+last\\s+played"), - VIEW_ADMINS_SUGGESTIONS("(?i)view\\s+admins\\s+suggestions"), - CHOOSE_SUGGESTED_GAME("(?i)choose\\s+suggested\\s+game\\s+(\\d+)"), - ADD_FRIEND("(?i)add\\s+friend\\s+(\\S+)"), - DATER("(?i)(\\d+)\\s+(\\d+)\\s+(\\d+)"), - SHOW_FRIENDS("(?i)show\\s+friends"), - REMOVE_FRIENDS("(?i)remove\\s+(\\d+)"), - VIEW_USER_PROFILE_FRIEND_MENU("(?i)view\\s+user\\s+profile\\s+(\\S+)"), - ADD_USER("(?i)add\\s+(\\S+)"), - SHOW_FRIEND_REQUESTS("(?i)show\\s+friend\\s+requests"), - ACCEPT_FRIEND_REQUEST("(?i)accept\\s+(\\S+)"), - DECLNE_FRIEND_REQUEST("(?i)decline\\s+(\\S+)"), - REGISTER("(?i)register\\s+(\\S+)\\s+(\\S+)"), - LOGIN("(?i)login\\s+(\\S+)"), - CHOOSE_FAVORITE_GAME("(?i)choose\\s+favorite\\s+(\\d+)"), - JOIN_EVENT("(?i)join\\s+event\\s+(\\d+)"), - GO_TO_FRIENDS_MENU("(?i)go\\s+to\\s+friends\\s+menu"), - GO_TO_GAMES_MENU("(?i)go\\s+to\\s+games\\s+menu"), - CHANGE_GAME_NAME("(?i)change\\s+game\\s+name\\s+(\\d+)\\s+(\\S+)"), - ADD_NEW_ADMIN("(?i)add\\s+admin\\s+(\\S+)\\s+(\\S+)"); - - private Pattern pattern; - - Commands(String regexPattern){ - this.pattern = Pattern.compile(regexPattern); - } - - public Matcher getMatcher (String input) { - return pattern.matcher(input); - } -} diff --git a/src/main/java/Plato/View/FriendsMenu.java b/src/main/java/Plato/View/FriendsMenu.java deleted file mode 100644 index a4fa87e..0000000 --- a/src/main/java/Plato/View/FriendsMenu.java +++ /dev/null @@ -1,97 +0,0 @@ -package Plato.View; - -import Plato.Controller.FriendsMenuController; - -import java.util.regex.Matcher; - -public class FriendsMenu extends Page{ - public static FriendsMenu friendsMenu = new FriendsMenu(); - private FriendsMenuController friendsMenuController = FriendsMenuController.getInstance(); - public Page run() { - Matcher matcher; - String input; - Page.seenPages.add(FriendsMenu.friendsMenu); - System.out.println("Friends Menu :"); - while (true) - { - input=scanner.nextLine(); - friendsMenu.showUnShownMessages(); - if ((matcher = Commands.SHOW_FRIENDS.getMatcher(input)).matches()) - { - friendsMenu.showFriends(); - } - else if ((matcher = Commands.REMOVE_FRIENDS.getMatcher(input)).matches()) - { - friendsMenu.removeFriend(matcher.group(1)); - } - else if ((matcher = Commands.VIEW_USER_PROFILE_FRIEND_MENU.getMatcher(input)).matches()) - { - friendsMenu.showPerson(matcher.group(1)); - } - else if ((matcher = Commands.ADD_FRIEND.getMatcher(input)).matches()) - { - friendsMenu.addFriend(matcher.group(1)); - } - else if ((matcher = Commands.SHOW_FRIEND_REQUESTS.getMatcher(input)).matches()) - { - friendsMenu.showFriendRequests(); - } - else if ((matcher = Commands.ACCEPT_FRIEND_REQUEST.getMatcher(input)).matches()) - { - friendsMenu.acceptFriend(matcher.group(1)); - } - else if ((matcher = Commands.DECLNE_FRIEND_REQUEST.getMatcher(input)).matches()) - { - friendsMenu.declineFriend(matcher.group(1)); - } - else if ((matcher = Commands.HELP.getMatcher(input)).matches()) - { - System.out.println("Show friends"+"\n"+"Remove\n"+"View user profile\n"+"Add\n"+"Show friend requests\n"+"Accept\n" - +"Decline\n"); - } - else if (Commands.BACK.getMatcher(input).matches()) - { - return seenPages.get(seenPages.size()-2); - } - else if ((matcher = Commands.VIEW_ACCOUNT_MENU.getMatcher(input)).matches()) - { - return UserPage.userPage; - } - else { - System.out.println("invalid command"); - } - } - } - - - private void showFriends(){ - String friends = friendsMenuController.showFriendsController(); - System.out.println(friends); - } - private void removeFriend(String username) - { - friendsMenuController.removeFriend(username); - } - private void showPerson(String name){ - String person; - person = friendsMenuController.getPersonByName(name); - System.out.println(person); - } - private void addFriend(String username){ - friendsMenuController.addFriend(username); - } - private void showFriendRequests(){ - String requests = friendsMenuController.showFriendRequests(); - } - private void acceptFriend(String username){ - friendsMenuController.acceptFrend(username); - } - private void declineFriend(String username){ - friendsMenuController.declineFriend(username); - } - private void showUnShownMessages() - { - String messages = friendsMenuController.showUnShownMessages(); - } - -} diff --git a/src/main/java/Plato/View/GamesMenu.java b/src/main/java/Plato/View/GamesMenu.java deleted file mode 100644 index e67c0c0..0000000 --- a/src/main/java/Plato/View/GamesMenu.java +++ /dev/null @@ -1,59 +0,0 @@ -package Plato.View; - -import Plato.Controller.LoginPageController; -import Plato.Controller.MainPagePlayerController; -import Plato.Model.Player; - -import java.util.Scanner; -import java.util.regex.Matcher; - -public class GamesMenu extends Page{ - public static GamesMenu gamesMenu = new GamesMenu(); - private Player player; - public Page run() { - Page.seenPages.add(GamesMenu.gamesMenu); - System.out.println("choose one:\n" + - "1.\n"); - System.out.println(MainPagePlayerController.getInstance().reversiName()); - System.out.println("2."); - System.out.println(MainPagePlayerController.getInstance().battleSeaName()); - System.out.println("\nback"+ - "\nview account menu"+ - "\n help"); - Scanner scanner = new Scanner(System.in); - String input; - Matcher matcher; - while (true) { - input = scanner.nextLine(); - if (input.equals("1")) { - return ReversiMenu.reversiMenu; - } - else if (input.equals("2")) { - return BattleSeaMenu.battleSeaMenu; - } - else if ((matcher = Commands.BACK.getMatcher(input)).matches()) - { - return seenPages.get(seenPages.size()-2); - } - else if ((matcher = Commands.VIEW_ACCOUNT_MENU.getMatcher(input)).matches()) - { - return UserPage.userPage; - } - else if ((matcher = Commands.HELP.getMatcher(input)).matches()) - { - System.out.println("choose one:\n" + - "1.\n"); - System.out.println(MainPagePlayerController.getInstance().reversiName()); - System.out.println("2."); - System.out.println(MainPagePlayerController.getInstance().battleSeaName()); - System.out.println("\nback"+ - "\nview account menu"+ - "\n help"); - } - else { - System.out.println("You should select 1(for reversi) or 2(for battle sea)!"); - } - } - } - -} diff --git a/src/main/java/Plato/View/LoginPage.java b/src/main/java/Plato/View/LoginPage.java deleted file mode 100644 index f6180ca..0000000 --- a/src/main/java/Plato/View/LoginPage.java +++ /dev/null @@ -1,77 +0,0 @@ -package Plato.View; - -import Plato.Controller.LoginPageController; - -import java.util.regex.Matcher; - -public class LoginPage extends Page{ - public static LoginPage loginPage = new LoginPage(); - private static LoginPageController loginPageController = LoginPageController.getInstance(); - public static Page getInstance() { - return loginPage; - } - - public Page run() { - Matcher matcher; - String input; - seenPages.add(LoginPage.loginPage); - - while (true) - { - input=scanner.nextLine(); - if ((matcher = Commands.REGISTER.getMatcher(input)).matches()) - { - System.out.println("enter email"); - String email = scanner.nextLine(); - System.out.println("enter firstname"); - String firstname = scanner.nextLine(); - System.out.println("enter lastname"); - String lastname = scanner.nextLine(); - System.out.println("enter phone number"); - String phoneNumber = scanner.nextLine(); - loginPage.register(matcher.group(1),matcher.group(2),email,firstname,lastname,phoneNumber); - - } - else if ((matcher = Commands.LOGIN.getMatcher(input)).matches()) - { - System.out.println("enter password"); - String password = scanner.nextLine(); - Page page =loginPage.login(matcher.group(1),password); - return page; - } - else if ((matcher = Commands.HELP.getMatcher(input)).matches()) - { - System.out.println("login\nregister\nhelp"); - } - } - - } - - private Page login(String username,String password){ - String found=loginPageController.loginController(username,password); - if (found.equals("found player")) - { - return MainPagePlayer.mainPagePlayer; - } - else if (found.equals("found admin")) - { - return MainPageAdmin.mainPageAdmin; - } - else { - System.out.println("invalid informations"); - return LoginPage.loginPage; - } - } - private void register(String username,String password,String email,String firstanme,String lastname,String phoneNumber) - { - boolean validInformation = loginPageController.register(username,password,email,firstanme,lastname,phoneNumber); - if (validInformation) - { - System.out.println("account created succesfully"); - } - else { - System.out.println("invalid information"); - } - } - -} diff --git a/src/main/java/Plato/View/MainPageAdmin.java b/src/main/java/Plato/View/MainPageAdmin.java deleted file mode 100644 index d1c6079..0000000 --- a/src/main/java/Plato/View/MainPageAdmin.java +++ /dev/null @@ -1,169 +0,0 @@ -package Plato.View; - -import Plato.Controller.MainPageAdminController; - -import java.util.regex.Matcher; - -public class MainPageAdmin extends Page { - public static MainPageAdmin mainPageAdmin = new MainPageAdmin(); - private MainPageAdminController mainPageAdminController = MainPageAdminController.getInstance(); - public Page run() { - seenPages.add(mainPageAdmin); - String input; - Matcher matcher; - System.out.println("Main Page Admin :"); -while(true){ - input=scanner.nextLine(); - if ((matcher = Commands.ADD_EVENT.getMatcher(input)).matches()) - { - try { - System.out.println("enter game name"); - String gameName = scanner.nextLine(); - System.out.println("enter start date"); - String sdate = scanner.nextLine(); - System.out.println("enter end date"); - String edate = scanner.nextLine(); - System.out.println("enter score"); - int score = scanner.nextInt(); - mainPageAdmin.addEvent(gameName,sdate,edate, score); - } catch (NumberFormatException e) { - System.out.println("invalid form"); - } - - } - else if ((matcher = Commands.VIEW_EVENTS.getMatcher(input)).matches()) - { - mainPageAdmin.viewEvents(); - } - else if ((matcher = Commands.EDIT_EVENT.getMatcher(input)).matches()) - { - mainPageAdmin.editEvent(Integer.parseInt(matcher.group(1)),matcher.group(2),matcher.group(3)); - } - else if ((matcher = Commands.REMOVE_EVENT.getMatcher(input)).matches()) - { - mainPageAdmin.removeEvent(Integer.parseInt(matcher.group(1))); - } - else if ((matcher = Commands.ADD_SUGGESTION.getMatcher(input)).matches()) - { - mainPageAdmin.addSuggestion(matcher.group(1),matcher.group(2)); - } - else if ((matcher = Commands.VIEW_SUGGESTIONS.getMatcher(input)).matches()) - { - mainPageAdmin.viewSuugestions(); - } - else if ((matcher = Commands.REMOVE_SUGGESTION.getMatcher(input)).matches()) - { - mainPageAdmin.removeSeggestion(Integer.parseInt(matcher.group(1))); - } - else if ((matcher = Commands.VIEW_USERS.getMatcher(input)).matches()) - { - mainPageAdmin.viewUsers(); - } - else if ((matcher = Commands.VIEW_USER_PROFILE.getMatcher(input)).matches()) - { - mainPageAdmin.viewuser(Integer.parseInt(matcher.group(1))); - } - else if ((matcher = Commands.BACK.getMatcher(input)).matches()) - { - return seenPages.get(seenPages.size()-2); - } - else if ((matcher = Commands.VIEW_ACCOUNT_MENU.getMatcher(input)).matches()) - { - return UserPage.userPage; - } - else if ((matcher = Commands.ADD_BOT_MESSAGE.getMatcher(input)).matches()) - { - mainPageAdmin.addplatobotMessage(matcher.group(1)); - } - else if ((matcher = Commands.HELP.getMatcher(input)).matches()) - { - System.out.println("Add event"+"\n"+"View events\n"+"Edit event\n"+"Remove event\n"+"Add suggestion\n"+"View suggestions\n" - +"Remove suggestion\n"+"View users\n"+"View user profile\n"+"change game name\n"); - } - else if ((matcher = Commands.CHANGE_GAME_NAME.getMatcher(input)).matches()) - { - MainPageAdmin.mainPageAdmin.mainPageAdminController.changeGameName(Integer.parseInt(matcher.group(1)),matcher.group(2)); - } - else if ((matcher = Commands.ADD_NEW_ADMIN.getMatcher(input)).matches()) - { - System.out.println("enter email"); - String email = scanner.nextLine(); - System.out.println("enter firstname"); - String firstname = scanner.nextLine(); - System.out.println("enter lastname"); - String lastname = scanner.nextLine(); - System.out.println("enter phone number"); - String phoneNumber = scanner.nextLine(); - mainPageAdmin.addAdmin(matcher.group(1),matcher.group(2),email,firstname,lastname,phoneNumber); - - } - else if (!input.equals("")){ - System.out.println("invalid command"); - } -} - } - - private void viewUsers(){ - String users ; - users=mainPageAdminController.viewUsers(); - System.out.println(users); - } - private void viewuser(int id){ - String userInfo ; - userInfo = mainPageAdminController.getUser(id); - System.out.println(userInfo); - } - private void viewSuugestions(){ - String suggestion = mainPageAdminController.viewSuggestions(); - System.out.println(suggestion); - } - private void addSuggestion(String username,String gamename){ - mainPageAdminController.addSuggestion(username,gamename); - } - private void removeSeggestion(int id){ - mainPageAdminController.removeSuggestion(id); - } - public void viewEvents(){ - String evets = mainPageAdminController.viewEvents(); - System.out.println(evets); - } - private void addEvent(String name,String sdate,String edate,int score){ - try { - mainPageAdminController.addEvent(name,sdate,edate,score); - } catch (Exception e) { - System.out.println("invalid form"); - } - } - private void viewEvent(int id){ - String event; - event=mainPageAdminController.viewEvent(id); - System.out.println(event); - } - public void editEvent(int id,String field,String newValue){ - mainPageAdminController.editEvent(field,newValue,id); - } - private void removeEvent(int id){ - mainPageAdminController.removeEvent(id); - } - private void addplatobotMessage(String message){ - mainPageAdminController.addbotMessage(message); - } - private void startEvent(int id){ - mainPageAdminController.startEvent(id); - } - private void endtEvent(int id){ - mainPageAdminController.endEvent(id); - } - private void changeGameName(int id,String newName) - { - mainPageAdminController.changeGameName(id,newName); - } - private void addAdmin(String username, String password, String email, String firstname, String lastname, String phoneNumber) { - try { - mainPageAdminController.addNewAdminController(username,password,email,firstname,lastname,phoneNumber); - } catch (Exception e) { - System.out.println("username was used please try again with another username"); - } - } - -} diff --git a/src/main/java/Plato/View/MainPagePlayer.java b/src/main/java/Plato/View/MainPagePlayer.java deleted file mode 100644 index 7183b58..0000000 --- a/src/main/java/Plato/View/MainPagePlayer.java +++ /dev/null @@ -1,139 +0,0 @@ -package Plato.View; - -import Plato.Controller.MainPagePlayerController; -import Plato.Model.Player; - -import java.util.regex.Matcher; - -public class MainPagePlayer extends Page{ - public static MainPagePlayer mainPagePlayer = new MainPagePlayer(); - private MainPagePlayerController mainPagePlayerController = MainPagePlayerController.getInstance(); - public Page run() { - Matcher matcher; - String input; - seenPages.add(MainPagePlayer.mainPagePlayer); - System.out.println("Main Page Player :"); - while (true) - { - input=scanner.nextLine(); - if ((matcher = Commands.HELP.getMatcher(input)).matches()) - { - System.out.println("Show Points"+"\n"+"View favorite games\n"+"View platoBot’s messages\n"+"View last played\n"+"View admin’s suggestions\n"+"Choose suggested game\n" - +"Add friend\n"+"go to friends menu\n"+"go to games menu\n"+"view events\n"+"join event\n"); - } - else if ((matcher = Commands.SHOW_POINT.getMatcher(input)).matches()) - { - mainPagePlayer.showPoints(); - } - else if ((matcher = Commands.VIEW_FAVORITE_GAMES.getMatcher(input)).matches()) - { - mainPagePlayer.viewFavoriteGames(); - } - else if ((matcher = Commands.VIEW_PLATOBOT_MESSAGES.getMatcher(input)).matches()) - { - mainPagePlayer.platobotMessages(); - } - else if ((matcher = Commands.VIEW_LAST_PLAYED.getMatcher(input)).matches()) - { - mainPagePlayer.viewLastPlayed(); - } - else if ((matcher = Commands.VIEW_ADMINS_SUGGESTIONS.getMatcher(input)).matches()) - { - mainPagePlayer.adminSuggestions(); - } - else if ((matcher = Commands.ADD_FRIEND.getMatcher(input)).matches()) - { - mainPagePlayer.addFriend(matcher.group(1)); - } - else if ((matcher = Commands.CHOOSE_SUGGESTED_GAME.getMatcher(input)).matches()) - { - - if (Integer.parseInt(matcher.group(1))==1) - { - ReversiMenu game = new ReversiMenu(); - return game; - } - else if (Integer.parseInt(matcher.group(1))==2) - { - BattleSeaMenu game = new BattleSeaMenu(); - return game; - } - else { - System.out.println("invalid gameID"); - } - } - else if ((matcher = Commands.BACK.getMatcher(input)).matches()) - { - return seenPages.get(seenPages.size()-2); - } - else if ((matcher = Commands.CHOOSE_FAVORITE_GAME.getMatcher(input)).matches()) - { - - if (Integer.parseInt(matcher.group(1))==1) - { - return ReversiMenu.reversiMenu; - } - else if (Integer.parseInt(matcher.group(1))==2) - { - return BattleSeaMenu.battleSeaMenu; - } - } - else if ((matcher = Commands.VIEW_EVENTS.getMatcher(input)).matches()) - { - MainPageAdmin.mainPageAdmin.viewEvents(); - } - else if ((matcher = Commands.JOIN_EVENT.getMatcher(input)).matches()) - { - MainPagePlayer.mainPagePlayer.joinEvent(Integer.parseInt(matcher.group(1))); - } - else if ((matcher = Commands.GO_TO_FRIENDS_MENU.getMatcher(input)).matches()) - { - return FriendsMenu.friendsMenu; - } - else if ((matcher = Commands.GO_TO_GAMES_MENU.getMatcher(input)).matches()) - { - return GamesMenu.gamesMenu; - } - else { - System.out.println("invalid command"); - } - } - - } - private void showPoints(){ - String point; - point=mainPagePlayerController.showPointController(); - System.out.println(point); - - } - private void viewFavoriteGames(){ - String favorites; - favorites=mainPagePlayerController.viewFavoriteGames(); - System.out.println(favorites); - } - private void platobotMessages(){ - String messages; - messages=mainPagePlayerController.platobotMessages(); - System.out.println(messages); - } - private void adminSuggestions(){ - String suggests=mainPagePlayerController.viewSuggestions(); - System.out.println(suggests); - } - private void viewLastPlayed(){ - String lastPlayed; - lastPlayed=mainPagePlayerController.viewLastPlayed(); - System.out.println(lastPlayed); - } - private boolean isGAmeVAlid(int id){ - boolean valid = mainPagePlayerController.isSuggestedGameValid(id); - return valid; - } - private void addFriend(String username){ - mainPagePlayerController.addFriend(username); - } - private void joinEvent(int id) - { - mainPagePlayerController.joinEvent(id); - } -} diff --git a/src/main/java/Plato/View/Page.java b/src/main/java/Plato/View/Page.java deleted file mode 100644 index 4d093f8..0000000 --- a/src/main/java/Plato/View/Page.java +++ /dev/null @@ -1,11 +0,0 @@ -package Plato.View; - -import java.util.ArrayList; -import java.util.Scanner; - -public abstract class Page { - protected static Scanner scanner = new Scanner(System.in); - protected static ArrayList seenPages = new ArrayList() ; - public abstract Page run(); - -} diff --git a/src/main/java/Plato/View/ReversiMenu.java b/src/main/java/Plato/View/ReversiMenu.java deleted file mode 100644 index c87e4b4..0000000 --- a/src/main/java/Plato/View/ReversiMenu.java +++ /dev/null @@ -1,124 +0,0 @@ -package Plato.View; - -import Plato.Controller.LoginPageController; -import Plato.Model.Log; -import Plato.Model.Player; -import Reversi.ReversiController; -import java.util.ArrayList; -import java.util.Scanner; -import java.util.regex.Matcher; - -public class ReversiMenu extends Page{ - public static ReversiMenu reversiMenu = new ReversiMenu(); - private static final int gameID = 1; - public Page run() { - String input; - Matcher matcher; - Scanner scanner = new Scanner(System.in); - Page.seenPages.add(ReversiMenu.reversiMenu); - while(true){ - input = scanner.nextLine(); - if(input.trim().equalsIgnoreCase("Show scoreboard")){ - ArrayList playersThatHasPlayedReversi = new ArrayList(); - for (Player player : Player.getPlayers()) { - if(player.getReversiPlayedCount() > 0) - playersThatHasPlayedReversi.add(player); - } - playersThatHasPlayedReversi = Player.sortForReversiMenu(playersThatHasPlayedReversi); - int n = playersThatHasPlayedReversi.size(); - for (int i = n - 1; i >= 0; i--) { - System.out.println("1." + playersThatHasPlayedReversi.get(i).getUsername() + " point: " + - playersThatHasPlayedReversi.get(i).getReversiPoints() + - " wins: " + playersThatHasPlayedReversi.get(i).getReversiWins() + - " draws: " + playersThatHasPlayedReversi.get(i).getReversiDraws() + - " losses: " + playersThatHasPlayedReversi.get(i).getReversiLosses()); - } - } - else if(input.trim().equalsIgnoreCase("Details")){ - System.out.println("Board\n" + - "Reversi is a 2 players game, played on a board of 64 squares arranged in an 8x8 rows and columns. The game begins with four discs already placed on the board:\n" + - "\n" + - "A set of 64 identical pieces is shared by both players. Each piece is a disc that is black on one side and white on the other.\n" + - "Object of Game\n" + - "The object of Reverze is to flip the most discs to your color by the end of the game. If both players have the same number of discs of their color up, the game is a draw.\n" + - "Placing Pieces\n" + - "Players are designated Black and White at the start of the game. Beginning with Black, each player in turn places one disc onto a vacant square on the board.\n" + - "Once placed, a disc never moves, though it may be \"flipped\" when captured so that it changes color.\n" + - "To place a disc, simply tap on a legal square. A move is legal if it captures one or more of the opponent's discs. You can see which moves are legal by the small opaque circles on the board:\n" + - "\n" + - "Capturing\n" + - "A disc, or an unbroken line of discs of the same color, is captured when it becomes flanked on opposite ends by two opposing pieces, one of which must be the disc that was just placed on the board.\n" + - "For example, in the example below if the Black player is about to place a black disc in the space with the yellow dot:\n" + - "\n" + - "Doing so will capture and flip the horizontal white discs to black, resulting in:\n" + - "\n" + - "Captures may be made along ranks (horizontal rows of squares), files (vertical rows of squares), or diagonals.\n" + - "Endgame\n" + - "A player who cannot make a legal move loses his or her turn. The game continues until neither side can move; usually, this does not happen until the board is entirely filled.\n" + - "The player whose color is up on more of the discs at the end is the winner (you'll see the score next to each player's name). If both players have the same number of discs of their color up, the game is a draw."); - } - else if(input.trim().equalsIgnoreCase("Show log")){ - for (Log log : Log.getLogs()) { - if(log.getGameID() == 1){ - System.out.println("a match between " + log.getPlayer1().getUsername() + " and " + - log.getPlayer2().getUsername() + " has been done and " + log.getWinner().getUsername() + - " has won this match." + "(" + log.getFinishTime() + ")"); - } - } - } - else if(input.trim().equalsIgnoreCase("Show wins count")){ - System.out.println("player with username " + LoginPageController.user.getUsername() + - " has won " + ( (Player)LoginPageController.user).getReversiWins() + " time(s) in Reversi."); - } - else if(input.trim().equalsIgnoreCase("Show played count")){ - System.out.println("player with username " + LoginPageController.user.getUsername() + - " has played " + ( (Player)LoginPageController.user).getReversiPlayedCount() + " time(s) in Reversi."); - } - else if(input.trim().equalsIgnoreCase("Add to favorites")){ - ((Player)LoginPageController.user).addFavorite(1); - } - else if(input.trim().equalsIgnoreCase("Run game")){ - System.out.println("please enter username:"); - String username = scanner.nextLine(); - System.out.println("please enter password:"); - String password = scanner.nextLine(); - try { - Player secondPlayer = LoginPageController.loginSecond(username,password); - //event score - ReversiController.run(((Player)LoginPageController.user), secondPlayer); - } catch (Exception e) { - System.out.println("invalid information for second player"); - } - - - } - else if(input.trim().equalsIgnoreCase("Show points")) { - System.out.println("the player with username " - + ((Player)LoginPageController.user).getUsername() + " has gained " - + ((Player)LoginPageController.user).getReversiPoints() + " points from Reversi."); - } - else if(input.trim().equalsIgnoreCase("View account menu")){ - return UserPage.userPage; - } - else if(input.trim().equalsIgnoreCase("Back")){ - return seenPages.get(seenPages.size()-2); - } - else if(input.trim().equals("Help")){ - System.out.println("1. Show scoreboard\n" + - "2. Details\n" + - "3. Show log\n" + - "4. Show wins count\n" + - "5. Show played count\n" + - "6. Add to favorites\n" + - "7. Run game\n" + - "8. Show points\n" + - "9. View account menu\n" + - "10. Back\n" + - "11. Help"); - } - else{ - System.out.println("invalid command!"); - } - } - } -} diff --git a/src/main/java/Plato/View/UserPage.java b/src/main/java/Plato/View/UserPage.java deleted file mode 100644 index d41e90f..0000000 --- a/src/main/java/Plato/View/UserPage.java +++ /dev/null @@ -1,108 +0,0 @@ -package Plato.View; - -import Plato.Controller.LoginPageController; -import Plato.Model.Log; -import Plato.Model.Player; -import Plato.Model.User; -import java.util.Scanner; -import java.util.regex.Pattern; - -public class UserPage extends Page{ - public static UserPage userPage = new UserPage(); -// private UserPageController userPageController = UserPageController.getInstance(); - public static User user ; - public static UserPage getInstance(){ - return userPage; - } - public Page run() { - String input; - Scanner scanner = new Scanner(System.in); - seenPages.add(UserPage.userPage); - while(true){ - input = scanner.nextLine(); - if(input.trim().equals("View personal info")){ - System.out.println("firstname: " + LoginPageController.user.getFirstname() + - "\nlastname: " + LoginPageController.user.getLastname() + - "\nusername: " + LoginPageController.user.getUsername() + - "\nemail: " + LoginPageController.user.getEmail() + - "\nphone number: " + LoginPageController.user.getPhoneNumber()); - } - else if(Pattern.matches("Change password .+ .+", input)){ - String oldPass = input.split(" ")[2]; - String newPass = input.split(" ")[3]; - if(!oldPass.equals(((Player)LoginPageController.user).getPassword())) - System.out.println("the old password isn't true!"); - else{ - ((Player)LoginPageController.user).setPassword(newPass); - System.out.println("The password successfully changed!"); - } - } - else if(Pattern.matches("Edit .+ .+", input)){ - if(input.split(" ")[1].equals("firstname") || input.split(" ")[1].equals("lastname") || - input.split(" ")[1].equals("username") || input.split(" ")[1].equals("email") || - input.split(" ")[1].equals("phoneNumber")) { - LoginPageController.user.editInformation(input.split(" ")[1], input.split(" ")[2]); - } - else - System.out.println("You should enter firstname, lastname, username, email, phoneNumber as field!"); - } - else if(input.equals("View plato statistics")){ - System.out.println("you have " + ((Player)LoginPageController.user).getFriends().size() + " friend(s)!\n" + - "you have won " + ((Player)LoginPageController.user).getReversiWins() + " time(s) in reversi and " + - ((Player)LoginPageController.user).getBattleSeaWins() + " time(s) in battle sea!\n" + - "it is " + ((Player)LoginPageController.user).getDaysPassedRegister() + " day(s) that you have registered!"); - } - else if(input.trim().equals("Games history")){ - for (Log log : Log.getLogs()) { - if(LoginPageController.user.equals(log.getPlayer1()) || LoginPageController.user.equals(log.getPlayer2())){ - if(log.getWinner() == null) - System.out.println("A match between " + log.getPlayer1().getUsername() + - " and " + log.getPlayer2().getUsername() + " has been done and the result was a draw!" + "(" + - log.getFinishTime() + ")"); - else - System.out.println("A match between " + log.getPlayer1().getUsername() + - " and " + log.getPlayer2().getUsername() + " has been done and " + log.getWinner().getUsername() + - " won the match!" + "(" + log.getFinishTime() + ")"); - } - } - } - else if(Pattern.matches("Game statistics .+", input)){ - if(input.split(" ")[2].equals("battleSea") || input.split(" ")[2].equals("reversi")){ - if(input.split(" ")[2].equals("battleSea")) - System.out.println("level: " + ((Player)LoginPageController.user).getBattleSeaLevel() + - "\ngames: " + ((Player)LoginPageController.user).getBattleSeaPlayedCount() + - "\nwins: " + ((Player)LoginPageController.user).getBattleSeaWins() + - "\ndraws: " + ((Player)LoginPageController.user).getBattleSeaDraws() + - "\nlosses: " + ((Player)LoginPageController.user).getBattleSeaLosses()); - else if(input.split(" ")[2].equals("reversi")){ - System.out.println("level: " + ((Player)LoginPageController.user).getReversiLevel() + - "\ngames: " + ((Player)LoginPageController.user).getReversiPlayedCount() + - "\nwins: " + ((Player)LoginPageController.user).getReversiWins() + - "\ndraws: " + ((Player)LoginPageController.user).getReversiDraws() + - "\nlosses: " + ((Player)LoginPageController.user).getReversiLosses()); - } - } - else{ - System.out.println("You should enter battleSea or reversi as game name!"); - } - } - else if(input.trim().equals("Logout")){ - return LoginPage.loginPage; - } - else if(input.trim().equals("back")){ - return seenPages.get(seenPages.size()-2); - } - else if(input.equals("help")){ - System.out.println("1. View personal info\n" + - "2. Change password [current_password] [new_password]\n" + - "3. Edit [field(firstname, lastname, username, email, phoneNumber)] [new_value]\n" + - "4. View plato statistics\n" + - "5. Game history\n" + - "6. Game statistics [game_name(battleSea, reversi)]\n" + - "7. Logout\n" + - "8. back\n" + - "9. help"); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/Reversi/Reversi.java b/src/main/java/Reversi/Reversi.java deleted file mode 100644 index 2f9a021..0000000 --- a/src/main/java/Reversi/Reversi.java +++ /dev/null @@ -1,479 +0,0 @@ -package Reversi; - -import Plato.Model.Player; - -import java.util.Random; - -//model -public class Reversi { - //fields - private Player black; - private Player white; - private Table table; - - //constructor - public Reversi(Player player1, Player player2){ - this.table = new Table(); - Random random = new Random(); - int rand = random.nextInt(2); - if(rand == 0) { - this.black = player1; - this.white = player2; - } - else { - this.black = player2; - this.white = player1; - } - } - - //getter methods - public Player getBlack() { - return black; - } - public Player getWhite() { - return white; - } - public Table getTable() { - return table; - } - - //check some of the needed conditions and changing the color of disks in order to place a disk correctly - public static boolean doesItObserveTheTableLimit(int x, int y){ - if(x <= 8 && x >= 1 && y <= 8 && y >= 1) - return true; - return false; - } - public boolean canHePlaceDisk(int x, int y){ - String theOtherPlayer; - String thisPlayer; - if(this.getTable().getWhoseTurn().equals("white")){ - theOtherPlayer = "B"; - thisPlayer = "W"; - } - else{ - theOtherPlayer = "W"; - thisPlayer = "B"; - } - if(this.getTable().getTable()[x - 1][y - 1].equals("E")) { - //checking right - int i = 1; - for ( ; doesItObserveTheTableLimit(x, y + i) && this.getTable().getTable()[x - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x, y + i) && this.getTable().getTable()[x - 1][y + i - 1].equals(thisPlayer) && i != 1) - return true; - //checking left - i = 1; - for ( ; doesItObserveTheTableLimit(x, y - i) && this.getTable().getTable()[x - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x, y - i) && this.getTable().getTable()[x - 1][y - i - 1].equals(thisPlayer) && i != 1) - return true; - //checking upside - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y) && this.getTable().getTable()[x + i - 1][y - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y) && this.getTable().getTable()[x + i - 1][y - 1].equals(thisPlayer) && i != 1) - return true; - //checking downside - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y) && this.getTable().getTable()[x - i - 1][y - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y) && this.getTable().getTable()[x - i - 1][y - 1].equals(thisPlayer) && i != 1) - return true; - //checking up right - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y + i) && this.getTable().getTable()[x + i - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y + i) && this.getTable().getTable()[x + i - 1][y + i - 1].equals(thisPlayer) && i != 1) - return true; - //checking down left - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y - i) && this.getTable().getTable()[x - i - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y - i) && this.getTable().getTable()[x - i - 1][y - i - 1].equals(thisPlayer) && i != 1) - return true; - //checking up left - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y - i) && this.getTable().getTable()[x + i - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y - i) && this.getTable().getTable()[x + i - 1][y - i - 1].equals(thisPlayer) && i != 1) - return true; - //checking down right - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y + i) && this.getTable().getTable()[x - i - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y + i) && this.getTable().getTable()[x - i - 1][y + i - 1].equals(thisPlayer) && i != 1) - return true; - } - return false; - } - public boolean canHePlaceDisk(int x, int y, String bOrw){ - String theOtherPlayer; - String thisPlayer; - if(bOrw.equals("W")){ - theOtherPlayer = "B"; - thisPlayer = "W"; - } - else{ - theOtherPlayer = "W"; - thisPlayer = "B"; - } - if(this.getTable().getTable()[x - 1][y - 1].equals("E")) { - //checking right - int i = 1; - for ( ; doesItObserveTheTableLimit(x, y + i) && this.getTable().getTable()[x - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x, y + i) && this.getTable().getTable()[x - 1][y + i - 1].equals(thisPlayer) && i != 1) - return true; - //checking left - i = 1; - for ( ; doesItObserveTheTableLimit(x, y - i) && this.getTable().getTable()[x - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x, y - i) && this.getTable().getTable()[x - 1][y - i - 1].equals(thisPlayer) && i != 1) - return true; - //checking upside - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y) && this.getTable().getTable()[x + i - 1][y - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y) && this.getTable().getTable()[x + i - 1][y - 1].equals(thisPlayer) && i != 1) - return true; - //checking downside - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y) && this.getTable().getTable()[x - i - 1][y - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y) && this.getTable().getTable()[x - i - 1][y - 1].equals(thisPlayer) && i != 1) - return true; - //checking up right - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y + i) && this.getTable().getTable()[x + i - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y + i) && this.getTable().getTable()[x + i - 1][y + i - 1].equals(thisPlayer) && i != 1) - return true; - //checking down left - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y - i) && this.getTable().getTable()[x - i - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y - i) && this.getTable().getTable()[x - i - 1][y - i - 1].equals(thisPlayer) && i != 1) - return true; - //checking up left - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y - i) && this.getTable().getTable()[x + i - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y - i) && this.getTable().getTable()[x + i - 1][y - i - 1].equals(thisPlayer) && i != 1) - return true; - //checking down right - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y + i) && this.getTable().getTable()[x - i - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y + i) && this.getTable().getTable()[x - i - 1][y + i - 1].equals(thisPlayer) && i != 1) - return true; - } - return false; - } - public void placeDisk(int x, int y){ - if(!doesItObserveTheTableLimit(x, y)) - System.out.println("Coordinates must be inside the table"); - else if(!canHePlaceDisk(x, y)) - System.out.println("You cannot place the disk on this Coordinates"); - else if(this.getTable().getHasHePlayed()) - System.out.println("You have placed disk before. You should change the turn."); - else{ - String theOtherPlayer; - String thisPlayer; - if(this.getTable().getWhoseTurn().equals("white")){ - theOtherPlayer = "B"; - thisPlayer = "W"; - } - else{ - theOtherPlayer = "W"; - thisPlayer = "B"; - } - //checking right - int i = 1; - for ( ; doesItObserveTheTableLimit(x, y + i) && this.getTable().getTable()[x - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x, y + i) && this.getTable().getTable()[x - 1][y + i - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x, y + i); - //checking left - i = 1; - for ( ; doesItObserveTheTableLimit(x, y - i) && this.getTable().getTable()[x - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x, y - i) && this.getTable().getTable()[x - 1][y - i - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x, y - i); - //checking upside - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y) && this.getTable().getTable()[x + i - 1][y - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y) && this.getTable().getTable()[x + i - 1][y - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x + i, y); - //checking downside - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y) && this.getTable().getTable()[x - i - 1][y - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y) && this.getTable().getTable()[x - i - 1][y - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x - i, y); - //checking up right - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y + i) && this.getTable().getTable()[x + i - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y + i) && this.getTable().getTable()[x + i - 1][y + i - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x + i, y + i); - //checking down left - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y - i) && this.getTable().getTable()[x - i - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y - i) && this.getTable().getTable()[x - i - 1][y - i - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x - i, y - i); - //checking up left - i = 1; - for ( ; doesItObserveTheTableLimit(x + i, y - i) && this.getTable().getTable()[x + i - 1][y - i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x + i, y - i) && this.getTable().getTable()[x + i - 1][y - i - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x + i, y - i); - //checking down right - i = 1; - for ( ; doesItObserveTheTableLimit(x - i, y + i) && this.getTable().getTable()[x - i - 1][y + i - 1].equals(theOtherPlayer); i++); - if(doesItObserveTheTableLimit(x - i, y + i) && this.getTable().getTable()[x - i - 1][y + i - 1].equals(thisPlayer) && i != 1) - changeTheDisksColor(x, y, x - i, y + i); - - this.getTable().setLastMove(x - 1, y - 1); - this.getTable().setHasHePlayed(true); - } - } - public void changeTheDisksColor(int x, int y, int X, int Y){ - - - String thisPlayer; - if(this.getTable().getWhoseTurn().equals("white")) - thisPlayer = "W"; - else - thisPlayer = "B"; - - - if(x == X){ - if(y > Y){ - int tmp = y; - y = Y; - Y = tmp; - } - for (int i = y; i <= Y; i++) - this.table.setColor(x, i, thisPlayer); - } - else if(y == Y){ - if(x > X){ - int tmp = x; - x = X; - X = tmp; - } - for (int i = x; i <= X; i++) - this.table.setColor(i, y, thisPlayer); - } - else if ((x - y) == (X - Y)){ - int sub = x - y; - if(x > X){ - int tmp = x; - x = X; - X = tmp; - tmp = y; - y = Y; - Y = tmp; - } - for (int i = x; i <= X ; i++) - this.table.setColor(i, i - sub, thisPlayer); - } - else if((x + y) == (X + Y)){ - int sum = x + y; - if(x > X){ - int tmp = x; - x = X; - X = tmp; - tmp = y; - y = Y; - Y = tmp; - } - for (int i = x; i <= X; i++) - this.table.setColor(i, sum - i, thisPlayer); - } - } - - //print the places that the players can place disk - public void printAvailableCoordinates(){ - Table table = new Table(this.getTable()); - for (int i = 1; i <= 8; i++) { - for (int j = 1; j <= 8; j++) { - if(canHePlaceDisk(i, j)) - table.setColor(i, j, "A"); - } - } - System.out.println(" 1 2 3 4 5 6 7 8"); - for (int i = 0; i < 8; i++) { - System.out.print(i + 1 + " "); - for (int j = 0; j < 8; j++) { - if(table.getTable()[i][j].equals("E")) - System.out.print("\u001B[36m" + "E" + "\u001B[0m" + " "); - else if(table.getTable()[i][j].equals("W")) { - if(!isLastMove(i, j)) - System.out.print("\u001B[30m" + "W" + "\u001B[0m" + " "); - else - System.out.print("\u001B[31m" + "W" + "\u001B[0m" + " "); - } - else if(table.getTable()[i][j].equals("B")) { - if(!isLastMove(i, j)) - System.out.print("\u001B[37m" + "B" + "\u001B[0m" + " "); - else - System.out.print("\u001B[31m" + "B" + "\u001B[0m" + " "); - } - else if(table.getTable()[i][j].equals("A")) - System.out.print("\u001B[32m" + "A" + "\u001B[0m" + " "); - } - System.out.println(); - } - } - - //change the turn - public void changeTurn(){ - if(this.table.getWhoseTurn().equals("white")) { - if(this.getTable().getHasHePlayed() && canHePlaceDisk(black)) { - this.table.setWhoseTurn("black"); - this.getTable().setHasHePlayed(false); - } - else if(this.getTable().getHasHePlayed() && !canHePlaceDisk(black)){ - this.getTable().setHasHePlayed(false); - } - else if(!this.getTable().getHasHePlayed()){ - System.out.println("in your turn you should place the disk"); - } - } - else if(this.table.getWhoseTurn().equals("black")){ - if(this.getTable().getHasHePlayed() && canHePlaceDisk(white)) { - this.table.setWhoseTurn("white"); - this.getTable().setHasHePlayed(false); - } - else if(this.getTable().getHasHePlayed() && !canHePlaceDisk(white)){ - this.getTable().setHasHePlayed(false); - } - else if(!this.getTable().getHasHePlayed()){ - System.out.println("in your turn you should place the disk"); - } - } - } - - //checks if a player can place disk at all. - public boolean canHePlaceDisk(Player player){ - String bOrw; - if(player.equals(black)) - bOrw = "B"; - else - bOrw = "W"; - for (int i = 1; i <= 8; i++) { - for (int j = 1; j <= 8; j++) { - if(this.canHePlaceDisk(i, j, bOrw)) - return true; - } - } - return false; - } - - //checks if the table is full. - public boolean isTableFull(){ - for (int i = 0; i < 8; i++) - for (int j = 0; j < 8; j++) - if(this.table.getTable()[i][j].equals("E")) - return false; - return true; - } - - //returns the entity of input color in the table - public int getNumberOfInputColorDisks(String color){ - int number = 0; - for (int i = 0; i < 8; i++) { - for (int j = 0; j < 8; j++) { - if(this.table.getTable()[i][j].equals(color)) - number++; - } - } - return number; - } - - //checks if all of the disks have a same color - public boolean doAllOfTheDisksHaveSameColor(){ - return (getNumberOfInputColorDisks("W") == 0 || getNumberOfInputColorDisks("B") == 0); - } - - //checks if anyone can move at all. - public boolean canAnyoneMove(){ - return (canHePlaceDisk(black) || canHePlaceDisk(white)); - } - - //returns the winner - public Player getWinner(){ - if(getNumberOfInputColorDisks("W") > getNumberOfInputColorDisks("B")) - return white; - else if(getNumberOfInputColorDisks("W") < getNumberOfInputColorDisks("B")) - return black; - return null; - } - - //returns the looser - public Player getLooser(){ - if(getNumberOfInputColorDisks("W") > getNumberOfInputColorDisks("B")) - return black; - else if(getNumberOfInputColorDisks("W") < getNumberOfInputColorDisks("B")) - return white; - return null; - } - - //white if W and black if B - public Player getPlayerByWhoseTurn(){ - if(this.table.getWhoseTurn().equals("white")) - return white; - else - return black; - } - - //checks if the input coordinate is the last move of the match - public boolean isLastMove(int x, int y){ - return (x == this.getTable().getLastMove()[0] && y == this.getTable().getLastMove()[1]); - } - -} - -class Table{ - //fields - private String[][] table; - private String whoseTurn; - private boolean hasHePlayed; - private int[] lastMove; - - //constructor - public Table(){ - table = new String[8][8]; - for (int i = 0; i < 8; i++) - for (int j = 0; j < 8; j++) - table[i][j] = "E"; - table[3][3] = "W"; - table[4][4] = "W"; - table[3][4] = "B"; - table[4][3] = "B"; - whoseTurn = "black"; - hasHePlayed = false; - lastMove = new int[2]; - lastMove[0] = 0; - lastMove[1] = 0; - } - - //copy constructor - public Table(Table table){ - this.table = new String[8][8]; - for (int i = 0; i < 8; i++) - for (int j = 0; j < 8; j++) - this.table[i][j] = table.getTable()[i][j]; - this.whoseTurn = table.getWhoseTurn(); - this.hasHePlayed = table.getHasHePlayed(); - } - - //getter methods - public String getWhoseTurn() { - return whoseTurn; - } - public String[][] getTable() { - return table; - } - public boolean getHasHePlayed(){ - return hasHePlayed; - } - public int[] getLastMove() { - return lastMove; - } - - //setter methods - public void setWhoseTurn(String whoseTurn) { - this.whoseTurn = whoseTurn; - } - public void setColor(int x, int y, String arg){ - table[x - 1][y - 1] = arg; - } - public void setHasHePlayed(boolean hasHePlayed) { - this.hasHePlayed = hasHePlayed; - } - public void setLastMove(int x, int y) { - this.lastMove[0] = x; - this.lastMove[1] = y; - } -} diff --git a/src/main/java/Reversi/ReversiController.java b/src/main/java/Reversi/ReversiController.java deleted file mode 100644 index 89490b7..0000000 --- a/src/main/java/Reversi/ReversiController.java +++ /dev/null @@ -1,153 +0,0 @@ -package Reversi; - -import Plato.Model.Game; -import Plato.Model.Log; -import Plato.Model.Player; -import Plato.View.*; -import java.util.Scanner; -import java.util.regex.Pattern; - -//controller -public class ReversiController extends Game { - //fields - public static ReversiController reversiController = new ReversiController(); - private Reversi model; - private ReversiView view; - - //constructor - public ReversiController(Player player1, Player player2) { - if (player1 != null && player2 != null) { - this.model = new Reversi(player1, player2); - this.view = new ReversiView(); - } - } - - public ReversiController() { - - } - - - //getter methods - public ReversiView getView() { - return view; - } - public Reversi getModel() { - return model; - } - - //relating to view - public void showWhoseTurnIsIt() { - view.showWhoseTurnIsIt(this); - } - - public void showResult() { - view.showResult(this); - } - - public void showScore() { - view.showScore(this); - } - - public void showDisks() { - view.showDisks(this); - } - - //relating to model - public void placeDisk(int x, int y) { - model.placeDisk(x, y); - } - - public void changeTurn() { - model.changeTurn(); - } - - public void showAvailableCoordinates() { - model.printAvailableCoordinates(); - } - - //runs the game - public static Page run(Player black, Player white) { - - //build a new game - ReversiController game = new ReversiController(black, white); - - //getting input - Scanner scanner = new Scanner(System.in); - String input; - - //the menu while playing - while (!game.getModel().isTableFull() && game.getModel().canAnyoneMove() || !game.getModel().doAllOfTheDisksHaveSameColor()) { - input = scanner.nextLine(); - if (input.trim().equals("end of my turn")) { - game.changeTurn(); - } else if (Pattern.matches("Place disk on .\\d+,\\d+.", input.trim())) { - input = (input.split(" ")[3]); - input = input.substring(1, input.length() - 1); - int x = Integer.parseInt(input.split(",")[0]); - int y = Integer.parseInt(input.split(",")[1]); - game.placeDisk(x, y); - } else if (input.trim().equals("show available coordinates")) { - game.showAvailableCoordinates(); - } else if (input.trim().equals("show disks")) { - game.showDisks(); - } else if (input.trim().equals("Who is next?")) { - game.showWhoseTurnIsIt(); - } else if (input.trim().equals("show score")) { - game.showScore(); - } else if (input.trim().equals("back")) { - return GamesMenu.gamesMenu; - } else if (input.trim().equals("View account menu")) { - return UserPage.userPage; - } else if (input.trim().equals("help")) { - System.out.println("1. end of my turn\n" + - "2. Place disk on (x,y)\n" + - "3. show available coordinates\n" + - "4. show disks\n" + - "5. Who is next?\n" + - "6. show score\n" + - "7. back\n" + - "8. View account menu\n" + - "9. help\n"); - } else { - System.out.println("invalid command!"); - } - } - - if (game.getModel().getWinner() != null) { - System.out.println("match just finished and the winner is: " + game.getModel().getWinner() + "!"); - game.getModel().getWinner().addScore(); - game.getModel().getWinner().addReversiPoints(); - game.getModel().getWinner().addReversiWins(); - game.getModel().getLooser().addReversiLosses(); - } else { - System.out.println("match just finished and the result is draw!"); - game.getModel().getWhite().addReversiDraws(); - game.getModel().getBlack().addReversiDraws(); - } - game.getModel().getBlack().addReversiPlayedCount(); - game.getModel().getWhite().addReversiPlayedCount(); - Log.addLog(1, black, white, game.getModel().getWinner()); - - //the menu after playing - while (true) { - input = scanner.nextLine(); - if (input.trim().equals("show result")) { - game.showResult(); - } else if (input.trim().equals("show score")) { - game.showScore(); - } else if (input.trim().equals("back")) { - return ReversiMenu.reversiMenu; - } else if (input.trim().equals("View account menu")) { - return UserPage.userPage; - } else if (input.trim().equals("help")) { - System.out.println("1. show result\n" + - "2. show score\n" + - "3. back\n" + - "4. View account menu\n" + - "5. help"); - } else { - System.out.println("invalid command!"); - } - } - } -} diff --git a/src/main/java/Reversi/ReversiView.java b/src/main/java/Reversi/ReversiView.java deleted file mode 100644 index e73dc44..0000000 --- a/src/main/java/Reversi/ReversiView.java +++ /dev/null @@ -1,46 +0,0 @@ -package Reversi; - -//view -public class ReversiView { - public void showWhoseTurnIsIt(ReversiController controller){ - System.out.println("It is " + controller.getModel().getTable().getWhoseTurn() + "'s turn with username " + - controller.getModel().getPlayerByWhoseTurn().getUsername()); - } - public void showResult(ReversiController controller){ - if(controller.getModel().getWinner() != null) - System.out.println(controller.getModel().getWinner().getUsername() + - " has won this match."); - else - System.out.println("no one won the match, it's been a draw!"); - } - public void showScore(ReversiController controller){ - System.out.println("Player black named " + controller.getModel().getBlack().getUsername() + - " has " + controller.getModel().getNumberOfInputColorDisks("B") + " score(s)."); - System.out.println("Player white named " + controller.getModel().getWhite().getUsername() + - " has " + controller.getModel().getNumberOfInputColorDisks("W") + " score(s)."); - } - public void showDisks(ReversiController controller){ - System.out.println(" 1 2 3 4 5 6 7 8"); - for (int i = 0; i < 8; i++) { - System.out.print(i + 1 + " "); - for (int j = 0; j < 8; j++) { - if(controller.getModel().getTable().getTable()[i][j].equals("E")) - System.out.print("\u001B[36m" + "E" + "\u001B[0m" + " "); - else if(controller.getModel().getTable().getTable()[i][j].equals("W")) { - if(!controller.getModel().isLastMove(i, j)) - System.out.print("\u001B[30m" + "W" + "\u001B[0m" + " "); - else - System.out.print("\u001B[31m" + "W" + "\u001B[0m" + " "); - } - else if(controller.getModel().getTable().getTable()[i][j].equals("B")) { - if(!controller.getModel().isLastMove(i, j)) - System.out.print("\u001B[37m" + "B" + "\u001B[0m" + " "); - else - System.out.print("\u001B[31m" + "B" + "\u001B[0m" + " "); - } - } - System.out.println(); - - } - } -} From 05c09405f3e5a2b35e1cc46455d430162524ea4a Mon Sep 17 00:00:00 2001 From: sahm124 Date: Sun, 10 Jan 2021 20:10:34 +0330 Subject: [PATCH 2/3] graphical first11 --- .idea/libraries/javafx11.xml | 16 +++++ .idea/libraries/json_simple_1_1_1.xml | 9 +++ .idea/libraries/json_simple_3_1_1.xml | 13 ++++ admins.json | 1 + events.json | 1 + games.json | 1 + logs.json | 1 + .../BattleSea/Controller/BattleSea.class | Bin 0 -> 791 bytes .../BattleSea/Controller/GameManager.class | Bin 0 -> 8599 bytes .../BattleSea/Controller/GridManager.class | Bin 0 -> 6454 bytes .../BattleSea/Controller/ShipManager.class | Bin 0 -> 3834 bytes .../BattleSea/Model/Coordination.class | Bin 0 -> 1548 bytes .../graphical/BattleSea/Model/Grid.class | Bin 0 -> 1074 bytes .../graphical/BattleSea/Model/Ship.class | Bin 0 -> 1719 bytes .../graphical/BattleSea/View/InGameMenu.class | Bin 0 -> 9323 bytes .../BattleSea/View/StartingPage.class | Bin 0 -> 4969 bytes .../Controller/FriendsMenuController.class | Bin 0 -> 4913 bytes .../Controller/LoginPageController.class | Bin 0 -> 3562 bytes .../Controller/MainPageAdminController.class | Bin 0 -> 10383 bytes .../Controller/MainPagePlayerController.class | Bin 0 -> 4701 bytes .../graphical/Plato/Model/Admin.class | Bin 0 -> 3421 bytes .../graphical/Plato/Model/Event.class | Bin 0 -> 4620 bytes .../graphical/Plato/Model/Game.class | Bin 0 -> 2030 bytes .../graphical/Plato/Model/Log.class | Bin 0 -> 3324 bytes .../graphical/Plato/Model/Player.class | Bin 0 -> 14007 bytes .../graphical/Plato/Model/User.class | Bin 0 -> 3894 bytes .../graphical/Plato/View/BattleSeaMenu.class | Bin 0 -> 7111 bytes .../graphical/Plato/View/Commands.class | Bin 0 -> 4803 bytes .../graphical/Plato/View/FriendsMenu.class | Bin 0 -> 3858 bytes .../graphical/Plato/View/GamesMenu.class | Bin 0 -> 2529 bytes .../graphical/Plato/View/LoginPage.class | Bin 0 -> 3739 bytes .../graphical/Plato/View/MainPageAdmin.class | Bin 0 -> 6519 bytes .../graphical/Plato/View/MainPagePlayer.class | Bin 0 -> 4927 bytes .../graphical/Plato/View/Page.class | Bin 0 -> 748 bytes .../graphical/Plato/View/ReversiMenu.class | Bin 0 -> 7590 bytes .../graphical/Plato/View/UserPage.class | Bin 0 -> 5939 bytes .../graphical/Reversi/Reversi.class | Bin 0 -> 9527 bytes .../graphical/Reversi/ReversiController.class | Bin 0 -> 5593 bytes .../graphical/Reversi/ReversiView.class | Bin 0 -> 2886 bytes out/production/graphical/Reversi/Table.class | Bin 0 -> 1861 bytes .../graphical/graphic/LoginRegister.class | Bin 0 -> 280 bytes .../graphical/graphic/LoginRegister.fxml | 14 +++++ .../graphical/graphic/MainGraphic.class | Bin 0 -> 274 bytes out/production/graphical/module-info.class | Bin 0 -> 216 bytes .../AdminGraphicalMainPageController.class | Bin 0 -> 335 bytes .../graphical/sample/AdminMainPage.fxml | 17 +++++ .../graphical/sample/Controller.class | Bin 0 -> 1861 bytes out/production/graphical/sample/Main.class | Bin 0 -> 1200 bytes .../PlayerGraphicalMainPageController.class | Bin 0 -> 338 bytes .../graphical/sample/PlayerMainPage.fxml | 18 ++++++ out/production/graphical/sample/sample.fxml | 33 ++++++++++ players.json | 1 + src/module-info.java | 5 ++ .../AdminGraphicalMainPageController.java | 4 ++ src/sample/AdminMainPage.fxml | 17 +++++ src/sample/Controller.java | 58 ++++++++++++++++++ src/sample/Main.java | 23 +++++++ .../PlayerGraphicalMainPageController.java | 4 ++ src/sample/PlayerMainPage.fxml | 18 ++++++ src/sample/sample.fxml | 33 ++++++++++ 60 files changed, 287 insertions(+) create mode 100644 .idea/libraries/javafx11.xml create mode 100644 .idea/libraries/json_simple_1_1_1.xml create mode 100644 .idea/libraries/json_simple_3_1_1.xml create mode 100644 admins.json create mode 100644 events.json create mode 100644 games.json create mode 100644 logs.json create mode 100644 out/production/graphical/BattleSea/Controller/BattleSea.class create mode 100644 out/production/graphical/BattleSea/Controller/GameManager.class create mode 100644 out/production/graphical/BattleSea/Controller/GridManager.class create mode 100644 out/production/graphical/BattleSea/Controller/ShipManager.class create mode 100644 out/production/graphical/BattleSea/Model/Coordination.class create mode 100644 out/production/graphical/BattleSea/Model/Grid.class create mode 100644 out/production/graphical/BattleSea/Model/Ship.class create mode 100644 out/production/graphical/BattleSea/View/InGameMenu.class create mode 100644 out/production/graphical/BattleSea/View/StartingPage.class create mode 100644 out/production/graphical/Plato/Controller/FriendsMenuController.class create mode 100644 out/production/graphical/Plato/Controller/LoginPageController.class create mode 100644 out/production/graphical/Plato/Controller/MainPageAdminController.class create mode 100644 out/production/graphical/Plato/Controller/MainPagePlayerController.class create mode 100644 out/production/graphical/Plato/Model/Admin.class create mode 100644 out/production/graphical/Plato/Model/Event.class create mode 100644 out/production/graphical/Plato/Model/Game.class create mode 100644 out/production/graphical/Plato/Model/Log.class create mode 100644 out/production/graphical/Plato/Model/Player.class create mode 100644 out/production/graphical/Plato/Model/User.class create mode 100644 out/production/graphical/Plato/View/BattleSeaMenu.class create mode 100644 out/production/graphical/Plato/View/Commands.class create mode 100644 out/production/graphical/Plato/View/FriendsMenu.class create mode 100644 out/production/graphical/Plato/View/GamesMenu.class create mode 100644 out/production/graphical/Plato/View/LoginPage.class create mode 100644 out/production/graphical/Plato/View/MainPageAdmin.class create mode 100644 out/production/graphical/Plato/View/MainPagePlayer.class create mode 100644 out/production/graphical/Plato/View/Page.class create mode 100644 out/production/graphical/Plato/View/ReversiMenu.class create mode 100644 out/production/graphical/Plato/View/UserPage.class create mode 100644 out/production/graphical/Reversi/Reversi.class create mode 100644 out/production/graphical/Reversi/ReversiController.class create mode 100644 out/production/graphical/Reversi/ReversiView.class create mode 100644 out/production/graphical/Reversi/Table.class create mode 100644 out/production/graphical/graphic/LoginRegister.class create mode 100644 out/production/graphical/graphic/LoginRegister.fxml create mode 100644 out/production/graphical/graphic/MainGraphic.class create mode 100644 out/production/graphical/module-info.class create mode 100644 out/production/graphical/sample/AdminGraphicalMainPageController.class create mode 100644 out/production/graphical/sample/AdminMainPage.fxml create mode 100644 out/production/graphical/sample/Controller.class create mode 100644 out/production/graphical/sample/Main.class create mode 100644 out/production/graphical/sample/PlayerGraphicalMainPageController.class create mode 100644 out/production/graphical/sample/PlayerMainPage.fxml create mode 100644 out/production/graphical/sample/sample.fxml create mode 100644 players.json create mode 100644 src/module-info.java create mode 100644 src/sample/AdminGraphicalMainPageController.java create mode 100644 src/sample/AdminMainPage.fxml create mode 100644 src/sample/Controller.java create mode 100644 src/sample/Main.java create mode 100644 src/sample/PlayerGraphicalMainPageController.java create mode 100644 src/sample/PlayerMainPage.fxml create mode 100644 src/sample/sample.fxml diff --git a/.idea/libraries/javafx11.xml b/.idea/libraries/javafx11.xml new file mode 100644 index 0000000..0a4cde9 --- /dev/null +++ b/.idea/libraries/javafx11.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/json_simple_1_1_1.xml b/.idea/libraries/json_simple_1_1_1.xml new file mode 100644 index 0000000..9fa52eb --- /dev/null +++ b/.idea/libraries/json_simple_1_1_1.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/json_simple_3_1_1.xml b/.idea/libraries/json_simple_3_1_1.xml new file mode 100644 index 0000000..50bf4b0 --- /dev/null +++ b/.idea/libraries/json_simple_3_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/admins.json b/admins.json new file mode 100644 index 0000000..b456185 --- /dev/null +++ b/admins.json @@ -0,0 +1 @@ +[{"firstname":"likmhjngf","lastname":"lk,mhnbgf","username":"hasan","userID":1,"password":"123","email":"iujynbgvds","phoneNumber":"olikujyh","isMainAdminJoinnt":true,"messages":[]}] \ No newline at end of file diff --git a/events.json b/events.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/events.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/games.json b/games.json new file mode 100644 index 0000000..7084eef --- /dev/null +++ b/games.json @@ -0,0 +1 @@ +[{"name":"reversi","gameID":1},{"name":"battleSea","gameID":2},{"name":"reversi","gameID":1},{"name":"battleSea","gameID":2}] \ No newline at end of file diff --git a/logs.json b/logs.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/logs.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/out/production/graphical/BattleSea/Controller/BattleSea.class b/out/production/graphical/BattleSea/Controller/BattleSea.class new file mode 100644 index 0000000000000000000000000000000000000000..e5d0f192972916bcde651ebb1472752a92e29da0 GIT binary patch literal 791 zcmZva-)<5?6vn@^Z27ZnfdZ{olwxZWppARsg%>nlw29uJX@bFUInc2kv)xUWLE~eY zwvyPy2k@bcXNE0p3^#jb&Ybi6zB#jh{{H$6;5GI=ILPGS`dCAjP&o~Sj)V8{nGAz> z;!+Z_M=DbK4I$I+3=7Dkkb~!=2%peA7FvgLAVqKzM>>haP$t1LNhp3+$y77+yG#i6 z{zLpC+cU_LkFw$UQ#pyFv&Bgc8-&IZ77UgA77VmVw2ID8#kurQLCqMi6As#|*sF4# zq3PT5@d%IkQpqeL)Y_f2)QT8*&tqR1W3J)jDV`AuJD&heY25U zR7Txvwt0>9IjTRg`RRXN6E*BS;MG%J9=l84o>c~lx5$s?*uKIOgCTB&Edmdcu*W+G GFa7~nxK6IZomQx7z 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 N)1m5C8`NtM`!5~hNMis1 literal 0 HcmV?d00001 diff --git a/out/production/graphical/BattleSea/Controller/GridManager.class b/out/production/graphical/BattleSea/Controller/GridManager.class new file mode 100644 index 0000000000000000000000000000000000000000..a4e1b88d972c2618aa4051763cdda1671e3407f8 GIT binary patch literal 6454 zcmbVQYgAm-75*;so?ODC8Nwux#Dpl%U{I-oK@&7_ED;iDVje0J<^~2PGdMGZVAL3m zuZnGLYb$Aul(ym{)@MfR10S`m+E&}Ded_A!kFM2U{na0>X2pK{+<9DJqO}W{Id`9P z_Suhbe`jCbI`#YvfG^@hFA89D!LGvrr-tIe;QnA^BpB^)?A$YG^d&VoFAPV+$uY8mHxZ!cZt78Fl4J$STlgWtDZ3G+JW6@+h7Ks?~#!c~XXmc^I^X9I?@;d@t(g ziUgCf#?7&i5ozRj%!s$Tu#hu3CFZ2;_o5KRVpNHS^6Ego&89V9(6I&U0GRjgmEqg>YOvEkuZ)QBd{)0SYV3l%ylu}nkhd{Y?* z4fYMOeS1_scxn}Db=1i&Z#dD}*Ecd8HWW=V>U(c^BX|l|}b(FrF~@ILH08hMItvU^?H03v{%g^>o1K9taO-fl)%c zM6h8@KHCWk4gTspk&=mMoG;!v1m}o5F(5jgKv%58S{5pq24OH-H7Ul zNfNw!!v}f>46|U@;aVMWFn~IhT4H0bZZ{7d(Xn5`;9_tDUZrHb13JcVorc8%6jlXm zbbB~Cz)>O@j3%kgClJh4K(<7#7lOE97DJkIZX6<7;!^*Ib=-_w%#uqRD&=3ZYuCI8 z&vMg?>v5}&+i*Men=}*XkH+FgdoaPO$cs`{`giL1ibTdI%)2MpHuL+F+!#B9;rhr5~xJB1><3PP7CeH0jYqMmgvYK^RE#yN?|{l z{gUuLBbrbppaq!uJ+wQA!B!G&KFji}7bK_2i1f`cBq%V=cN{QF(=ld#JLMd?#7fLd z#mqdvPG&-6zXvLuu3)%@tpoeP#<4?@-g;NU)!*VxAX>UTGQc zAiOU<&}R$_6D3^uiH23VatTC3#(~a}War)uv5{yfkzGlQn%c6JnlXRLd=5|sw@XrV z+ML}%H`^)dv)r5-mRYiEwhyyPi=nr!C)$>OMlrhZQ>`23XjpU1>4Y62~X9b5h8_9uKC{g6ZZ@l;|e&@ow!jtc5sLG`_9NixqG8#?N zW0{gVHwOEXvG|yV`>ZWddZDTGvS2h6F%nfBvDnbaaO-?#wMb@d>=_$2@+{wFS#Nfz ztya2Dt7s2KBHiJn(dx$Ui5iWl2}Ie3wnu`AghAB)NyF-SuI01Xg})GEpT3l3YPyFr zcv}_lnz5l&8f1^k|agDo-ctnf`0~TtM=yM(C zvrmXoDHwGE9hHg{!qcpl6!!V-ISB0`Y=8!)V-0JgkpMcI??!9+ZqkHyoP!PmDuiaj zrwNBBzk_cpN6|_!T!^RGr@lZyy~{U@fAIOAl>dw1`VXOT3Y)Zr2xz5z8xYtH6QnJi z`!Rv#=2_eEI7co5C?mT+D`V0!iRb7EJSmCi=qVGF96imE4K`|jhOl5&Yc8Ci%t8B4 zBE^wY!J-}|r%*>WJBb4REzoKfeFO)83rgln{5CvGJMBE{IsQFQ&lHff7b%m9f5YBZ zA#m|j6ca05Ot8<+2s2^pZOsm!gJUMLk!vR5BOvTascmAU%+@9qKuKEQu(cg=5EXA9 zvGeoAY3!&dCNQYjn8fCcVk*lj<{?x}NGQcVNAiDCTq)e7KtOUDPA9)Im;0Th4Ui}b z(8b(uAt`LdndnA6dYIL1%>7pWY{4$<`E0-IFM?R>|`$Of}A#y695j?y{j=taCl`wFO2GHn)n zEttK9*_^H@Oy_h#CZ`!mu{Ea!@;1lJ$}RG5=2XaPT&jZ+5^|{MH3vPFENxOb3A^i4 zrt7&n`8-BJxE-9ps?#nly-^XmO;LK@v(hVQk4cKlSQk<;%W*9(=Z!bO$PXgPsP5;> z%czAQ$FngT&&F&#OOWFhf+S^s3~77i#V{R(4;WWcr0He~H+9s_th2RMR!rgIy2_>& zyWig8@H=LjNoM3lpK}T;{iMI97PsG>LcN%MWCH5p4n=bx9x( z;Vcjir-2}W+W_Y&EKCP(vHTm7fm=5xb|=x`Le)oR3>}swW*9a6jKyb`O(VahKX6DG zpWvWCwIPBh;9g~-bZcCYHb=uR@@_7hyLlq-<~P_Cm?yuVhH8K(m(7Ce`KN*E5(`wn zeiRPdaRt%8D~P^nxdBa#-cR%$BNiXv9d-=s*$ZxBin5>U!ovsQv&xV;=<(Tw z&`Q5ayiQ}Kbw!5pEGraDA5lS?n8x3fVr$d#j%ffdr>p@q#x#KU(<}pW>e;>ge+Kl@ zTq)Qq8fKd9>YDZ0r*L_L&(S31+T!xNW}4l$W{=O~b5Ehp@A7$?TD*R53is0X3_-JG zDN`Xh;vq%7r|#bqxoR}qpa+?NX>eX!J&ao@ALnIvjE%@c zY(bvk&r7`c{>sMT6rR@XcuFh8OIi(Pw069#ZO1Fx)f|T?8^r4hOuJdPwfqOAv_W*_X^n>POLpl6s^tm6S9y{za3|r_&RLf0 zcIHTOyig8rrs$W)Qa1;l}~^;5VR|&{3jLIcr_ET9a04x^-xB)}G2Kl$>x< zPOekIAC8Qap%i5X0w&5~Dl~Lkxm?m7wyoBlbSjrgCzE!jb$G^^AFxu^w4G7V(^pdR zzdC*`tzDUnwHSA@xd1BQ7iD`)RN*0oQY)Dh z+^j+{zQci7fSZFRYVfc^`BcWXa&}?A9`5gtj0j@L#6Hy0lWCid1;hOj530ytnp96? zH~sSL6(~VCV4?w!&>SacXXp+cs|goSTo3vS@>n?z;ZXyJO?(PR6sk6DUf-f%%vjk$ z`zmcAw_|c5VxkdE3R=n)SFd9iTNpqcT1-49u;os+*UpmoMLQu395wMc+7v42q1Zf> zI-PM63S;5;PA;pp(&j!DsJEOm80()4sG|B_$!k+rtaQq#UM6_e=4HZOrqtFD$qM6G2g}4HrV8nkvog6eX-5Lpu*0F^xVlMT zo4B~{()q5dPF6Bw#)Pvj9QB0HBWYmHL<;F0D$TR9T*yjKxf!N#P%3zv)pr>{eutfD zrsP6~5pCJ2MV#1%AQckpj46b|JB3@?21~Jr9ZO+%+)3Gk3v-ip=BzcDq@+p=OpaI? zN9F~gmYZ>yk_U@)6&02!TrVtPnY{Npb9O50W{m2mEaj>gx+q%-Bt&#=w7!Se`@!Aa zk{-0~ymB9(_Yhf>bT7)+b220?acg$SGBuQDH?~zd*{+m(Y@_)o94>A#MLtVF*L{xA zLvyOAdnoMRrf*AJwIqpGIPicr#6Vq4TGMPDV;qXDY|Y!S3%=}`ckiDf)9x9vqCF&` zVmN0_JwIU0yWuwQ3iUZ`MM<}?dD~r)TBdN84JJ3^UO^JXO%9myR>ocrX%T;c;q*dg z%0A^tZdHn*1=b#us{@a)yZd-&`}o5f5eoC}>=I|Zi#awZ(~;pf%UKqFX#8K>cnhkr z>3tZDAEILP7Iwdn%Er3-JgR@?0_6Cu;X&|v)36I=*o|sb@}}H_1xgz|7+l5`&IstL zQ|{<07G0xi@gVI59zm~CH|-pG=e3|csis9jkb=`P-#b5sO)w$ z;E$FE%Y%Vs914{M%iB84keSC5RiDlyb^~SpsJ4Q#rE;~h_P3yR10^yuID0Rsy#|T*Ir3Z7t*a8oo)rq-BG=>-ZMF zP10Vc^cj@hL8*a5YiO4L{2k}aK%FvhUNOjP2*KRGVBkCal?@I5g}w@d-;YtT%0T(# zrRD_%e_`sDP)}d2p6t}4nm?)s^}1yo<5y4Kgt?@xaY;*bO4L3?-DptPChCJ4r^YQj zmB-WPmi%i=I!XP#B(+CjBLW;hK^LE-f_4%b#a=#AYH^$-c94n~>1jtVPHs>Yp!~bc z8Yzdq4Kn&5iB2~tlSKCsvkTwj$WP=>e4iuDrOJf=69kk}HLDDglE;|mr0+kTlj;&v zYOpf(GnnomdlT<+@C^T+{Tu5!Hg)Ptfa9B72t6))Lg(f_ifvV-!r} zkqBzCH=#{Tc!KGmPVwxpOUNHd-pbl28cf=0S zxM}Z|``fFx1+`*(^$q+D%eULxe{Xy5gSY8;!QK{W7G6T!V6A|Gt72P`Y6>&-?F?xb zAB1t7W}Q667tATvS08JumqCrQS_T;2LHra$_yym2zvTE`%0A%QZ}BYtgc1CePq}~M zJpPSQ+`*VC!MLj7b8a7tqXFksgip10OsFncDvn7t!Y9^q98Xc^a4n4)HvyN}nvV15 z4QkeLl$J;;YOK=73$hnzwI@4(pW_GA=f}Tz!b{n|^Mst$)N!70WvZDcTp6G)ttT`` zQt?b^j(*5G_tB5#0-jX-DO6Ye5A{;rcVMVh99xC%y8|Dm<(wYnlvVtoE!6NPj(7#Y zn}Kg)Vn+(CH{Miey&(>~);qu?Ve8fXY=-~PHk)A;NdS_p+&MhTcjFPHH#&YTFD!9J ZZiz_2L2-eV=ryfcX*UW#qRfZu{|5%+g*pHL literal 0 HcmV?d00001 diff --git a/out/production/graphical/BattleSea/Model/Coordination.class b/out/production/graphical/BattleSea/Model/Coordination.class new file mode 100644 index 0000000000000000000000000000000000000000..a135e933e602b7f93e9c76f5e7e9391cd3b336e3 GIT binary patch literal 1548 zcmaJ>?M@Rx6g|^+Tc}$o3sm|35VR~x6%i6KB+|sBTEwJ=DF2qSfyJ^*+AV=c@g4Y~ ziH(Urd;lNHcKMbgLaOSyzU`9ID0gL4{JP_wY|F*FI_}BE z;fuO`>3GdXv0Wg!NgY#|Rv2&^yWaVceN5IvNzCe)lSJBS>{qMJ3rA8~zEoN{P)HQ1 znt)};wcj;aR{vlf)fh3#Ue&4{SanCvVKCvJN;k9R|8>1hs)p@{(iFz?x0?}aZE5{S8oCa4NoC4F=qTR^fs=wa)3s6lXTT0Mis|;A?DYO5 z0wErOuttPJB*Igyht2g`pOTJxtzYjc?ppsWvN+RUyct=%5jk|Df9NkFi>Ep>>6Jav W&%6^^JQrC!(_g$BS^PY3X7ew=$Ies)2ri((-ccX!C3kgiX(PA~sH|$pa~zQq4xR?y5-!1_eg{1v8OF zPI1o*B+Aulhv9GvXE4G_@X~if(yTpcJ5kW($b82Qrv-+~)sqe?O9FD1as)Cp&vzef zZLGTCqO;m&C0h#`PJ77-J+&{$2bEQIqx_# zfz+BCJ@{iGjjsxrEG~9@5g0F5{%5E_9}$YK@>fA<&oO3y{R29-eQ#SyNbGc?Sr4|t zhCAme?MWqLQoRtI$;#5w4MD}S>uH>X#*~d_QSBlq%-*$DbU#*EfoPNi7 zI*ME^m|RWX*@q-hc;rN|g)3d~JcTGJY2{-+fEZv6kVtELSeWg$gOhKb`UBGDsnLjk~AqoQiBO^Lpy=N(lOHk!f*H;K4@ZN z;)5UHM;X^X(?A_Y(`3#$d-mFE?X&ju*Y6)c0X)OY4#d!wLfk+CNrm21>%z)ct=e&Z z@95Mn`wGc*r{?&Z3T@fkK^pByr_f=b6NbXzYs>emcFDH#yKcp<=1V8eM}>Hq2L)A- z^lk$^lAEmBwPXK8LVX7MC6u^yDnVq>z#R-R;$GHlkA;i-Rm*pqRk^>iy)}W}H86rv zg-)lwZP$Izy|OE0I+S-z`ON?COnnG9I_De0Qr?R&)|B@{V3}Uu#6vwk$5=|Z3ejtr5 z7T6TeMeT<|JNNI!2oiGJN;sL#{hyJ1gtYLnJnu+K?gdT`u|$NIdYld^tP;4W&~s*e zunT_S>@4t(j+NYVuWau)a)D{NlSLU%OwrXC$G4qR#Hrz~U&c|d95uaizPQH3dcD$0 zy>fW;%0c1U1&$o<^Z9_MPs~qnoi)EhnPUy4%<%@g%!vki&5?Km17=$T!zOoQUv-r% zpVQOkW?qQ|kKjcFcsR_w8VO$0UP#Z&^hT^o$`B8S wZQr2nn=KWR*M3bz(vOAdU$uY}*WmRCdVWYP-%v2YZ%Dt>QsIVvL%Xy22Q@MAr~m)} literal 0 HcmV?d00001 diff --git a/out/production/graphical/BattleSea/View/InGameMenu.class b/out/production/graphical/BattleSea/View/InGameMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..ad61df921d566efe96d709788d767b52d4c1ba7a GIT binary patch literal 9323 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 J>68Sf{uz~)91j2h literal 0 HcmV?d00001 diff --git a/out/production/graphical/BattleSea/View/StartingPage.class b/out/production/graphical/BattleSea/View/StartingPage.class new file mode 100644 index 0000000000000000000000000000000000000000..d630261a03bbacc374b06f03f6e6002b4e364dec GIT binary patch literal 4969 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 literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/Controller/MainPageAdminController.class b/out/production/graphical/Plato/Controller/MainPageAdminController.class new file mode 100644 index 0000000000000000000000000000000000000000..603af73bf73a2eb2172119972a98cd6296f5e4af GIT binary patch literal 10383 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 literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/Model/Admin.class b/out/production/graphical/Plato/Model/Admin.class new file mode 100644 index 0000000000000000000000000000000000000000..c0dad181aa84010b6c516a502a532b9dd06505ca GIT binary patch literal 3421 zcmb_e`*$2=8GgQGvopK-NJ`p?Zc?HY718769Dnj>j>jMLU+6*cd1rQZXWMX&Ke*@Y?lu)j&d{4M~NoCtb@g4UU%zwmZ0|u;>&Ol9v2?3LEoB ztYg+-#do+@E?Xz_j^}67Fp)Bl)@X-TSQoc&pJ$g9+UIS5kL$_-wnx|m+M_4t>?PkR z71QX$fW{6C((s5=bo^aGdedoEctC#Mu5k-)r7e%;2uqvjne7b}hBV2rGu#XOTozO< zr%-uVBP+_9hQ^$-=L-tr;ZBWRveC|syw#B3rLiZHPgeUfy$05uaC}`L?tZ-E$4tl4}r3!8CT!RX0kmE{`i3I}S z#!x?^aWvv;R1Fi0)T-2&E1_;PLFY*k?=ufs>pO4JPM` zzCAB3ZXC1RioKs{bvJ`j)5w~5n2wiX#s8qjhobNzQkZx|q0JVeODH`iPLoYb&D8j) z#>eDf2Lp_;#>6KWo8ygJPBEbOy(Onu^u^96H9jT7V7=qzuG~L^PaF7*B=^~-5dvHZUzz0-Ufh3_vh5rkv2hMb^N} z3R{D`xHIOs_C(1aD^-exIxd_aBXe%;&6b`jRmyX=C@Q3b5O&CET+fy?dADgnTCOxu zcqVxIHlO*Ds6Rgo11Wq5nwsCG#lMyoNLCqzmtYPX8E$UvtK#~n&?)Pi`nf)f&Qu`z?p61=< z3EY4m(!%{rayM=M2tOvU+bI1BeoF9|IL`=FvU->+f$9t%;i@HA&2ZHktQNRR1gq0r zwbB1>Jcs8A?|Di$An_VZ0~=n$fC2Lo+Aq<<&$*MJ%|3p4tKqMd=@$NrpSHebyi<~G z36hmT4BW^AHw8iKPzk@F6EFczXlh(m=ltb$?yJ?g$`i|2sht?DyF8D41K-f)4!Rs{ zaw#MOF7O)#F@b0K6jJB~nqK9JAQ<&1PYXi-V*RSvpKTr4viTYOX%$m5>r%_OZ@j1$-#q3LHsp5SXV7204f7g6m>O@jEE-gmVQe67b3jAo}RD9zDk@UlH>7$YKBXQ|t zk@Vv$czgvhD@5IZzTK<)~f5TmPl|=pr_Tit@7K-)}#!al(FYzk^ zo5El4A}+FO2L8?-yhx2#Dg8BmLzxhcrTaHhN?pRA>oof<$^E-J&2FY0`D|Q82ix*n Z=b`GWfCJ%p2szMBgHr2Pc%TKp|1Y*SJ(>Uj literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/Model/Event.class b/out/production/graphical/Plato/Model/Event.class new file mode 100644 index 0000000000000000000000000000000000000000..b8c554e1a951f66e6ae3b6117eefe7fcdbda8801 GIT binary patch literal 4620 zcma)9TU1Yc&XO={Z=(q>!oU&7DyYH%V*#9$)`TKT+8KyZ(Xa#Z~x~ooEZ-419Q&#|GmHc z?aROS&!7JN)*k>I#qXnNLcl=KL8%ate$1e(zT)4(nhw_vxzt!HvprI45?Wb9mGbj8jSt*w}| zR_#)GYT@isw(Kr;jQb!a1?^T7ZMaP#xM*FlsXgw69OIgn>M+rXJqpd`idCwNSQU!) zdN9XI_F|!wwelyeoSn~DC9TzM;&#z8xFkAaZ?B17+@TP)h3<5^P$HB{$<}@o?-8%U zdaEoBA29J=ypQb4*~^q;fVAXYCi(=#(2}W)Xvafi! zy=a%BIEJK&A@LxR%~xiuT-AgVb3|tV0^L2SYQ7GhWi))>Ib6#%ldNP89U_W7^B-l}n?N($9 zDkiE}VU3ZDll}TbyoYJp3RbN#B&DJ*nOGG^BqxuQ?NVwaf?EuHVzZZI3yCu&mf&nD zTd_+Kd{UvsIcA5J%Y}RtPvRM=l}|Msh3N{l7L&0Vk$BF;73pE2g22aRI zHc^G$JVN$l^}@VeI&016xY9OWNL#rXi`|Xi?qaaQ-pbh4(Qv%sQD;Zd?@|Xo5@If- zgYV=^%MxwCKfgPLthwx#HdVXa<5E8|m^M!Ld2yLbZA=h-0K1nflKPg}_E+6xE^d9mcPcL;^oMnAJ z**5s)^gYfB`c<2|y81-kf*J%CaFM3kHUU$Lbl6`3EiihVagAxlbmDC ztQIpIv75D|mKo#=QqNl*gVEzjQ|zur(YYfiG!-xM#5+RuJ%Xaq(MxH&SjiUhWdqka z@ii93PGxiUWTA4ZP|as*GA#U|bk4oXM5hbYQrZ?l!I4>iNVGZOTX-P?nh}+04~5V1 zs|nBZk9V5d_viV|i;3Rj)k8mdnb1#OAoP=W0R80L*G~?4K0ApK!Wa1a0>55EfL}l| zz5x}#0pr{Tn%5AG_phNfKCp)N_~074;vK;?^u(`W-#YFLKE8&7@xU5l@-z6F2LB>| z<0K8VBSZF^XugWCx%7`xM&z5xEWVDzvs+~3VhQX+1pBoy(-FkiwXtS=11pq}80^(M zK#(A>@>@Zi3G3AZZv4MVv){tEU5!!hiP=#6b?g(90j=Vgyo((BJSIark-&E-=a7(< z=lSKN_Pd1QU~{1pHRv}G6*f&CHvM(5PS_lf?@{ghHGVIVP>{N@ex~dGz;N&0tBel; z`+L`M?;mk&9mlWZehJu>fO`4n+u}n|8|u_KN$~eD+1`yi`Rv0z+HjmQ2D$%$d6106 zYMG0<#TjCrf5_b?kGHb-BI*5z8jR4pFqC?SNpXn(m^-|0@mEse^}e;y`y)QyE4jz` zDEGWVG;ipR`zrqgW3KWrrKMoP@g7!sV;K!I9uH`QPDiTdd01Dalml-{K12>S5;@^Z zzKHXhu_3Z z0J8&aANB5i%(L;hcVphOVS6_gu48!Mr>ii4O;9Wec6rNKd z{*xiY^EA;oeepY<`VbNSj8{3$n}{(&3~A8UI5J=7AeNE&cipskwZTo@ph3K5yg>w2 zYt@eYim~Eh6RjW_U|qYYu)#6=rXHCuXjSQ?K#Ln) RcSw5YYLs^0qDT{N{0C($xH$j- literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/Model/Game.class b/out/production/graphical/Plato/Model/Game.class new file mode 100644 index 0000000000000000000000000000000000000000..55e89dab1c892b0800efbae6ec44af54ae5c2c2c GIT binary patch literal 2030 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 fNu%H9SqFraIN#jj literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/Model/Player.class b/out/production/graphical/Plato/Model/Player.class new file mode 100644 index 0000000000000000000000000000000000000000..d54052a0c22776ff2df78db68573ac35e01a17d1 GIT binary patch literal 14007 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 QZN$nF<95}f?nK-F1BQ?WjsO4v literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/View/Commands.class b/out/production/graphical/Plato/View/Commands.class new file mode 100644 index 0000000000000000000000000000000000000000..a469e8c8a6b018c5e29fda895bbabdc3719671d8 GIT binary patch literal 4803 zcma)AYhWBz75?rfO(yA0GMO}OlBQ2unoTU>sYpu8l5Eqo>2AnugDKUx*-Voy$!^$3 zfGUcjD2SpcibYWrMXM-Gp@kw?MNuk>q9}r*D2i556h*1L&N(}iY-oO%ANls1z302< z-h0luXXo(C2k!;&2Gvl307}YHsxc2`3Uz(s@m#unAn9D#-kF}5h^I!f3gxQ?LcQC< zw!*^mdgmC?Q3(ST%*j>ogvj-m&4E|W}+b`;OR0-|51u>kc7W$Tiu zWNtnAT`c8U_5=qiu?P+2Xw+!JVueNGOFowzZ_hZR&PDBg@m$Wyq{yj6dSWs;PHS2_ zhmz;Rv4$PIy-PHfVi{>n`f81ZWy~?29a^EW635Z_iFhtC=42F3DW0=)ES|BQ3-V4X z;rOdBQrcQD>M*ccq4exf=N1EN6pWS)$>4B2aegIv6y)t`RcI;J^><~CEgs-yyiQ{^ z)+*G`836{`73L50gwGuc4}>Ez+rUW*wLI$-1=Egfn=|F4a#>b7MWY>S4V

Ib&f^ zIHKXT24vW>W27y}c5l=;jqN%VbbokjbRb-q%fOimO)VQ%1T)S=ddl%9E4JOB(ZRMM zg^EyDmv7jqP{UKkM@D=ro++#m;?dpYVYsU&<`3`TJ)?P?kz~#v@6RG=w*`G`pXQE}M@4hz zvra~4O=t}9c*>Ys@tDUC_4P+L_Vk7gj4G^njTy~0nMv=YBr9HdQo~`L^L?FAXJ>R< zBsR1)9NA`o>P2IbPCSuF=Tm$%6HY46JD1itpY1Q8gXR-BJIbcE9qJ}8sI-Z7;Rq(2 zY&JeRYxcax1#EpGrP8KwZ=ZpSy;K@=#wS_-Z5kKyh)ZZ+>`l>ghx(#Dk(hyZdcmI^ zOLOo~rjuUqzf0p1Hn@z6t!&K3&_J}mCl(&+4v}L9-m9>FH`2lI z!EfyE2}fv6pZC^OIP;yEq?2OvmK~J3yrwT`+{kt}(>2x=iiP_PeAx>V(e~%?k!`-B zaWmW8LWN0!pfDLN{_6@ByX=KQVLDmwZ5p?*%|0p(URq9D-QihHm$PZ_4ruIStGg7I z9Ftbw8YMN@t-Ceu;=%V&%<>j+3L5z4tdcja{4I@pc<_C6Z5OR!s6TuT-TYk7zpK!E z%vxw0GJF|j3#I*g8uziv19Xa%so}nu@06!w;0NB~C|8|Hj;CoCeyH&P8$U$GUE$8& zNcb4zpHSAY4quo7JoPX`5?|6DNIbD%?>~Az4=dn-HHhEz>D}fFCo{nZ#lon<1baehf<4Klz znxb)bi>fztL<&LJwD#!o4 zkfTq2N&JV#Gpz9(<$OUyDvzh|Z@Eg7!5IZ9J4N>Y(RhySUm*L=O`%A4p>z#JsD2sv zpInigq}22IRg0`sMfpi|`p{p}c!AYkQK;e|jZg<6WyDa*s~m+?mBQg$`bbBjN;F>K z#-vOdN2=)!Ey20lRI1{g=@Gh;YI-SnBKe77CliYgb6XdjqZJCy+3C>E_ofr^@qu_I z$+n(ADKC(}o9So0j*4c@jU~x1EluTgPg!9nM^o`!K0{{pb4@=$!7=LOypHbwZ9V-4 zkb*gxn#|`Y9oBKONFQ9%5+v0%MNV?hyl&2guJ7PGEuGIKoQ=}@R{6gOPT)13brPjR z75$1>b5xn(lsbZmzW@3M}l;f2+|cGNF`m6%CsPrUO_6Rf>b93sRRmA5fh|(BuJG-km`gW z)c`?CVnIquK}sw^N)SN`Z9xi9+Nl8l5CF_3{;@@T9x7C+ng^wrt%RcgK&1<{ALWN& z+)7NTa{6B;-<6>PrZT+or;;99R9b=7JE0FDz~ckO<5dMc(S=c}QqAY@x%H<}JmVIW zpp>wtwXOL8tk$)6V&NTVzKw^8Of?Mv9cmd)L^U<^EVqy($V6#b5`U^9;SyCXRyE|D zscJnJ&!n+Dx}x=VG`H=?^4EHJYLR5cv}A>{NRk3q)u{yqsgjpyx9G3roVyViv{sc^ z#~(n;KC}rvq0~B2=*dD)ooBsX=;=bwD6`fHT`%;ka_elNT|ze+)+V8wh4z|dRz!H8 z@P4!0iU}VO{wC9~whP}O{4HjM^;Y4-!bi+XYp3ur;k(TF*0}JL@JUl!8R0qMQ)ZQQ zk?`HZ-)>f0?+|{e@OPUv)_a6sF8uwbXsEc`*?KQf!G9}9n2_|MEG*3X4MD*Q2Xsr4)2PYD05xy<^V z@TY|T(Oho*N%#@re>GQFe-r+!@PC>st$zuBUig2_7mpGwb@2qjG8az~EO&8)V11%PNjYq)qvgf?UnTAW)Ety z7Zwhp4u`3vJcfE4q1td1i&P~VR1+FiE1J|9^j>8%n$>nJQM<5I?WQ*&S7N!^gB5Bo zR;q*arsFVHsmJJb#St8@j$%!q5-ouy1Ou&T4V;0tz!s`M0k6K)tA*raKrMO|kN=6h literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/View/FriendsMenu.class b/out/production/graphical/Plato/View/FriendsMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..2980a79853c3608652b7098157aa8de88aacefc9 GIT binary patch literal 3858 zcma)9`ClAo8UGHD47zhTUUn!^!qcrOb;xW5%4RVdwFbm2&RZP}$iv6-G5eI>HJy zP#QWs>He(c*x7X2w0j2alxZdN!=_azuWG27Go2wT?-*8sklmeKu~(!?$x zM}vlzfO`Q`8k)~&E)LNi)4gz~0oN%VOF$1WHPMo+;>rF;5p+gOUF@{a4) z9)-Pl4Py(K*09Gn=w>kBVs992*r#K^!p(?iXxsvpIX03>+U)d?3Cri9osZAz18T{Q0qGsk@`fA zh0%?JIu0q^ioQpC zgX?i!i0F%n4iyH zoV4QnTEk{OFWd}a3e!67S2%;S6!FsH@~%Id$rwC_bU%J_bb4lRd?-3H5EpK2Aw_4W z@Swt5@iu0MCw16x67v$-twAELRXh-_ZO)mCJ-#?$&cV{=Xr%WiL*xH^hql5r4%kmaJA#n;nAt+S|DO6t&jo9wPViC7IMPQp>2|wQ+QbT zt!y)sT`)a(LC-5Vg1&ERC^|he8IO+7jE#>D4#n0C%?w9JCdI!6g^L0a7XQXfJD;@# zU`gSU0EGJn27KQ{`Vob9h;)djxoquS3hx%-ra(z%#-pbvqw$HjsJ&O=eUgNRauUYP zhYM!jaclhng-1odxv#%JIyT|kTSE|l4=Q}f4b(^^%$!p;{Sk$ax~c=w{@BQRbiQ#> zeO%$=qPi<-Ceq|&S@)9)pAy}wlhN2%H9n)^viKJ{?={@8m()mSA#d6i4`5e#ftN=_ zrjeYTJ)cUO;l5-tC=f5}M{GaBaG&dQP|SBFxHNC3bKzMd@sMYPab^pa6UnfhNj*NR z@HyAl6Mg-s=W5YT#; zB~1S4B9W8NGYUmK%e$L_c-%a(G~)Kfj_uE{cX6zBnrb{ENF`z5 zX&J33{8;!aza0e10NbiDI>=WLEpx>S<#v24OfPZ@Sf z=Kf-pGoO-kZx<{kZ2cXu{@&Ue46 zb?HXUQyX2BW0J~Rc^!Xd8@M1hJ@3Cka&{!^43b;Pbs0M5Q=Y9`YAR%B_}q!hflG9X(nIw`nanqIKeS z?I`ZhdU2;)@rYMdzv4%=-PHaKSIgB?br~we-B$kA45OkI@03l_>NR_ z?=Lj3ag~>{kKD(ZOISfBXD8QvkGI{xZHhiLq7Zptd;Uf;&&=QjI1Otq0$@R|3$54S0~SGG&; z7*S6%x#I!kxk48{OkY2 CWTImL literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/View/GamesMenu.class b/out/production/graphical/Plato/View/GamesMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..e9a165d15d8d91665dc64779842a48fa1c9057aa GIT binary patch literal 2529 zcma)7`EwLS6#hEb>`ppB?t^Oqfg~iXK}F3X8e)LRW{GSPOg!Rbx7`fP&MY&tApsS< z4^%u+!~;*fg;=#oNtLC)TK-2;>g$ z@9IXh$F{YZxbC>IFgU6dtm0UWH4JqD-3PR+a0Y~#Cq0>^|AzQVn3#$h)GDass7C`s z?FyHXeOfwAmbCh&7@C=h9-cTRQf{nmOhFSv^^#aJrJ1I%!)U=;1?xE0V*|q)58z2A zXB<~#8A^0>(L3FW_M5r9n{;iVWyz>UL?msS7@CT={tF@rYrz(do3ND(wDN9H*`TeP z3(7*+&cHoZB3Ys((ygKm?Fx2qbf9y=XVM>#Vo-8YhaqhY`b`$+4$E0vSr#=xVFiO6_shHr#@}O*vR|CYYlag> z5=W?YTTr~x=Ie?3WFiO|&3gbaMq~KwWM=(xF6wta) zb6rCuh34z6npnPW32I)3rJ~a?p&-SP2Dx7wP}*x{vznQvdM(@6(|btf;tHpf*cvh% zlh7$18Q~6SZfa6SzH_A<3sk->GGaPfgp-=%Fcf4tOjrz!OVzgwM@gLZE+Dh0#f-_O z5t0ROb2y+NmpS?=a)i$M<@OZENleq4ER$*99}I7?;3WsAI8I9fsz>_!j*j>A_8uNi z42=);C5FRz0#7P9!*Lc*EoW%h5w_p5-#_ORmC~HqTp4I*KnSp&5uB@WxBRy7{Vt0bg!+_0oB{m z0aX&Y+;2LrW~S)UPD)>XU6z~a0jg^J@h zcRCN`X0hYbdATl|xYQqL_kP1%%tcD}=78|Bge4VKNtf6d&~inq)V}GI$ho>@ItqSZ zSnp}3X1!lGM8b0S6JO~?47H~{DWf=5)uffTQ$hk6R(VZQmi$hs0h@@z5}MN`G;wK! zdVe3{Bl?zt96<%WKc-cbzKp)*?Q>w)JlJJ=%VVGtpU|880DS7HVfYN6lUfpH=Sf)^ zA^wW02^_L$RERI7&N<2V=K;JI~8mzE})$_+<|XMs(?=X zMw3O%fCb?34OZa9~+`xJTjW-Zckl^0uc+HR9+efHwghck;d|*qZxH( zS zGcJZRmBcRWRCi_~IEY~thcskGzPdtor`>`{!U`peuCz+IU<9U|`6=9jTUFeq;dWu)9ku6p&GZy> zh8w~ucO1qM6?bZQtJtwMx?|EPk-ANxy_nE?6k{sx(r`3VKOr9CR*(vfIi~H~a9qXR z8pf}~KCx^%WV(i3&U{fM6BvJuAJQps=%EYHNriOH$?QxhjeO|-Be zkXgJ_!vgMSHiG<;Ks_9-%X)qzk$7g&T+PE;a1s(6=%b9lFc9nE;Iu_G-d zc>tlYp3f%mUS@|xnx1Z!49iZyU{8k&iiW-(+DTo(6w^A0RI@N-|6qEI!1{>^}1W~eYMci(SxUVPwf3+eMY8I}BvdCdP zH#<2slK^4V!Yv!Vzv6lY0XEQ3!7{C+S}8d4rjTZ$X%})wDVxQrhBa|w?4F6-TmtV? zaJ%%X4^({96QpNSbxtB{`am5}CPf`7C-4Xx&T^Iw+bZbP6H#{kq75F?@Bw^~Whvc? zbH`mL@Lby#B=4_*YOZD3Z=oDF*H~4LYRK!kzVVYV)0~j*;K-l;;%eU2`j*UauD2^{Dq@t?HJq zuXwIg>Mmq|l2scChoBzmck;qm;Uo+zRd zcQmh`Xs)G3G=!SXn*OhYDDMAX-PzB!MJd7(M)Ac&z@6^lc0{uxfk((!ah6&EhO{=_<*$TnWu3h9>88+^80vi-h@@`XF3nyX$;_5?tC6YAzC zQ8rb&6z-VWM~6t>hh~PmpRVGg7qLZf_DRY1r!Nn8fANir7fE+t_p{PKR$R#Hentk2 z@$X&y5pk4U9wUFp8Q0z9VVrE9;1hUKvM?APU5kVu@EhV6EpSXmEE?u8ek)@aF(uLV zPwZhhy^Mh`r&oVkkcUV*xS?_I&80&CdJ;oH_gCw%upzfo2J$$t}wlQcW`g8VJHy_H#Em$!Ts%_ zctQ&|)4(iLE0h+nSE#m`YHJpV+T_6;%ynU&ff{%frcOYb77zCJl5efWI2?@hH+1gY zZT2LZ>b4c*BrI@Yp@Bs>S)p7L&>(^R@q{@*?C4M;D|IN^urU^jBm#+;860SGqgJ6p zMDmKayxLvfMh})?sSEW6mSK5DszOu+*PsvzN5)7-%ArVqlf=j=SmDB{22PWRs<7PE z5$!c;Hwg;`V`#89n6QE*?!g&2(}k4=RtbD%K0Md^%@{3fAy`{tG@{9c)dtQMjPiVp z*5Cl+tHgqr4WZZK92c4mtjmjVOP=;JE}&I%4!0o`+!1qMqCFI${L`2pc^PmgvAhFw)B?EpA@FeuuBy=iem0p8$lC1hCb>HoT3hGb=lS ziJn~|_Okpy%eXU7m6+LY?qh~)aFV$g+g;dU;Oz)9^>PXoz|k%P8iTU2f^2i6hgF7_ zG-KX=y2l&gj~mpv+&W~5h$Xxd9&XS%W!9+~>9x;7^sWur6OEZ-*F6TpV8pw`fNkO= za%%I?H&FwFxP+!}AEx#8d$9GH|JYdwlEL zHd)|e@5>Ebfp;qu^~a(^gOY%46U2!JSK=xc4jH%_*JMIXmj>E~KBTMNgTYwb)TSyZ zFBz|E<6URqdfdQ}GJ8V_+j_ONZR1Td{-my3l)llxVbQ|q@^y4}`!afz;U)t&<9)P7 z%p8dBHEr5XYNPRv7uT*S^Tn*ABVIz`eRmh(mH5nCSt0(7=ZTvBK6Thbp4oZ{Q=MRJo;84p&e= zYT#pn>d`zm2Yg+c+s6%jLbw$Rx6N@grulrzz=N7k7I??TuFef@?LOi2uz{5Dac6LZ z{-XvS6BOsV=9crNxjb%QL~_Cz4;^5V%)yfep2DY@8cg|dkz=;P7rtQNi}+Gu{Sncvalt*5T^5v|3+c4n-2)0W&h>p*G%~QQ2r!JiE;Bpy=}*1K$;W%3IED_P6?Wv^ID6cKG=tqt^Ef zd>=0|5iBm!&iwpSm@!crTG9PO13wairD9t@i%s+TjyAs=KgrfjlVeKQjh|)fa9=1E zPgr&M7ukv%4rb1NMQ2zQcW_rU!iufSo`mAB4g3Z#TjkYm?a>oT#PJp5|2wJccH_4S z@ZeSa-i1FH_@j(d`O}c@og8D$ONN5sxEp__+L`LyW3^2&^=p!e7s%>w2L3KZ*2P4T zsFkzVr7GyRx61Z@`T38OZhaPY;b>-B(sef539mBhdsW2m#UX5*k#^*}|ER z)|QdRYL%OUJHtGwY>)N?!`;DHNcQ%jGqEcaXL*VZv7ArM-VY?D^-ZLSVI~8El>n9F z_{Zn`JfsPGH+dB4?4Y-@NkP7uTwn_66tIv99EuFekZq4R zY^<{^7W$Gj!Et*73yVLR*ud)1n}s1au`f;J z2=P{+>ug)3FDmZNmNWZYoMxNLS{AWBCWva^VG4tkqB(P5GCmdch0L%piI~IP!SE1? zx$MHlL!TW+df*zi{K0`D9v_az1Zj0o*uFA)0@0yZk16`l>jgKU<)SR+Gg2J9h&oU# zS17&WC6CWaPz+3lQq#C=Bm}bv#*)XOmW;sl7)l=&Xf>U`a)$*eI8mZz2$Th@sx(EV zW~y0)BpqiLT>KBmkrbw;P?g5)Eh)^eT%1PT2pUFk`UuV%!I}}Yq;PH;?d>UaEluOX ztsQAxbQ`t{@J<3-Z~e0E&2Af=vhU07i)6nmv)_H@WU^c~%Q>rP`s6es$zz8#fdm1P z#}1~jH;*CQ+Q7v>SPFOKL0B@}og957h5Pc(3n_m%Ir?l0$-MU#-UG?e2UGZD z-gzP3L&?#@DLj(*e!6zb)HKpXH0l%2!0}KDpUDGorSJ@ozMOYdkS8phKAf$FutpuiIqC?SRT3>KjrHnDY*5dkRlSHd^)k*=uffl(>~ze+1&&&DIZi>q zu@ajcYq8nUif%_Iwm7!nLdOnlb@XGK<5FDYxB?eDuETcn1`aTdH;`AgnvF@+XqlSB zm6JNnRdcy2qE@A9o~mJyxSGw+tL9@8Ikc*i1cN+Qss(~UE{oMd!62V1wTP?9QUdJq zQ0o{_C-Y2Ug`-z3R<$e@b>zPo6_v*jmycs*F1+gE^^1KsR#H`0Gry{)s>WM6XV&63 zctu@8U?=O;QdS`j^LE8*=T53p`4Yxi8h>FWna{wg%T+D*NWM4O*84DpbVTVH7LF~N zn`$l7qB&&bw<&KSj9^v><=JWcwS%PVCm_9>C247KlURj3Mw#MyGJCQzd(;X| zk0oE7YRk+!mrc1@>%c}}8|GhQ2@g@&y?KHbX9*YE#!zw_&k9=L!G9mm1p7#JKTU8T zk8*jQ2T!w2zz-2N4B`Oq;@Raq zy_BCqFJs5NLi1chnJaV(oUWm&vwBslGi-xZ>-3R`tk&rx5mc?y$Em~J1xKd~Zx%E9 zk+ta9P#Zm7s9i~yUBys4q~&?5P&-q*P05!9+ZtP#Jx)qfBG#y1Hao486p=ges;DsSimTgeLaKU<0##}3BjeOB|hlS((Y=5p47 zcq;E0`&MYI#4!qs%MDOi<*7A3EjPC%gk!Nffa5fdM?|514sbf&N+zkf(N&$cG9%4B zLwoIEr=@8ih!|l+L`sG(x8`BQ26EFTth&PSJR&WY!Wl zXkFQ)P1hwyQxw$WV@b=g%_$$k%Wzr%r)!)c{9!-8YnZ|!SHL||Vl!F-*rIWkNYwcy zwppW0vl^FQ4&*)?=LFEI(dNr^*PeKGL?Prd^O?LIhz8K9v2B*^(S3G?9`$TDr@SO+ zOygXfN5ABUtxU$w(Qm$FNw`EtybIj{^l0?re0pUj;vR=Wb;jQB#8VmCzm#R-3#sec zAQI>c-~x?)?4%a=+9ti)v!kO{Cdovt+8&MfO5EpoOCu84r7?gDd27~Xm*oua5sNqa zldKd;-z{?Xh`pahZrBO48?OvtP~%mw6dGpkQpQJ@j2a1=#U?UPjbVkS5___jMtZYM zp?pYek6dK!%jQy!9T_pvGPE)2Mr~Q==_?QBBaC65S?aN;t-KTA`vZ2;mA53P3}b$L zgltYKo5_dT_hhqqJK~Y-q(Ki2yVPlwjhi-{($tzvMlQ;w>`XE=l8rc7?;wgZ;~vS_ z<`VXa(Y7Q*KD3wjaGyg%*6_s=AzR}j2~Q}oy=UiOZ%?edFT^a_qmh!73gvl!_xi$p zu}0bivp*KyIoR3S-?Jmu7aiQz+7(TRSVkjjGEua4dY&?AEz*~06B+?{y~fo75Nhq{80_2; zi*{4xZoEO`jd+v7f{|Qyd`uclY>qk*F94BojY|CZ236<4&KfRjD?6cA-H!ouyV*Lj-J|xyxwY9dNCllhs z8Xv(eB;-?^IVnV)E<71fMnH4o;+@Kz>*F(C`j*DGMO&S#%`^c|*JJo@0N>O2J|1U4ed%R-fvYKKnw0yz+#io= z9=hiV{4jtgHJ*|wMnwGDCJAfW#&xta1Z$nSI<%<47)>2cFo^u{9X*KpYE13E2X^uqqN2I z<>}8Fe=%1XlbRgLI;H+5FaN6XH+fkrnc!C^=I}YC9JiBFnt)9v>aDbA8rOnv`%nJ8Y%VlaeWz8|U^@ zKfMF@(=4-Yw-8XGH$5`hi&oA%f7u{YnK4=K!n3yo)@H)tEb6kxJmsP2{$YE}jKzTB z_P*N8Yp!*jskGglbvm=-ndCGN!N+7eGk~QrNz1ECLzs`=OeHlW!~(M+4;^8iK1^L8#{?peKMIPHC4gc8~D+^{Xy&^e`gHn6#q#a67L&nx)dQh}f> z+vbU11pKW5HDDqCALVH?ITU~Ox^eI-NnV%5$9)`U+gqG=M%lQ?w}XHH`4B-#tuUPQdBfE^o(c=@h) z5wAFi#lk#9=837t3P}3iXoEH~F?G0ry|d_}6H~VoFgA;xpP0I?fPJ&*2PUTS1zbLh z{@RJD3k!IikG_O@*H;yBO%ZRNnA%#vTYN7!n>Ukqd)3WYbQm}8I)wLhZ@i;KU0|p; zk@{XzNxQ}6N36N?61$@e<;OK1ye1`0I z`Pk{IViBL4IC^~nU+~eFmaamBi+Et-=vVT-0eYtXB1U_-kV33WI6)Fk@VL!20o zVwZXx1L{faHko}YYvKqhR26P#uc|Xo1>TVv?PdEWb&p!0q;4A3eJVgpDpZhnUyb_k zf6yGj?f{->kiTP3SQd&LSKDxWI9#hjWT|4Q)UZ&v&U$4R=SfPdZr$BjRK#!N^zC}O zcBb^$GWkBq{%O;_{O01{a#zMPs2bI35zSDfa^syF`496U?mhU3og4Yt`H=HOc8JU!VNP$*TNIFc!1J{pT(;2%s_-7r)EcP--QAE7URn1(xI6WB>pF literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/View/Page.class b/out/production/graphical/Plato/View/Page.class new file mode 100644 index 0000000000000000000000000000000000000000..1f1480d6fb155c6ca4c692a335f70553f0ad7d96 GIT binary patch literal 748 zcmZuv+iuf95IyU-b!=SHG!(+6wB?$#P`@DYkf;(uR6?>!C0CL9xN%ouD`#D;*FZmu z_8}6L_y9f%G3$gtp?=ueojG&ncxHb5{PrEdYwQGYQ1jr1SimB~@(KUMql~Lj^kH}+ zQp2#=mr9ylhFYgP@K9%HR-n?zEJ{+Yl+Zo`-0%>FSi;RKEXi46#F)X6ieWXbGG!jU zSEr>(j23*{3*ced)^9SjJJ&+G10OBi@~|4>HtsMq4l-`?XduPs=zxy|gI7$YFtnx= zf9vacxJ!XQy5DHc&th4a0BzJP`GXK^c*x)vLMTgF%=K1G^Nb#05;;=bl$z?!1YgDU zrwmRKw zV!^vFsW>$0>gUc-9U}*v_Euik|!d|$S!P6z`jyrXmY6ErTca*6iQ1otj*-&SC-73?yDa+lzf=LOvzy!-_V CGp11h literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/View/ReversiMenu.class b/out/production/graphical/Plato/View/ReversiMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..c23489d8e4f7bcb89bdcf11bafb07965e45c3147 GIT binary patch literal 7590 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 literal 0 HcmV?d00001 diff --git a/out/production/graphical/Plato/View/UserPage.class b/out/production/graphical/Plato/View/UserPage.class new file mode 100644 index 0000000000000000000000000000000000000000..0af3b69de12e621e6975bb225bde8f6a41ed97de GIT binary patch literal 5939 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

WklTvs{9JSf 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 Of0eWK5`KhN(eQu&=o!uc literal 0 HcmV?d00001 diff --git a/out/production/graphical/Reversi/ReversiController.class b/out/production/graphical/Reversi/ReversiController.class new file mode 100644 index 0000000000000000000000000000000000000000..3b8b0a9a245ddc400f2b70cce8ef142bc23990fd GIT binary patch literal 5593 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 literal 0 HcmV?d00001 diff --git a/out/production/graphical/Reversi/ReversiView.class b/out/production/graphical/Reversi/ReversiView.class new file mode 100644 index 0000000000000000000000000000000000000000..1f570dbaef45b7f78fa222d6d54a95d3fc91618e GIT binary patch literal 2886 zcmaJ@SyL2O7(JH(XBb<+QQSbhZpfx1xM2X3fZG^cA_$4Z#AaxjmYMFcy9Yw{#Vlsu zjLTc{;!9qVN=+(MDwQX#%1^SaByCA7!jBlE6jWQekJ zRB9ad4ViZQoMT$vi02r3rZ0**)Q8caVKrg`8_yfFhU1#?!gI*BJjYI_4M!j{ZFr~c zDI+bgrmcOr3`t9C(HO=$4ePN%puX%p&>z(&(}uw65`AAp?M-M3qglgdvt^QOa)FBlpSu@_;-j56Rvbs&Q8NI;WzkYMn=xP+GtoSrVH;;i5P zeeD+`xXglVn%H+RbF67%Z$>I=Cp9E7B@i{;Vclh?&a%;J+7bzczY^g0X2yMd1gSvK zT@+jm1cx$%1q9n%x#%tkqSy^fRpg2=vMkEQ1}!|tOk+-Wko0W+mZC z)0Kk5z~g+Da~y;+R~VL3MDRJYEM!V|3j>5;e}e3Z;7f84jA1#chJ{oEc1i|lAzhV% zHn*L~ua}T>s*nF4`K>^ekOEpl&Ag$s?z)B>#`gj{m(g8`#V~I3Qcs4mNdwCH!m&A; z)L#v!E8p2%uklx$Pobn8zd`)WO%)uj>KL3aE>|r8z(bC|1ZFYERViQQbW%p;F9>($ zu_})>d29@JTk_bxfHokHt|hx_W-04+;A@o6E&MJ}KGp?x3O;BNuVS8F1YRq8%Mqiz zbp{T4?xU&bx5xK(!1s0!D=Cll795BC3k8m&i1Gtu8{K!HzQl27(Q#+N@#}O{jjC;7 zhVVu)gd0l6lYye+r|4M46C23m=>-h=5fo34FP_BG?oN7Pz-RO$jqCIVF`YcOUcedU`1#P0%}RQ! zn5xm{p3Ob6@jPC5&rZZ7bI^ zeXyUS8E&tK#Jzt_TFE1Gy^8x2s$7Dsogy*d+bV($Xuw7ivyTT7q^N{5UL2U5TXyH`g3wU0T&xcZjBIW?jEJCPc6NNruTZZR z%Zr0;h+V3pQ7CC`M?+aUqIIiUM#z>t-LemR(%M`@yfhYns%y170Ta~WzrerugJ*yQn99yJCq%y z)P*{wn{Y1vmnpl;B{xlp2xoj#36p%8)~fB`)S2B&Nn;~)8>y5kRY7-lY^=4Dyi1su z*(FYOk?a|=gT0xZ@nCR&3r3LHbT?Y4tW@XS(V}*W!hh0S+6dGHMUl*U^^FXOgkP zT0lO0_}7~7`-kp^@}Xp+psR2`?5{#xCH=jSu96)MblFA&DLc3xZJ?L_y@oNV#xy3c z5rTmMen+vNus(t*A0r{3;GkSVpL`0N_Bj7PA)n#2e2!P;DyHNb-jXk{AYY;=*KtuA zxFk35p4`N7=IUe46uR&<@{}XVc7BE{QMz~*&(WUXuN&q=9tOgQ^5}1bP+61C6MJ-O>T|>x?opi%sScTZPyY=(N|P_F8Pw@dPqPi1yHBbPv^J&KVr{c5 zkXvN^6ErNS@-~4^c;1@CI2M?2^Di^Z*SsSfMle9Nb@&khMqnDwp z>9whE$Qv-FJcLtzt{GNC+a#uKkTw_c8FS%iVRz1-&@MlFIkk@T-pm=pu-~CEyySJQ zo}T6)8@%CVoY{jp?f21k%p1h~%l}~3$3QWU;H;nPP3G1oAg;4$q?;p|@kX+lG^WS$ eD+l8@#N>A`v5po)Hi5@CfyaH|f^+l;VDw)LuQ1sF literal 0 HcmV?d00001 diff --git a/out/production/graphical/graphic/LoginRegister.class b/out/production/graphical/graphic/LoginRegister.class new file mode 100644 index 0000000000000000000000000000000000000000..27bc095461c677a3c89de9d2d2cc93dee9ced09a GIT binary patch literal 280 zcmZurJ&VFn5S-12IpZgSTy3WornI=@8o??ksMx>6M_h@CJmdYZtAs230sbg)BNi6! z!tBm0%+B@pe*rK?+lK|)gHwl#3ZcDIzbZ&omIU)?r{jW9`R0s^AA;Qe_C@fQ z`N_n3%1?`zU!yW6dhjHDStKp_1*^h>2M65Y8T2QD1z)f{12$@c^~dhYYzQMX1ueAh DAPPIe literal 0 HcmV?d00001 diff --git a/out/production/graphical/graphic/LoginRegister.fxml b/out/production/graphical/graphic/LoginRegister.fxml new file mode 100644 index 0000000..b2f5e2e --- /dev/null +++ b/out/production/graphical/graphic/LoginRegister.fxml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/out/production/graphical/graphic/MainGraphic.class b/out/production/graphical/graphic/MainGraphic.class new file mode 100644 index 0000000000000000000000000000000000000000..d7b95ceddc685bace67526e996171092dae411c0 GIT binary patch literal 274 zcmZuryKcfj5S;Y`6UPY_h!3DkQp6=iP#Pp?3>1mz&zF;Z$T=g&=D$)!qTmDaQ4xDU zL6Kc)c4t2nTKeFM^K_A>N3cNJ?SyWR-1{YzUo+HoAEwxDSu(0A0c$ zuf?{|GFb?1=I5Q@O{)(@=%w1IW&4?_`dwrtEB&;RqFjqwTYeF}rqEx6Vfv5P3n6@~ z+FGiawg&OlpJy8oBLtk=7IAZO#v5kIi39%A59pf(2O*<911@eEqtov5ykkbVXLQgz E0-{$q%K!iX literal 0 HcmV?d00001 diff --git a/out/production/graphical/module-info.class b/out/production/graphical/module-info.class new file mode 100644 index 0000000000000000000000000000000000000000..e07bb3bfdc23165116b3057044955ce6fb1a2ab1 GIT binary patch literal 216 zcmYjLF%p764BUWxn|KJq>|osqJc55|M13tXp%VB^jUzpY zRwf8J*U-FA^S%l#GPy{LHWvxO>@7e9pPMMu4)2;u@li|1#)V6>zy&m6Oyr8C_=x~R!w$IrTmO5Bg(LJvNC6{ z1OF3~cBQw3QF-9~TS7i{J723u9gd#=_t154hcjeiIs{3IZNXz<#hwG{)d%QZgb2A{ V7y~g*1iSk_m3k_S&=ZW%{{@7xQB?o{ literal 0 HcmV?d00001 diff --git a/out/production/graphical/sample/AdminMainPage.fxml b/out/production/graphical/sample/AdminMainPage.fxml new file mode 100644 index 0000000..bd6be13 --- /dev/null +++ b/out/production/graphical/sample/AdminMainPage.fxml @@ -0,0 +1,17 @@ + + + + + + + + + +