Ich mache ein Checkers-Spiel für eine Aufgabe. Die ganze Sache läuft so, wie es sollte, bis auf eine seltsame Sache. Hier ist mein Board:
Ich bewege mich, indem ich die Quellzeile und -spalte, dann die Zielzeile und -spalte gebe.
%Vor%Ich sollte einen Fehler ausgeben, wenn ich versuche, ein Stück an eine ungültige Stelle zu bewegen (nicht diagonal). Wenn ich also versuche ein Stück von 5 2 zu bewegen - & gt; 4 2, gibt es mir eine Fehlermeldung.
%Vor%Für die meisten Dinge funktioniert es, aber wenn ich versuche, direkt einen Bereich nach unten zu bewegen (zum Beispiel 2 3 - & gt; 3 3), bewegt es das Stück und gibt mir keine Fehlermeldung.
Ich stecke fest! Irgendwelche Ideen, warum das passieren könnte? Ich kann bei Bedarf mehr Code veröffentlichen.
Gemäß Ihrer Logik, wenn
%Vor%ist wahr, der ganze Ausdruck wird wahr sein. Sie müssen auf die Reihenfolge achten, in der Java die booleschen Operationen ~ Add () bei Bedarf auswertet ~
Es ist ziemlich einfach, denke ich. Es gibt nur vier erlaubte Züge.
%Vor%Natürlich erlaubt dieser Check Rückwärtsbewegungen. Aber die Richtung einer Rückwärtsbewegung hängt von der Spielfarbe ab und davon, ob das Stück durch Erreichen des anderen Endes befördert wird.
Ihr logischer Ausdruck ist falsch.
Sehen Sie sich Vorrang für Java-Operatoren an.
Wenn Sie Zweifel haben, verwenden Sie immer Klammern:
%Vor%Ich denke, Sie brauchen hier ein paar Klammern, da diese Bewertung schwierig ist, da Sie versuchen, zwei Ausdrücke gleichzeitig zu vergleichen. Probieren Sie
aus %Vor%Auf diese Weise, wenn (destR = srcR +/- 1) UND (destC = srcC +/- 1), ist die Bewegung gültig.
Der ursprüngliche Weg würde einige der Zeit ausarbeiten, da Java boolean zwei Ausdrücke oder das Ergebnis des vorherigen Ausdrucks mit dem nächsten vergleicht.
entspricht
%Vor%In Ihrem zweiten Beispiel:
%Vor% destr
(= 3) ist gleich srcR
(= 2) + 1
= & gt; destR == srcR+1
ist true = & gt; Die Auswertung von (destR == srcR+1 || (destR == srcR-1 && destC == srcC+1) || destC == srcC-1)
ist true .
Um Ihr Problem zu beheben, müssen Sie Ihre if
-Anweisung zu:
Tags und Links java