Spielregeln

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Loading
In diesem Arbeitsblatt setzen wir die Programmierung eines konsolenbasierten Brettspiels fort. Wir bleiben zunächst beim Dame-Spiel, da wir hierfür schon einige Methoden entwickelt haben und die Spielregeln noch einigermaßen überschaubar sind. Machen Sie sich bei | Wikipedia zunächst mit den Dame-Regeln vertraut und sehen Sie sich dort die Animation an.

In diesem Arbeitsblatt ist es das Ziel, die Einhaltung von Spielregeln mit Hilfe von geeigneten Methoden sicherzustellen. Da wir auf der gestrigen Arbeit aufbauen wollen, kopieren Sie bitte zunächst folgende Methoden aus dem Arbeitsblatt Spielfelder in die nächste Codebox:

  • erstelle_spielfeld
  • drucke_spielfeld
  • setze_alle_steine
  • setze_spielstein

Es wird davon ausgegangen, dass Sie sich in der Methode setze_alle_steine für zwei bestimmte Strings entschieden haben, die Spieler 1 und Spieler 2 darstellen (z.B. Spielsteine "1" und "2"). Diese Strings sollten Sie im Folgenden immer verwenden.


Aufgabe 1

Ein Spielzug muss beim Dame-Spiel bestimmte Anforderungen erfüllen:

Wenn Sie an der Reihe sind, bewegen Sie einen Ihrer Steine diagonal in Richtung gegnerische Seite. 
Sie müssen den Stein vorwärts in ein unbesetztes Feld bewegen, indem Sie ihn entweder diagonal um genau ein Feld verschieben
oder einen gegnerischen Stein überspringen (dazu sagt man auch schlagen). 
Zum Springen muss Ihr Spielstein diagonal direkt vor dem gegnerischen Stein platziert sein.    
Außerdem muss sich hinter dem gegnerischen Stein ein leeres Feld befinden.
Sie müssen also den gegnerischen Stein überspringen und direkt dahinter auf einem leeren Feld landen.

Entwickeln Sie eine Methode ist_gültig, die folgende Parameter entgegennimmt:

  1. das Spielfeld-Array
  2. zeile_alt und spalte_alt für die Position des Spielsteins, der bewegt werden soll
  3. zeile_neu und spalte_neu für die vom Nutzer gewünschte neue Position des Spielsteins

Die Methode soll nur überprüfen, ob dieser Spielzug nach obiger Beschreibung gültig ist oder nicht. Sie soll true zurückgeben, wenn der Spielzug in Ordnung ist, ansonsten false.


Aufgabe 2

Entwickeln Sie eine Methode kann_springen, die folgende Parameter entgegennimmt:

  1. das Spielfeld-Array
  2. zeile_alt und spalte_alt für die Position des Spielsteins, der bewegt werden soll
  3. zeile_neu und spalte_neu für die vom Nutzer gewünschte neue Position des Spielsteins

Die Methode soll nur überprüfen, ob dieser Spielzug nach obiger Beschreibung den gegnerischen Spieler schlägt (Rückgabe true) oder nicht (Rückgabe false).


Aufgabe 3

Entwickeln Sie eine Methode springen, die folgende Parameter entgegennimmt:

  1. das Spielfeld-Array
  2. zeile_alt und spalte_alt für die Position des Spielsteins, der bewegt werden soll
  3. zeile_neu und spalte_neu für die vom Nutzer gewünschte neue Position des Spielsteins

Die Methode soll das Schlagen bzw. Springen durchführen, d.h. das Spielfeld-Array soll modifiziert und anschließend zurückgegeben werden. Wir gehen davon aus, dass der Spielzug gültig ist und die Bedingungen zum Springen gegeben sind. Gehen Sie wie folgt vor:

  1. Die Methode setze_spielstein können Sie aufrufen, um zunächst den Spielstein zu versetzen.
  2. Anschließend müssen Sie den gegnerischen Stein vom Spielfeld entfernen. An welcher Position sich dieser befindet, müssen Sie anhand der Parameter berechnen.

Testen Sie die Methode wie folgt:

  1. Erzeugen Sie sich ein 2D-Array mit der Methode erstelle_spielfeld.
  2. Initialisieren Sie das Spielfeld mit der Methode setze_alle_steine.
  3. Geben Sie das Spielfeld mit der Methode drucke_spielfeld aus.
  4. Überlegen Sie sich einen Spielzug für einen der beiden Spieler.
  5. Wenn die Methoden ist_gültig und die Methode kann_springen true zurückgeben, rufen Sie die Methode springen auf und drucken Sie das Spielfeld.
  6. Wenn die Methode ist_gültig true zurückgibt und die Methode kann_springen false zurückgibt, rufen Sie die Methode setze_spielstein auf und drucken Sie das Spielfeld.
  7. Stellen Sie ein kleines Spielszenario manuell nach, indem Sie die Schritte 4 bis 6 mit unterschiedlichen gültigen und ungültigen Spielzügen für beide Spieler wiederholen.


Aufgabe 4 (Zusatzaufgabe)

Erreicht ein Spielstein die gegnerische Grundlinie, wird er zur Dame befördert.
Dies wird kenntlich gemacht, indem ein zweiter Stein obenauf gesetzt wird.
Er darf nun vorwärts und rückwärts ziehen und springen.

Entwickeln Sie eine Methode, die ein Spielfeld-Array als Parameter entgegennimmt und die Spielsteine befördert, die sich auf der gegnerischen Grundlinie befinden. Für die beförderten Spielsteine jedes Spielers müssen Sie sich einen zusätzlichen String überlegen (z.B. "D" und "E"). Dieser String soll für die "beförderten" Spielsteine den ursprünglichen Spielstein im Array ersetzen. Geben Sie das Array anschließend zurück.


Aufgabe 5 (Zusatzaufgabe)

Erweitern Sie die Methoden ist_gültig und kann_springen so, dass auch beförderte Spielsteine berücksichtigt werden, die rückwärts ziehen dürfen. Die Methode springen muss ggf. mit angepasst werden.

Persönliche Werkzeuge