Information Technology Reference
In-Depth Information
Letztendlich wird die Methode mouseReleased() aufgerufen, wenn der Anwender die
Maustaste los lässt. Da die Maus irgendwann auf das Endfeld bewegt worden ist, wurden
die Koordinaten bereits von mousePressed() oder mouseDragged() gespeichert.
Insofern müssen nur noch die Markierungen gelöscht und der gültige Zug ausgeführt wer-
den. Dabei sorgt die Variable code dafür, dass nicht auf die Zugliste zugegriffen wird,
wenn die kognitiven Komponenten am Berechnen eines Zuges ist.
public void mouseReleased(java.awt.event.MouseEvent e) {
paintBoardfield(start);
paintBoardfield(end);
if ((code != 1) && (isvalid(start * 100 + end)))
execute(start, end);
}
Die inhärente Spiellogik sorgt dafür, dass die basalen Eigenschaften bzw. die Vitalfunk-
tionen eines Schachspiels dem Programm zur Verfügung stehen. So muss beispielsweise
sichergestellt werden, dass die geltenden Schachregeln eingehalten werden. Dabei bezieht
sich das Einhalten der Regeln sowohl auf den Anwender als auch die Berechnung des Zu-
ges durch die Maschine. Dazu wird ein Array definiert, in dem alle gültigen Züge abge-
speichert werden. Die isvalid() -Methode durchläuft das Array und gibt wahr ( true )
zurück, wenn der ihr übergebene Zug in der Liste vorhanden ist. Die hierzu notwendige
Definition der globalen Variablen sieht wie folgt aus:
int[] movelist = new int[250];// valid move control
int movecounter = 0;
int color = 1;// color of the player that can move
Thread th = null;// AI thread
int deep = 0;// actual deep
int target = 4;// target deep
float value = 0;// minimax
float minimax[] = new float[10];
float alphabeta[] = new float[10];// Alpha Beta
boolean ababort = false;
int move;// move of the AI
Zuerst simuliert die Methode simulateBorder() , ob der Zug auf den Rand führt.
Sollte das nicht der Fall sein, wird der Zug der Zugliste hinzugefügt. Die Methode
simulateMulticrossing() simuliert die Züge von Dame, Turm und Läufer, d. h.
von den Figuren, die mehrere Felder auf einmal überqueren können.
public void simulateMulticrossing(int start, int inc) {
int to = start;
while ((board[to + inc] != 99)
&& (board[to + inc] % 100 / 10 != color)) {
to += inc;
if (board[to] != 0) {
simulateBorder(start, to);
return;
}
Search WWH ::




Custom Search