If-Abfrage funktioniert nicht immer [GELÖST!]
Übersicht

![]() |
Der EisvogelBetreff: If-Abfrage funktioniert nicht immer [GELÖST!] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich hab eine stinknormale If-Abfrage mit Types gemacht. Jetzt habe ich das Problem, dass diese nicht immer funktioniert. Hier die If-Abfrage: Code: [AUSKLAPPEN] If Solid(aktiv((z\x-96-scroll_x)/32+3,(z\y-96+18)/32+3))=1 Or Solid(aktiv((z\x-96-scroll_x+32)/32+3,(z\y-96+18)/32+3))=1 Then z\boden=3 : z\aktiv=3
Ich bin Ratlos. PS: Das Problem beschaftigt mich schon seit 18:00 Uhr. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
- Zuletzt bearbeitet von Der Eisvogel am Do, Mai 15, 2008 12:59, insgesamt einmal bearbeitet
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was macht solid und aktiv? | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
poste uns mal bitte die solid und active functions damit man weiß wo der fehler vll liegt.
Und das Problem verstehe ich auch nicht ganz. Wie manchmal klappt es und manchmal nicht? Beschreibe mal was die Funktion machen soll und was sie tut und nicht tut. Dann kann dir hier jeder glaub ich besser helfen ![]() |
||
... |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das, was hinter dem "Then" steht soll gemacht werden, ist doch ganz klar, was es bewirken soll muss man ja nicht wissen. Tatsache ist, das dies nicht immer ausgeführt wird wenn die Bedingung erfüllt ist. Manchmal macht sie es und manchmal nicht.
"Solid" und "aktiv" Sind Arrays, die in tausenden von If-Abfragen vorkommen. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass dir den inhalt der Arrays so wie du ihn abfragst vor dem If mal mit print ausgeben und Schau ob denn auch wirklich die Ergebnisse kommen von denen Du denkst dass sie kommen. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist immer das was es sein soll --> If-Abfrage ist normalerweise erfüllt. Aber irgendetwas ist an dieser Abfrage faul. Vorallendingen, weil sie ja immer mal wieder funktionniert. Mal bei ersten Aufruf, mal beim zweiten, usw. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es kann sein, daß der Fehler in einem der anderen Variablen liegt (Scroll-X?).
Ein Fehler, den man leicht machen kann und nur schwer zu finden ist, wenn man bei einem längerem Variablen Namen sich irgendwo vertippt, ein Buchstabe fehlt oder vertauscht ist, und dann wird irgendwo nicht mit dem Variable gerechnet, mit dem man das annimt, sondern mit Null. Ein Tipp: Um wichtige logische Zusammenhänge übersichtlicher darzustellen, könntest du diese lange Zeile mit dem If Then aufteilen. Zum Beispiel vor dem If Then die Werte schon berechnen und in temporäre Variable speichern : Aktiv_X = (z\x-96-scroll_x)/32+3 das selbe mit Y. Dann in der If Then Zeile wird alles viel kürzer und verständlicher : If Solid(aktiv(Aktiv_X)),... then Ich habe die Erfahrung gemacht, daß bei kompexeren Codes nicht darauf ankommt alles möglichst kurz uund kompat zu schreiben, sondern mehr auf die Verständlichkeit, darauf, daß man auf den ersten Blick erkennt wo was gemacht wird, selbst dann, wenn man nach mehr wöchiger oder monatiger Pause wieder reinschauen muß. |
||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Omenaton
Darüber habe ich noch nie nachgedacht. ![]() Und das Problem ist jetzt dank dir gelöst. Das "scroll_x" war Schuld. Ich weiß auch nicht genau warum das überhaupt drin war. Warum mir das nicht schon früher aufgefallen ist, weiß ich ich auch nicht. Trotzdem Danken an Alle! MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group