Information Technology Reference
In-Depth Information
Nun gilt es dem Programm die Fähigkeiten „einzuverleiben“, damit es für Schwarz ziehen
kann. Dabei wird im Rahmen der Spiellogik die Zugauswahl zunächst nach dem Min-
Max-Algorithmus vorgenommen. Dieser Algorithmus folgt dem Prinzip, dass jede Par-
tei so zieht, dass ihr Vorteil „maximiert“ und der des Gegners „minimiert“ wird. Wenn
der Computer auf einer Tiefe ist, in der er selber zieht, nimmt der Knoten den Wert des
schlechtesten Unterknoten an. Ist es eine Tiefe, in der der menschliche Spieler zieht,
nimmt der Knoten den Wert des besten Unterknotens an. Negative Werte für eine Stellung
bedeuten immer, dass der Computer besser steht, da die Bewertung stets aus der Sicht des
menschlichen Gegners vorgenommen wird. Um diese Bewertung durchführen zu können,
müssen die entsprechenden Variablen vorgesehen werden, die der Klasse ChessBoard
als globale Variablen definiert sind:
Thread th = null;
int deep = 0;
int target = 4;
float value = 0;
float minimax[] = new float[10];
int move;
Damit die Zugberechnung nicht gleich das gesamte Spiel zum Erliegen bringt, erfolgt sie
in einem eigenen Thread. Der Thread wird in der Methode run() definiert. In ihr findet
die Berechnung des besten Zuges für die Spiellogik statt.
public void run() {
code = 1;
deep = 0;
target = 4;
movecounter = 0;
generateMove();
if (movecounter == 0)
{
if (isCheckmate()) {
applet.getAppletContext().showStatus("white wins!");
}
else {
applet.getAppletContext().showStatus("game draw!");
}
return;
}
execute(move / 100, move % 100);
code = 0;
}
Der MinMax-Algorithmus wird wie folgt implementiert:
if (deep % 2 == 0) {
if (value > minimax [deep])
minimax [deep] = value;
} else {
if (value < minimax [deep]) {
minimax [deep] = value;
if (deep == 1)
Search WWH ::




Custom Search