int mit Color vergleichen?

Mister K.

Mitglied
Hallo community,

Java:
void dropDown(){
		Color[][] back  = (gameArea.getBack().getColorArray());
		int boden;
                      int y=getY();
		boden = y + HEIGHT;//Pixelreihe unter dem Objekt
		
		for(boden = getX(); boden<= getX()+WIDTH; boden++){
			if(boden == Background.SKY){// Hier hätte ich gerne die Pixelreihe mit d. Farbe verglichen
                                    y++; // Objekt fällt ein Pixel tiefer
				}
			else{
				return;// verlassen der Methode
			}
				
			}

also ein int lässt sich nicht mit Color vergleichen aber wie prüfe ich dann meine Pixelreihe auf die Farbe?

Liebe Grüße!
 
Zuletzt bearbeitet:
Der Code macht - zumindest teilweise - nicht viel Sinn und ich kann den Zusammenhang zur Frage nur erahnen.
Um was für einen int geht es denn? Woher kommt er? ein int ist nunmal kein Color, aber Color liefert mit getRGB() einen int Wert zurück, der die Farbe repräsentiert.
 
Es handelt sich um ein Spiel, wie Worms. Ein Objekt steht auf einem Spielfeld und falls unter dem Objekt das Spielfeld nicht mehr existiert also unter dem Objekt die Hintergrundfarbe(Background.SKY) ist, dann soll das Objekt eine Zeile bzw Pixel nach unten Fallen, solange bis es wieder auf einem Pixel der Farbe des Spielfeldes steht(!= Background.SKY). Also nehme ich die y Koord (boden) und durchlaufe es mit der Schleife auf der Breite des Objektes, also von getX() bis getX()+WIDTH(breite des Objektes).

Ich muss iwie prüfen ob unter dem Objekt auf der Breite von getX() bis getX()+Width, durchgehend die Farbe Background.SKY ist. Ist dass der Fall, fällt das Objekt ein Pixel tief.


PS: es ist auch nur ein Codeausschnitt, den ich hier gepostet habe und bis dahin funktioniert auch alles...
 
da stimmt sowieso etwas nicht in der Schleife... Nur mal für das Verständnis: Es wird jetzt für y=boden die y-Werte von x bis x+width durchlaufen und für jedes y(xn) wird doch geprüft ob es SKY ist. Wenn es SKY ist dann geht es y++ also ein Pixel tiefer, RICHTIG? Ich verstehe grad meinen eigenen Code nicht :-S

Wenn dass der Fall ist, ist das schwachsinn, weil nur wenn alles unter dem Boden SKY ist, dann muss das Objekt ein Pixel tiefer...
 
Ich verstehe grad meinen eigenen Code nicht
Meine Rede. Ich versteh ihn auch nicht ;-)

Code:
boden
in Zeile fünf zu setzen ist völlig nutzlos. In der Schleife enthält
Code:
boden
dann die x-Werte. Denke nicht, dass das so gewollt ist und in der for Schleife eher eine neue Variable deklariert werden sollte.

Code:
Background.SKY
ist ein Color Objekt und
Code:
back
enthält die Farben/Color Objekte des Spielfeldes? Dann musst Du doch nur
Code:
back[x][y]
mit
Code:
Background.SKY
vergleichen.
 
Anmerkungen zu deinem unverständlichem Code
Java:
void dropDown(){
        Color[][] back  = (gameArea.getBack().getColorArray());// ***für was wird das verwendet***
        int boden;
                      int y=getY();
        boden = y + HEIGHT;
        
        for(boden = getX(); boden<= getX()+WIDTH; boden++){
            if(boden == Background.SKY){//***hier vergleichst du den x wert (also die x-Kordinate) mit dem wert der Farbe (vorallem setzt du boden vorher mal auf y und dan auf x, hat das einen speziellen grund?***
                                    y++; //***jetzt erhöst du y, warum auch immer, das sollte wenn dann nach der schleife und müsste dann nicht der lokal definierte y sein sondern der des bildes ***
                }
            else{
                return;//***ja das sieht logisch und richtig aus ***
            }
                
            }

Java:
void dropDown(){    
        int y=getY() + HEIGHT;
        for(int x= getX(); x<= getX()+WIDTH; x++){
            if(BILD.getRGB(x,y)!= Background.SKY){ //Ersetze BILD mit dem Image objekt, dessen Farbe du anschauen willst.
                return;
             }
         }
         aenderePositionUmEinsNachUnten(); //Funktion die deine Bildposition bearbeitet       
}

[EDIT]Mhh zu langsam, aber vielleicht hilft es trotzdem[/EDIT]
 
Meine Rede. Ich versteh ihn auch nicht ;-)

Code:
boden
in Zeile fünf zu setzen ist völlig nutzlos. In der Schleife enthält
Code:
boden
dann die x-Werte. Denke nicht, dass das so gewollt ist und in der for Schleife eher eine neue Variable deklariert werden sollte.

Code:
Background.SKY
ist ein Color Objekt und
Code:
back
enthält die Farben/Color Objekte des Spielfeldes? Dann musst Du doch nur
Code:
back[x][y]
mit
Code:
Background.SKY
vergleichen.

und so funtz das ganze auch, ergibt zumindest keinen Fehler ^^ DANKE 😀:toll:
 

Neue Themen


Zurück
Oben