diff --git a/Hitori/Files/ProjektStruktur b/Hitori/Files/ProjektStruktur new file mode 100644 index 0000000..0d85592 --- /dev/null +++ b/Hitori/Files/ProjektStruktur @@ -0,0 +1,126 @@ +1. Projektstruktur festlegen + +- Backend: Enthält die Logik für das Spiel (Regeln, Validierung, etc.) +- Fronted: GUI mit Swing für die Anzeige und Interaktion. +- Datenmanagement: Einlesen, Speichern und Verwalten von Spielfeldern. +- Tests: Unit-Tests und Integrationstests mit JUnit. +- Maven-Setup: Für die Organisation des Projekts. + +2. Aufteilung +- Person A: Backend-Logik + - Implementieren der Spielregeln: + - Überprüfung, ob keine Zahl in Zeilen/Spalten doppelt vorkommt. + - Validierung, dass schwarze Felder nicht horizontal/vertikal angrenzen. + - Sicherstellen, dass weiße Felder zusammenhängend bleiben. + - Implementieren von Logiken für Rückgängig- und Wiederholen-Funktionen. + - Speichern des Spielzustands. + +- Person B: Fronted (GUI) + - Aufbau der GUI: + - Darstellung des Spielfelds mit klickbaren Feldern. + - Farbliche Markierung von Feldern (grau, weiß, schwarz). + - Buttons für "Reset", "Undo", "Redo" und Auswahl von Spielfeldern. + - Zeitmessung und Highscore-Anzeige. + - Fehlermarkierungen und optional das Stoppen der Uhr, wenn das Fenster verdeckt ist. + +3. Gemeinsame Aufgaben + - Datenmanagement: Einlesen der CSV-Dateien und Konvertieren in Spielfeld-Objekte. + - Testing: Unit-Tests für die Backend-Logik und Integrationstests für die GUI. + - Code-Reviews: Regelmäßig Pull Requests überprüfen und besprechen. + - Dokumentation: README-Datei und Kommentare im Code. + +4. Vorgehen: + Phase 1: Setup + - Git-Repository erstellen und Maven-Projekt einrichten. + - Gemeinsame Planung und Aufteilung der ersten Schritte. + + - Phase 2: Grundlegende Funktionen + - Backend: Basis-Logik für Regeln und Validierung implementieren. + - Fronted: Einfaches Spielfeld und Interaktion erstellen. + + - Phase 3: Erweiterungen + - Undo/Redo und Reset. + - Zeitmessung und Highscore. + - Testen und Fehlerbehandlung. + + - Phase 4: Tests und Feinschliff + - Alle Funktionen gründlich testen. + - GUI und Bedienung optimieren. + - Projektstruktur überprüfen und dokumentieren. + +- Architektur planen + - Package-Struktur: + - domain: Spiellogik (z. B. Klassen für Spielfeld, Regeln). + - ui: GUI (Fenster, Button-Logik). + - service: Verwalten von Spielfeldern, Highscores. + - util: Hilfsklassen (z. B. Timer, Dateioperationen). + + - Grundgerüst der Klassen: + - GameBoard: Repräsentiert das Spielfeld. + --> speichert eine Matrix für Zahlen (z. B. int[][] board). + --> Hat Funktionen, um Felder als schwarz/ weiß zu markieren. + + - GameLogic: Beinhaltet die Spielregeln. + --> Funktion z. B. Überprüfung, ob in einer Zeile doppelte Zahlen vorkommen. + + - HitoriApp: Hauptklasse, die das Spiel startet. + - HighscoreManager: Verwalten von Highscores. + - BoardLoader: ließt eine CSV-Datei eun und erstellt ein GameBoard-Objekt. + + + +Package-Struktur und Klassen: + 1. domain (Spiellogik und Datenmodelle) + --> Enthält Klassen, die die Kernlogik des Spiels und die Datenstruktur repräsentieren: + 1. GameBoard: + Aufgabe: Repräsentiert das Spielfeld. + Attribute: + - int[][] board: Das Spielfeld als zweidimensionales Array. + - boolean[][] blackCells: Gibt an, ob ein Feld geschwärzt ist. + - boolean[][] whiteCells: Gibt an, ob ein Feld weiß markiert ist. + + Methoden: + - markCellAsBlack(int row, int col) + - markCellAsWhite(int row, int col) + - isBlackCellValid(int roe, int col): Überprüfung der Regeln. + - resetBoard() + + 2. GameLogic: + Aufgabe: Implementiert die Spielregeln. + Methoden: + - boolean isRowValid(int row) + - boolean isColumnValid(int column) + - boolean areWhiteCellsConnected() + - boolean isBoardSoled(): Prüft, ob das Spiel korrekt gelöst ist. + + 3. HighscoreEntry: + Aufgabe: Speichert die Daten eines Highscore-Eintrags. + Attribute: + - String playerName + - long time + - int mistakes + + 4. HighscoreManager: + Aufgabe: Verwalten der Highscore-Daten. + Methoden: + - addHighscore(GameBoard board, String playerName, long time, int mistakes) + - List getHighscores(GameBoard board) + + +2. ui (Benutzeroberfläche) + --> Enthält Klassen für die GUI mit Swing. + 1. HitoriApp + Aufgabe: Einstiegspunkt des Programms. + Methoden: + ... + + + + + + + + + + +