If und else bei 2 Dimensionalen Arrays

Diskutiere If und else bei 2 Dimensionalen Arrays im Java Basics - Anfänger-Themen Bereich.
L

Luk_as_java

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:
L

Luk_as_java

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.
 
L

LimDul

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()) {
}
 
Kirby_Sike

Kirby_Sike

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
 
B

Barista

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;
        }
}
 
L

Luk_as_java

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
 
L

Luk_as_java

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!
 
Thema: 

If und else bei 2 Dimensionalen Arrays

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben