Bei mir kommt bei folgendem Code immer ein Syntax Error:
IF ((Spieler1.Y) - 100) >= (Screen_Y - 16) THEN ((Spieler1.Y) - 100) = (Screen_Y - 16)
Wenn ich es so mache funktioniert es:
IF ((Spieler1.Y) - 100) >= (Screen_Y - 16) THEN Spieler1.Y = (Screen_Y - 16)
So aber wiederum auch nicht:
IF ((Spieler1.Y) - 100) >= (Screen_Y - 16)
((Spieler1.Y) - 100) = (Screen_Y - 16)
ENDIF
Habe es schon mit und ohne Klammern versucht, jedesmal das gleiche Ergebnis.
Sehe ich da den Fehler nicht oder ist das ein Bug?
Meiner Meinung nach (wart aber lieber nach einer Aussage von Gernot):
Mit THEN kannst du nur einen Befehl benutzen. Durch die Umklammerung werden (intern?) mehrere Befehle daraus und der Compiler verspult sich irgendwie..
Dann müsste es doch aber mit IF....ENDIF funktionieren, was es aber auch nicht tut:/
ähhh eine Zuweisung hat aber eigentlich die Berechnung nur auf der rechten Seite des Ausdruckes:
also:
Spieler.y - 100 = Screen_Y - 16
ist schmarrn, zumindest für einen Compiler, auch wenn es mathematisch gesehen korrekt sein kann ;))
richtiger wäre hier dann wohl
Spieler.y = Screen_Y - 16 - 100
In der IF-Abfrage klappt das natürlich, weil du hier ja zwei Ausdrücke vergleichst, bei Wertzuweisungen kann das aber nicht klappen.
Wertzuweisungen haben auf der linken Seite des Gleichheitszeichen eine Variable und rechts davon einen beliebig komplexen Ausdruck. Beim Vergleich mit IF werden zunächst die Ausdrücke rechts und links vom Vergleichsoperator (=, >, < etc.) berechnet und dann der Vergleich gemacht.
Ja, Quentin liegt richtig !
Man kann das auch so schreiben:
if spieler1.Y -100 >= screen_Y -16
screen_Y = screen_Y -16
spieler1.Y = screen_Y
endif
Quentin hat zu 99% recht.
Der = operator ist auf der linken Seite eine Zuweisung:
a = 5+7
auf der rechten Seite, ist er ein Vergleich:
IF a=5 THEN ...
und:
a = b=c
b=c wird TRUE oder FALSE, das wird dann a zugewiesen.
und das Fehlende 1% liegt wahrscheinlich an seinem Freudentanz !
That is one percent jig !
http://de.youtube.com/watch?v=6uscaMe5lVg&feature=related.
Ah, ok. Vielen Dank für die Aufklärung :good: