// Die selbst gewählte Aufgabe lautet: // 1. Ein Schachbrett // 2. Schachfiguren // 3. ... die man auch ziehen kann // zu programmieren. Schön wäre es, wenn man // mit dem Schachspiel auch gegeneinander oder per Computer // spielen kann. import java.awt.*; // Frame & Co import java.awt.event.*; // Events, -Listener etc. public class Schachspiel { public Schachspiel(){ // Schachbrett erzeugen Schachbrett sb = new Schachbrett(600); // Figuren drauf setzen für beide Spieler Figur[] figur = new Figur[32]; figur[0] = new Koenig(3,0,true,"koenig.png",1); // Interface für Bewegungen? } public static void main(String[] args) { new Schachspiel(); } } // Weitere Klassen, die vom Schachspiel gebraucht werden class Schachbrett extends Frame { // Position der Buttons als 8x8 Array Button[][] buttons = new Button[8][8]; // Hier passiert die Initialisierung im Konstruktor public Schachbrett(int groesse){ setSize(groesse,groesse); // Größe festlegen // Schließen-Button mit Funktion verknüpfen addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ // Fenster schließen dispose(); // Da wir sowieso im Frame sind. // System.exit(0); } }); // Um Felder zu erzeugen, die die Maus // erkennen, nehmen wir in diesem Beispiel // ein GridLayout mit 8x8 ZeilenxSpalten // und setzen Buttons hinein. setLayout(new GridLayout(8,8)); boolean white = true; for(int i=0; i<8*8; i++){ final Button b = new Koenig(0,0,true,"koenig.png",0); buttons[i/8][i%8] = b; if(i%2 != (i/8 % 2)){ b.setBackground(Color.black); b.setForeground(Color.white); } else{ b.setBackground(Color.white); b.setForeground(Color.black); } add(b); // Wir wollen wissen, über welchem Button sich // die Maus gerade befindet. b.addMouseListener(new MouseAdapter(){ public void mouseEntered(MouseEvent e){ System.out.println("Maus über Button " + b); } }); } setVisible(true); } } // Gemeinsame Eigenschaften ALLER Figuren abstract class Figur extends Button { int x,y; // Position auf dem Schachbrett boolean exists = true; Image bild = null; // Muss in der abgeleiteten Klasse geladen werden. int player = 0; // Welchem Spieler gehört die Figur? // 0 = keinem, 1 = weiß, 2 = schwarz public Figur(int x, int y, boolean exists, String bild_datei, int player){ this.x = x; this.y = y; this.exists=exists; this.player=player; // Wenn Bilddatei angegeben ist, laden! if(bild_datei != null) bild = Toolkit.getDefaultToolkit().createImage(bild_datei); } // paint()-Methode überschreiben, damit die // Grafik gezeichnet wird (wenn eine da ist!) public void paint(Graphics g){ if(bild != null) g.drawImage(bild,0,0,getWidth(),getHeight(), this); else super.paint(g); // "Normale" Zeichenroutine aufrufen } } // ... und die konkreten Figuren class Koenig extends Figur{ public Koenig(int x, int y, boolean exists, String bild_datei, int player){ // Übergeordneten Konstruktor aufrufen. super(x,y,exists,"images/koenig.png",player); } } class Dame extends Figur{ public Dame(int x, int y, boolean exists, String bild_datei, int player){ // Übergeordneten Konstruktor aufrufen. super(x,y,exists,"images/dame.png",player); } } class Turm extends Figur{ public Turm(int x, int y, boolean exists, String bild_datei, int player){ // Übergeordneten Konstruktor aufrufen. super(x,y,exists,"images/turm.png",player); } } class Laeufer extends Figur{ public Laeufer(int x, int y, boolean exists, String bild_datei, int player){ // Übergeordneten Konstruktor aufrufen. super(x,y,exists,"images/laeufer.png",player); } } class Springer extends Figur{ public Springer(int x, int y, boolean exists, String bild_datei, int player){ // Übergeordneten Konstruktor aufrufen. super(x,y,exists,"images/springer.png",player); } } class Bauer extends Figur{ public Bauer(int x, int y, boolean exists, String bild_datei, int player){ // Übergeordneten Konstruktor aufrufen. super(x,y,exists,"images/bauer.png",player); } } class Leer extends Figur{ public Leer(int x, int y, boolean exists, String bild_datei, int player){ // Übergeordneten Konstruktor aufrufen. super(x,y,exists,null,player); } }