From af277a5fab4f4bb2ec69ffc334517f93ff10b2b4 Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Tue, 7 Jan 2025 09:56:46 +0100 Subject: [PATCH] =?UTF-8?q?Letzte=20=C3=84nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Hitori/pom.xml | 11 +- .../PR2/HitoriSpiel/project_structure.puml | 113 ++++++++++++++++++ 2 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 Hitori/src/main/java/PR2/HitoriSpiel/project_structure.puml diff --git a/Hitori/pom.xml b/Hitori/pom.xml index e52b7ab..d70a88f 100644 --- a/Hitori/pom.xml +++ b/Hitori/pom.xml @@ -7,6 +7,7 @@ org.example HitoriTeamProjekt 1.0-SNAPSHOT + jar 21 @@ -44,6 +45,15 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + 21 + 21 + + org.apache.maven.plugins maven-jar-plugin @@ -51,7 +61,6 @@ - true PR2.HitoriSpiel.Main.Main diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/project_structure.puml b/Hitori/src/main/java/PR2/HitoriSpiel/project_structure.puml new file mode 100644 index 0000000..3a4ffbe --- /dev/null +++ b/Hitori/src/main/java/PR2/HitoriSpiel/project_structure.puml @@ -0,0 +1,113 @@ +@startuml +package PR2.HitoriSpiel.Domain { + class Action { + - int row + - int col + - String oldState + - String newState + + getRow(): int + + getCol(): int + + getOldState(): String + + getNewState(): String + } + + class HitoriBoard { + - int[][] numbers + - List solutionCoordinates + - String boardName + + getNumbers(): int[][] + + setNumbers(int[][] numbers): void + + getCell(int row, int col): HitoriCell + + resetBoard(): void + } + + class HitoriCell { + - int number + - CellState state + + getNumber(): int + + getState(): CellState + + setState(CellState state): void + } + + class HitoriValidator { + - HitoriBoard board + + validateBoard(List solution): boolean + } + + class StateFileManager { + + saveState(Stack undoStack, Stack redoStack): void + + loadState(Stack undoStack, Stack redoStack): void + } +} + +package PR2.HitoriSpiel.Fassade { + class GameBoard { + - HitoriBoard board + - Timer timer + - long startTime + - long pausedTime + + startTimer(): void + + stopTimer(): void + + resumeTimer(): void + + resetBoard(): void + } + + class StateManager { + - Stack undoStack + - Stack redoStack + + saveAction(int row, int col, String oldState, String newState): void + + undo(): Action + + redo(): Action + } + + class Setup { + + stylePanel(JPanel panel): void + + styleLabel(JLabel label): void + + createButton(String text, int width, int height): JButton + } + + class HighscoreManager { + - List highscoreList + + addHighscore(String playerName, int score, String boardName, int errors): void + + getHighscoresForBoard(String boardName): List + } +} + +package PR2.HitoriSpiel.GUI { + class BoardLoader { + + loadBoardsAsList(): List + + loadBoard(String resourcePath): int[][] + } + + class HighscoreDialog { + - HighscoreManager highscoreManager + - DefaultTableModel tableModel + + HighscoreDialog(JFrame parentFrame, List boardNames) + } + + class PauseMenu { + - GameBoard gameBoard + + PauseMenu(JFrame parent, GameBoard gameBoard, ActionListener resumeAction, ActionListener mainMenuAction, ActionListener exitAction) + } + + class StartMenu { + + selectBoard(): void + + randomBoard(): void + + highscorelist(): void + } +} + +package PR2.HitoriSpiel.Main { + class Main { + + main(String[] args): void + } +} + +PR2.HitoriSpiel.Domain.HitoriBoard "1" *-- "many" PR2.HitoriSpiel.Domain.HitoriCell +PR2.HitoriSpiel.Domain.StateManager "1" *-- "many" PR2.HitoriSpiel.Domain.Action +PR2.HitoriSpiel.Fassade.GameBoard "1" *-- "1" PR2.HitoriSpiel.Domain.HitoriBoard +PR2.HitoriSpiel.GUI.BoardLoader ..> PR2.HitoriSpiel.Domain.HitoriBoard +PR2.HitoriSpiel.GUI.HighscoreDialog ..> PR2.HitoriSpiel.Fassade.HighscoreManager +PR2.HitoriSpiel.GUI.PauseMenu --> PR2.HitoriSpiel.Fassade.GameBoard +PR2.HitoriSpiel.GUI.StartMenu --> PR2.HitoriSpiel.GUI.BoardLoader +@enduml