Konsolenspiel "4 Gewinnt"

Einleitung

Als Abschlussarbeit meines Kurses zum C/C++ Programmierer wurde gefordert ein Spiel zu schreiben. Da ich die Aufgabe gut fand, hatte ich für mich sofort eine Idee entwickelt wie ich das ganze umsetze. Dies hier soll ein wenig Aufzeigen wie das ganze durchgeführt wurde.

Für alle, die nicht wissen was „4 Gewinnt1)“ ist, hier nachlesen.

Die Aufgabe

Kreiere ein 4 Gewinnt Spiel für die Konsole.

Vorraussetzungen:

  • Konsolenspiel.
  • Steuern mit den Tasten 1-7.
  • Ein Spielfeld mit 6 Reihen und 7 Spalten.
  • Ein Spieler gegen Computer.
  • Als „Spielstein“ sollen die Buchstaben „X“ und „O“ dienen.
  • Computer soll merken wenn der Spieler 3 aufeinanderfolgende Steine hat.
  • Jeweils höchstens eine *.cpp und *.hpp Datei.
  • Eine Bedienungsanleitung, diese aber getrennt vom Spiel.

Zusatz:

  • Zwei Spieler Modus wenn man möchte.

Die Idee / Das Konzept

Da es ausser den obigen Punkten keine Forderungen gab, hat man ziemlich viel Freiraum selbst zu entscheiden. So ist es zB. egal welche Art der Programmierung man benutzt. Ob C oder C++, ob mit Klassen oder nicht, ob Bunt oder nicht spielt alles keine Rolle.
Als ich die Aufgabenstellung gelesen habe kamen mir sofort Ideen in den Sinn, wie ich es Umsetzen möchte.

Die einzelnen Punkte meine Ideen und Wünsche wie folgt:

  • Eine Art GUI2), das hiess ich muss NCurses benutzen.
  • Ein Menu, zum Steuern der Modi.
  • Jeweils einen Modus für „Einspieler“, „Zweispieler“, und „Demo“.
  • Eine Hilfeseite mit den Steuerbefehlen.
  • Cursortasten bzw. Pfeiltasten sowie Mausunterstützung.
  • C++ und seine OOP3)-Möglichkeiten nutzen.
  • Möglichst viel über die Methoden der Klasse abhandeln, ohne ständig wechselnde Methoden in der Funktion „main()“ aufzurufen.
  • Eine halbwegs intelligente KI4) erzeugen, die auch selbst versucht zu gewinnen.


Der letzte Punkt war ein Wunsch, bei dem ich mir Anfangs noch nicht klar war wie ich das wirklich umsetzen werde. Ich hatte zu diesem Zeitpunkt noch einen Ansatz dazu.

Bemerkung:
Es ist sicher klar dass nicht alles von Anfang an so war wie ich es hier darstelle. Vieles ist mit der Zeit gewachsen und hat sich entwickelt.

Die Umsetzung

Ich möchte hier Schritt für Schritt durchgehen. Also fangen wir an.

1)
Ein nettes Spiel für 2 Personen
2)
Graphical user Interface | Grafische benutzer Oberfläche
3)
Objekt orientierte Programmierung
4)
Künstliche Intelligenz