Information Technology Reference
In-Depth Information
public void simulateBorder(int start, int end) {
if ((board[end] == 99) || (board[end] % 100 / 10 == col-
or))
return;
if (ababort) // alpha beta
return;
int orgstart = board[start];
int orgend = board[end];
board[end] = board[start];
board[start] = 0;
// change pawn
if ((board[end] % 10 == 1) && ((end < 29) || (end > 90)))
board[end] += 4;
if (!isCheckmate()) {
if (deep == 1) {
movelist[movecounter] = start * 100 + end;
movecounter++;
}
if (target == deep)
value = evaluation();
else {
if (color == 1)
color = 2;
else
color = 1;
generateMove();
value = minimax[deep + 1];
// change alpha beta field?
if (deep % 2 != 0) { // computer
if (value < alphabeta[deep])
alphabeta[deep] = value;
} else {
// human
if (value > alphabeta[deep])
alphabeta[deep] = value;
}
if (color == 1)
color = 2;
else
color = 1;
}
// minimax
if (deep % 2 == 0) { // human
if (value > minimax[deep])
minimax[deep] = value;
// alphabeta
if (value > alphabeta[deep - 1])
ababort = true;
} else {
// computer
if (value <= minimax[deep]) {
minimax[deep] = value;
if (deep == 1)
move = start * 100 + end;
}
// alphabeta
if (value < alphabeta[deep - 1])
ababort = true;
}
}
// undo move
board[start] = orgstart;
board[end] = orgend;
}
Damit die Spiellogik einen Zug auswählen kann, muss sie eine Stellung nicht nur ein-
schätzen, sondern auch die günstigste Stellung finden können. Dazu dient die Bewer-
tungsfunktion. Sie ordnet einer konkreten Stellung einen Wert zu, anhand dessen der
Computer beurteilen kann, ob er besser als der Gegner steht oder nicht. In die Bewer-
tungsfunktion können verschiedene Aspekte einer Stellung eingehen: die Bauernstruktur,
die Beherrschung des Zentrums, eine positionelle Einschätzung, der Materialwert oder das
Tempo, um nur ein paar Kritierien aus dem Bewertungsrepertoire zu nennen. Im Rahmen
der Implementierung der Spiellogik begnügt man sich mit dem Materialwert und einer
positionellen Einschätzung. Der Materialwert wird ermittelt, indem der Wert aller Figu-
ren des Computers zusammengezählt und von diesem Ergebnis der Wert aller Figuren
des menschlichen Spielpartners abgezogen wird. Für die positionelle Bewertung wird ein
Datenfeld vorgesehen, indem für jedes Feld ein Wert gespeichert wird. Diese positionellen
Search WWH ::




Custom Search