ProjektStruktur anfang

addNewFiles
Vickvick2002 2024-12-10 17:17:20 +01:00
parent 9e5ba36878
commit 73ed0e7735
1 changed files with 126 additions and 0 deletions

View File

@ -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<HighscoreEntry> getHighscores(GameBoard board)
2. ui (Benutzeroberfläche)
--> Enthält Klassen für die GUI mit Swing.
1. HitoriApp
Aufgabe: Einstiegspunkt des Programms.
Methoden:
...