If und else bei 2 Dimensionalen Arrays

Luk_as_java

Mitglied
Hallo Zusammen,
Ich arbeite gerade an einem kleinem Spiel, und hänge gerade an der Kollisionsprüfung wegen einer if else Verzweigung.....

Das ist mein src- Code bis jetzt, jedoch würde ich gerne die beiden if's in einen sinnvollen Ausdruck packen also, dass immer eine Bedingung des ersten if's erfüllt sein muss und eine des zweiten. DANKE im vorraus!

Code:

void koalisionsPruefung() {

if (pixelBelegt[x1][0]==true || pixelBelegt[x2][0]==true || pixelBelegt[x3][0]==true) {

if(pixelBelegt[y1][1]== true || pixelBelegt[y2][1]==true || pixelBelegt[y3][1]==true){

gameOver=true;

}

}
 
Zuletzt bearbeitet:
Was genau versuchst du zu machen?
ich versuche die x-y Koordinaten von Herunterfallende Blöcken mit denen einer "Rakete" zu vergleichen, bei einem Zusammenstoß wird das Spiel beendet. Dabei wird jeder Pixel auf dem sich ein Objekt befindet auf "true" gesetzt. Dabei müssen bei einer Kollision die x UND y Koordinate übereinstimmen, damit das Speil endet, meine Frage ist es wie ich diese beiden if's in eines Umschreiben kann.
 
Du hast 6 Bedingungen (a,b,c und d,e,f) - es muss a oder b oder c erfüllt sein und d oder e oder f.

Das einfachste ist:
Code:
if ( (a||b||c) && (d||e||f)) {
}

Sauber wäre es vermutlich für a || b || c eine eigene Methode boolean pruefeBedingung1 zu schreiben und für d,e,f eine pruefeBedingung2. Und dann
Java:
if (pruefeBedingung1() && pruefeBedingung2()) {
}
 
Naja überlege dir welche Möglichen Fälle es geben könnte 🙂 Du möchtest doch lediglich überprüfen ob dein Spieler (die Rakete) mit einem der Blöcke kollidiert. Somit holst du dir die Koordinaten deine Rakete und gleichst die mit denen deine Blöcke ab. Sollte es einen Match geben ist Game Over
 
meine Frage ist es wie ich diese beiden if's in eines Umschreiben kann

Zwei geschachtelte if-Zweige entsprechen einer UND-Verknüpfung der jeweiligen Bedingungen :

Das x == true kannst Du weglassen, der Vergleich zweier boolean-Werte ergibt wiederum einen boolean-Wert

Java:
void koalisionsPruefung() {

    if ( ( pixelBelegt[x1][0] || pixelBelegt[x2][0] || pixelBelegt[x3][0] ) &&
        (pixelBelegt[y1][1] || pixelBelegt[y2][1] || pixelBelegt[y3][1] ) )
        {
            gameOver=true;
        }
}
 
Zwei geschachtelte if-Zweige entsprechen einer UND-Verknüpfung der jeweiligen Bedingungen :

Das x == true kannst Du weglassen, der Vergleich zweier boolean-Werte ergibt wiederum einen boolean-Wert

Java:
void koalisionsPruefung() {

    if ( ( pixelBelegt[x1][0] || pixelBelegt[x2][0] || pixelBelegt[x3][0] ) &&
        (pixelBelegt[y1][1] || pixelBelegt[y2][1] || pixelBelegt[y3][1] ) )
        {
            gameOver=true;
        }
}
Danke! Aber aus irgendeinem einem Grund wird gameOver auf true gesetzt, wenn nur die X-Werte der beiden Objekte übereinstimmen, also wenn sich der Block z.B 200 Pixel über der Rakete befindet aber die X- Werte gleich sind wird das Spiel trotzdem beendet
 
Du hast 6 Bedingungen (a,b,c und d,e,f) - es muss a oder b oder c erfüllt sein und d oder e oder f.

Das einfachste ist:
Code:
if ( (a||b||c) && (d||e||f)) {
}

Sauber wäre es vermutlich für a || b || c eine eigene Methode boolean pruefeBedingung1 zu schreiben und für d,e,f eine pruefeBedingung2. Und dann
Java:
if (pruefeBedingung1() && pruefeBedingung2()) {
}
Stimmt danke für den Tipp!
 

Zurück
Oben