Information Technology Reference
In-Depth Information
MediaTracker controler = new MediaTracker(ref);
fig[1]=ref.getImage(ref.getCodeBase(),"white_pawn.gif");
fig[2]=ref.getImage(ref.getCodeBase(),"white_knight.gif");
fig[3]=ref.getImage(ref.getCodeBase(),"white_bishop.gif");
fig[4]=ref.getImage(ref.getCodeBase(),"white_rook.gif");
fig[5]=ref.getImage(ref.getCodeBase(),"white_queen.gif");
fig[6]=ref.getImage(ref.getCodeBase(),"white_king.gif");
fig[11]=ref.getImage(ref.getCodeBase(),"black_pawn.gif");
fig[12]=ref.getImage(ref.getCodeBase(),"black_knight.gif");
fig[13]=ref.getImage(ref.getCodeBase(),"black_bishop.gif");
fig[15]=ref.getImage(ref.getCodeBase(),"black_queen.gif");
fig[16]=ref.getImage(ref.getCodeBase(),"black_king.gif");
for (int i = 1; i < 7; i++) {
controler.addImage(figures[i], 0);
controler.addImage(figures[i + 10], 0);
}
Das Zeichnen der Figuren erfolgt in der paintBoardField() Methode:
public void paintBoardfield(int index) {
Graphics g = getGraphics();
int x = (index - 21) % 10;
int y = (index - 21) / 10;
if ((x * 11 + y) % 2 == 0)
g.setColor(hell);
else
g.setColor(dunkel);
g.fillRect(x * 40, y * 40, 40, 40);
try {
g.drawImage(figures[graphboard[index]%100-10],
x*40,y*40, 40, 40, applet);
} catch (ArrayIndexOutOfBoundsException e) {
}
}
Das Programm wird komplett über die Maus gesteuert und damit über den Drag&Drop-
Mechanismus. Insofern muss es auf die entsprechenden Mausereignisse reagieren können.
Hierzu müssen die Ereignisbehandlungsroutinen im Konstruktor registriert werden.
addMouseListener(this);
addMouseMotionListener(this);
Der Anwender kann nunmehr auf ein Feld klicken, die Maus auf ein anderes Feld ziehen
und die Maustaste loslassen. Um die hierbei erzeugten Werte zwischenspeichern zu kön-
nen, werden entsprechende Variablen benötigt. Diese Variablen sind im globalen Namens-
bereich der Klasse ChessBoard definiert:
int code = 0, start = 21, alt = 21, end = 21, x = 0, y = 0;
Die execute() Methode wird immer dann aufgerufen, wenn der Computer seinen Zug ge-
funden hat oder wenn der Gegner einen gültigen Zug ausgewählt hat. Um zwischen gültigen
und ungültigen Zügen zu unterscheiden, wurde die Methode isvalid() implementiert.
Die Ereignisbehandlungsroutinen mouseDragged() , mousePressed() und
mouseReleased() sind speziell an die Belange der Spielsteuerung angepasst. So wird
Search WWH ::




Custom Search