4 Gewinnt (Connect 4)¶
Einstieg¶
Um objectorientiertes Programmieren zu lernen, und Struktur und Vererbung zu verstehen, werden wir einen kleinen Prototypen für 4-Gewinnt (Connect 4) erstellen. Falls Ihnen das Prinzip und die Regeln dieses Spiels nicht bekannt sind, finden Sie dafür im Internet genügend Hinweise.
Die Eingaben für das Spiel werden über die Konsole (Windows-Eingabeauffoderung/cmd, Unix-Shell) getätigt. Abwechselnd geben die beiden Speiler an dieser Konsole die Nummer der Spalte ein, in der ihr nächster Stein platziert werden soll. Anschließend wird jeweils das Spielbrett mit den bereits abgelegten Spielsteinen angezeigt und der andere Spieler kann seine Eingabe machen.
In sehr reduzierter Form könnte das folgendermaßen aussehen:
12345678
........
........
........
........
..X.....
..X.....
..X.OO..
12345678
> 5
Sobald ein Spieler gewonnen hat, gibt es eine entsprechende Erfolgsmeldung und das Programm wird beendet.
........
..X.....
..X.....
..X.O...
..X.OO..
12345678
The winner is X!
Wichtig
Der Fehlerfall „falsche Benutzereingabe“ soll durch eine Fehlermeldung auf die Konsole quittiert werden, und anschließend soll das Spiel weitergehen.
Versuchen Sie aber Ihr Programm nach objektorientierten Gesichtspunkten (so wie in der Vorlesung gelernt) zu strukturieren. Trennen Sie dabei die Belange Benutzereingabe und Verwaltung des Spielzustands (woraus besteht dieser?). D.h. im einfachsten Fall gibt es eine Klasse für den Spielzustand und die Möglichkeit, diesen zu ändern, sowie eine Klasse, die Benutzereingaben und Ausgaben auf die Konsole abdeckt. Dokumentieren Sie diese Struktur in Form eines UML-Klassendiagramms und eines Sequenzdiagramms, das den (einzigen) Use-Case „Zug eines Spielers per Eingabe einer Spaltennummer“ abdeckt.
Erweiterung¶
Führen Sie einen Single-Player-Modus ein, in dem Sie gegen den Computer spielen können. D. h. es werden ein paar einfache Algorithmen realisiert, die einen menschlichen Spieler simulieren und ersetzen (eigene Klasse?). Das Spiel soll dann im Single-Player-Modus ablaufen, wenn das Programm mit einem geeigneten Parameter gestartet wird.