4 Gewinnt - Code wird ignoriert

fliger5

Mitglied
Hi,
arbeite zurzeit an einem 4 Gewinnt Spiel in Java, allerdings ist jetzt ein Problem aufgetreten bei dem irgendwie der Code nach einem bestimmten Abschnitt ignoriert wird.

Hier mal der Code:
Java:
	public void actionPerformed(ActionEvent eingabe) {
		
		zaehler++;
		JButton gewählterButton = (JButton)eingabe.getSource();
		
		if(zaehler %2== 1) 
		 {gewählterButton.setBackground(Color.RED);}		
		 else 
		 {gewählterButton.setBackground(Color.YELLOW);}
			  
		
		
		//Runterrutschen
		
		for(int i=0;i<(BREITE*HOEHE)-1;i++)
		{
		//RED = 1
		if (button[i].getBackground()==Color.red && button[i+BREITE].getBackground()==Color.blue)
			{
			button[i].setBackground(Color.blue);
			button[i+BREITE].setBackground(Color.red);
			button[i].setEnabled(true);
			CheckArray[i] = 0;
			button[i+BREITE].setEnabled(false);
			CheckArray[i+BREITE] = 1;
			}
		else if (button[i].getBackground()==Color.red)
		{CheckArray[i] = 1;}
		
		//YELLOW = 2
		if (button[i].getBackground()==Color.yellow && button[i+BREITE].getBackground()==Color.blue)
		    {
		    button[i].setBackground(Color.blue);
		    button[i+BREITE].setBackground(Color.yellow);
		    button[i].setEnabled(true);
		    CheckArray[i] = 0;
		    button[i+BREITE].setEnabled(false);
		    CheckArray[i+BREITE] = 2;
		    }
		else if (button[i].getBackground()==Color.yellow)
		{CheckArray[i] = 2;}
		}
		
		
		//Ab hier wird ignoriert
		for (int i=1;i<(HOEHE*BREITE);i++)
		{
		System.out.print(CheckArray[i] + ", ");
		}

Hab die Stelle markiert ab der der Code ignoriert wird. Setz ich den kleinen Teil
Java:
for (int i=1;i<(HOEHE*BREITE);i++)
{
System.out.print(CheckArray[i] + ", ");
}
allerdings VOR das "Runterrutschen", dann klappt es. Leider gibts dann einen Logikfehler, deswegen muss der Code eben UNTER das "Runterrutschen".
Der kleine Teil ist übrigens nicht das einzige was ignoriert wird, sondern alles was danach kommt und noch zur "public void actionPerformed"-Klasse gehört.
 
Zuletzt bearbeitet:
Also zuerst einmal ist das keine Klasse sondern eine Methode.
Zweitens ist dein Code grausam eingerückt und bietet 0 Übersicht, mach das bitte mal so:

Code:
a;
b()
{
    d;
    for(;;)
    {
        e;
        f;
    }
}
else
{
    g;
}
Dann siehst du vllt auch besser, ob was mit deinen Variablen nicht stimmt (ob vllt [c]HOEHE[/c] oder [c]BREITE[/c] verändert wird.

[EDIT]
Vielleicht fliegt auch eine [c]ArrayIndexOutOfBoundsException[/c] bei [c]checkArray[i + BREITE][/c]?
[/EDIT]
 
Zuletzt bearbeitet:
Also als Compiler benutz ich Eclipse.

Und ja, sorry Methode* 😉

HOEHE und BREITE sind fest deklariert, die werden nirgends verändert.

Dass das Array gesprengt wird ist auch nicht möglich, da ansonsten die Bedingungen nicht mehr erfüllt sein würden. (Die Anzahl der Buttons entspricht der Grösse des Arrays)

In dem Moment wo das Array gesprengt werden müsste, wäre die Bedingung
Code:
button[i+BREITE].getBackground()==Color.blue
nicht mehr gültig.
 
Zuletzt bearbeitet:
In dem Moment wo das Array gesprengt werden müsste, wäre die Bedingung
Code:
button[i+BREITE].getBackground()==Color.blue
nicht mehr gültig.
Ja, genau. Und dann fliegt entweder eine [c]ArrayIndexOutOfBoundsException[/c] oder eine [c]NullPointerException[/c]. Hast du 100% getestet, dass das nicht der fall ist?
 
Naja, wohl weil du dich irgendwo verrechnet hast. Gehs nochmal durch und überprüfe, ob deine Rechnungen korrekt sind. Wenn ja musst du wohl das Array größer machen...
 

Neue Themen


Zurück
Oben