Bilder initialisieren

da unterstreicht er erst nichts, aber beim ausführen, gibt er die Fehlermeldung aus...
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
werden die Bilder doch nicht richtig initialisiert?
 
ok, es geht... er füllt mir alles aus...aber auch die leeren Felder...der Fehler liegt an den Konstanten...
soll ich hier noch was ändern?
Code:
static final int Schwarz = 0;
  static final int Weiß = 1;
  static final int Leer = 2; 
  static final int BauerS = 3;
  static final int TurmS = 4;
  static final int SpringerS = 5;
  static final int LaeuferS = 6;
  static final int DameS = 7;
  static final int KoenigS = 8;
  static final int BauerW = 9;
  static final int TurmW = 10;
  static final int SpringerW = 11;
  static final int LaeuferW = 12;
  static final int DameW = 13;
  static final int KoenigW = 14;
 
also ich poste nochmal den kompletten Code...
Code:
public class Spielfeld extends JPanel implements MouseListener{

	int aktiveFigur[] = { -1, -1 };
	int nPlayer = Weiß; // Welcher Spieler soll beginnen?
	static final int Schwarz = 0;
	static final int Weiß = 1;
	static final int Leer = 1; 
	static final int BauerS = 0;
	static final int TurmS = 1;
	static final int SpringerS = 2;
	static final int LaeuferS = 3;
	static final int DameS = 4;
	static final int KoenigS = 5;
	static final int BauerW = 6;
	static final int TurmW = 7;
	static final int SpringerW = 8;
	static final int LaeuferW = 9;
	static final int DameW = 10;
	static final int KoenigW = 11;
	private JPanel spielfeldPanel;
	public Schach schachKlasse;
	int Brett[][];
	public ImageIcon[] bild;

	public Spielfeld(){

		zeichneSpielfeld();
	}

	public void zeichneSpielfeld() {

		bild = new ImageIcon[12];
		String[] bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
				"BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
		for(int i = 0; i < bild.length; i++) {
			bild[i] = new ImageIcon(Toolkit.getDefaultToolkit().getImage(bilder[i] + ".gif"));
		}

		// Erstelle Brett mit 8 x 8 = 64 Feldern
		Brett = new int[8][8];

		for (int i = 0; i < 8; ++i)
			for (int j = 0; j < 8; ++j)
				// alle Felder sind am Anfang leer...
				Brett[i][j] = Leer;
		// bis auf:
		Brett[0][0] = TurmS; // schwarze Spielfiguren
		Brett[0][1] = SpringerS;
		Brett[0][2] = LaeuferS;//...



		Brett[7][0] = TurmW; //weiße Spielfiguren
		Brett[7][1] = SpringerW;
		Brett[7][2] = LaeuferW;//...

		addMouseListener(this);

		this.setLayout(new GridLayout(8, 8));

		JButton[][] feld = new JButton[8][8];
		for (int c = 0; c < feld.length; ++c) {
			for (int r = 0; r < feld[ c].length; ++r) {
				feld[ c][r] = new JButton(bild[Brett[ c][r]]);
				feld[ c][r].setBackground((c + r) % 2 == 0 ? Color.GRAY : Color.WHITE);
				this.add(feld[ c][r]);                        
			}
		}
	}

	public static void main(String[] args) {

		new Spielfeld();


	}

Das Spielbrett schaut dann so aus, was soll ich ändern ^^
 

Anhänge

  • brett.JPG
    brett.JPG
    66,7 KB · Aufrufe: 28
also ich poste nochmal den kompletten Code...

Das Spielbrett schaut dann so aus, was soll ich ändern ^^

Ich hab Verstaendnis fuer Leute die neu anfangen mit Java, jedoch sollte ein wenig mehr Eigeninitiative zu sehen sein.
"Was soll ich aendern" hoert sich an wie "Schreibt mir den Code, damit ich spaeter nen funktionierendes Spiel hab"

Weisst du ueberhaupt was bis jetzt dort in dem Code passiert? Ich denke nicht. Versuch das erstma nachzuvervolgen!

PS: Variablennamen schreibt man klein.
 
Hallo zusammen,

dein Problem liegt in der Art und Weise, wie Du mit
Java:
JButton[][] feld = new JButton[8][8];
umgehst. Musst Du wirklich ALLE Felder füllen?

<offtopic>
Zu deinem Code Style, bzw dem nicht-beachten dessen :)

Lies Dir mal diese 4 Absätze durch. Dauert 2 Minuten.
http://java.sun.com/docs/codeconv/

Wenn Du die Notwendigkeit einsiehst, dann lies dir wenigstens diese Seite durch
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367

Wenn Du das Thema immer noch ok findest, Dir das aber nicht alle merken möchtest und Eclipse verwendest, besorg Dir doch das Plugin
http://checkstyle.sourceforge.net/
</offtopic>

Gruß Sen
 

Neue Beiträge

Zurück