Class KalahSpiel

java.lang.Object
  extended by KalahSpiel

public class KalahSpiel
extends Object

Dieses BlueJ-Projekt ist ein sehr komplexes Beispiel, das aus der Welt der Spiele-Programmierung stammt. Den Hamstern wird das Spielen beigebracht, so dass sie in der Lage sind, gegen uns Menschen oder gegen andere Hamster so genannte Zwei-Spieler-Strategiespiele wie Schach, Mühle, Dame, 4-Gewinnt oder Reversi zu spielen, und die Hamster werden so gut sein, dass wir als Menschen kaum noch eine Chance haben, gegen sie zu gewinnen.

Das Spiel, an dem das zugrunde liegende Prinzip demonstriert wird, nennt sich Kalah. Kalah ist ein afrikanisches Brettspiel für zwei Spieler. Es besteht aus einem Brett mit zwei Reihen von je sechs Mulden, in denen anfangs je sechs Steine liegen, und zwei weiteren Mulden, die Kalah heißen und anfangs leer sind. Spieler A gehören die oberen Löcher und die linke Kalah, Spieler B die unteren Löcher und die rechte Kalah.

Ziel der beiden Spieler ist es, im Laufe eines Spiels möglichst viele Steine in die eigene Kalah zu bringen. Spieler A beginnt das Spiel. Ein Spielzug läuft dabei wie folgt ab: (1) Der Spieler wählt eine seiner Mulden (nicht seine Kalah) aus, die nicht leer ist, entleert sie und verteilt auf die entgegen dem Uhrzeigersinn folgenden Mulden je einen Stein, wobei er die Kalah des Gegners auslässt. (2) Landet der letzte Stein in einer eigenen leeren Mulde (keine Kalah) und ist die gegenüberliegende Mulde des Gegners nicht leer, so kommen der Stein sowie alle Steine der gegenüberliegenden Mulde in die eigene Kalah. (3) Landet der letzte Stein in der eigenen Kalah, so muss der Spieler noch einmal ziehen. Ansonsten ist der Gegner an der Reihe.

Das Spiel ist beendet, wenn ein Spieler an der Reihe ist, aber keinen erlaubten Zug mehr ausführen kann, d.h. alle seine Mulden leer sind. Der andere Spieler darf dann alle Steine, die noch in seinen Mulden liegen, in die eigene Kalah legen. Gewonnen hat der Spieler, der anschließend mehr Steine in seiner Kalah liegen hat. Bei Gleichstand endet das Spiel mit einem Unentschieden.

Version:
1.0 (29.01.2006)
Author:
Dietrich Boles (Universitaet Oldenburg)

Constructor Summary
KalahSpiel()
          initialisieren eines Kalah-Spiels
 
Method Summary
static void main(String[] args)
          Ein moegliches Spiel
 void spielen(Spieler spielerA, Spieler spielerB)
          Spielen eines Kalah-Spiels
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

KalahSpiel

public KalahSpiel()
initialisieren eines Kalah-Spiels

Method Detail

main

public static void main(String[] args)
Ein moegliches Spiel


spielen

public void spielen(Spieler spielerA,
                    Spieler spielerB)
Spielen eines Kalah-Spiels

Parameters:
spielerA - der Spieler, der Spieler A sein soll
spielerB - der Spieler, der Spieler B sein soll