ProjektStruktur anfang
parent
9e5ba36878
commit
73ed0e7735
|
@ -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:
|
||||
...
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue