Ellenlange Zeile[Erledigt]
Übersicht

![]() |
FoppeleBetreff: Ellenlange Zeile[Erledigt] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
Ich schäme mich ja fast das zu fragen ![]() aber ich hab nix drüber gefunden: Wenn ich bei einer If- Abfrage mehrere Bedingungen, die erfüllt sein müssen, hinzufüge, mache ich das ja so: IF dings=bums AND Bla=Blub AND mops=0 THEN... Jetzt habe ich aber so viele und so lange Bedingungen, das die Zeile 3 Bildschirmlängen braucht. Wenn ich es aber in mehrere Zeilen aufteilen will: IF dings=bums AND Bla=Blub AND mops=0 THEN oder IF dings=bums AND Bla=Blub AND mops=0 THEN funktioniert es nicht. Wie teilt man das korrekt auf? Geht das vielleicht garnicht? |
||
- Zuletzt bearbeitet von Foppele am Mo, Dez 17, 2007 15:02, insgesamt einmal bearbeitet
![]() |
SchnittlauchUnkraut |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verschachtel einfach mehrere ifs.
If bla = true then if blubbel = true then if kurt = blubblel then .... end if end if end if |
||
Ich wars nicht. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst auch ersteinmal versuchen, ob ein paar dieser Abfragen vlt überflüssig sind, bzw ob du schon vorher ein paar Variablen wegnehmen kannst.
Bei einem guten Programmierstil dürfte man eigentlich garnicht in so eine Situation kommen ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Schnittlauch+smiley:
So ähnlich hatte ich's auch schon mal gemacht, fällt mir gerade ein... für jede Bedingung eine Variable und dann die abfragen. Ich dachte DAS wäre schlechter Programmierstil, und normalerweise macht man's anders ![]() Danke! |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich glaube du hast mich falsch verstanden.
Eigentlich kann ich mir nicht vorstellen, wie man an einen Punkt kommen sollte, in dem Man duzente Variablen gleichzeitig prüfen muss. Um was für ein Programm geht es denn? Mal sehen, ob sich das irgendwie komplett anders lösen lässt cu, Smily0412 |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, nach euren Tipps hab ichs mir so gebaut:
Code: [AUSKLAPPEN] Local u = 0 Local v = 0 Local w = 0 If EntityX#(b\mesh)-EntityX#(b2\target) <= tolerance And EntityX#(b\mesh)-EntityX#(b2\target) >= -tolerance Then u = 1 If EntityY#(b\mesh)-EntityY#(b2\target) <= tolerance And EntityY#(b\mesh)-EntityY#(b2\target) >= -tolerance Then v = 1 If EntityZ#(b\mesh)-EntityZ#(b2\target) <= tolerance And EntityZ#(b\mesh)-EntityZ#(b2\target) >= -tolerance Then w = 1 If u = 1 And v = 1 And w=1 Then PositionEntity b\mesh,EntityX#(b2\target),EntityY#(b2\target),EntityZ#(b2\target) EndIf Das stand halt vorher in einer Zeile... [EDIT] Nach dem Codeeinfügen sind die Zeilen ein bisschen verrutscht... |
||
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
so lang ist die zeile gar net ....also ich hab teilweise viel längere ...außerdem hast du zwischen jedem = und der zahl ein leerzeichen ..das ist nicht unbedingt nötig ...sieht zwar schöner aus aber wenn du lieber kürzere zeilen haben willst dann lösch diese überflüssigen leerzeichen raus
mfg Außerdem kannst du die var tolerance auch durch ne kleinere ersetzten ... z.b tol |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und falls du noch mehr Bedingungen hast, kannst du statt u, v, w, auch einfach nur u verwenden und bei jeder erfüllten Teilbedingung u = u + 1 setzen. Am Ende müsstest du dann nicht mehr if u = 1 and v = 1 and w = 1 abfragen, sondern einfach: If u = 3. | ||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Logisch. Da stand ich mal wieder aufm Schlauch... ich glaub am schönsten find ich die verschachtelten IFs von Schnittlauch ![]() |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
schonmal an eine Funktion gedacht?
(Hab den Code aus dem kopf gemacht.. müsste aber funktionieren) Code: [AUSKLAPPEN] If EntityDistance(b\mesh, b2\target) <= tolerance ;blablabla end if Function EntityDistance#(mesh1, mesh2) xabs# = entityx(mesh1) - entityx(mesh2) yabs# = entityy(mesh1) - entityy(mesh2) zabs# = entityz(mesh1) - entityz(mesh2) ; 3-Dimensionaler Pythagoras dist# = sqr(xabs^2+yabs^2) dist = sqr(dist^2 + zabs^2) return dist End (btw.. Der code funzt ein kleines bisschen anders.. bei dir hat der Tolleranzberreich die Form eines gedachten Würfels um die Figur herum. Bei mir hat der Berreich die Form einer Kugel) cu, Smily0412 |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Der Toleranzbereich wird absichtlich nicht trigonometrisch berechnet weil es für diesen Zweck unnötig genau ist. P.S. 3D Pythagoras kann man auch in eins berechnen, dist# = Sqr#(xabs^2.0+yabs^2.0+zabs^2.0) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group