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

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: If-Abfrage funktioniert nicht immer [GELÖST!]

BeitragMi, Mai 14, 2008 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Mai 14, 2008 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Was macht solid und aktiv?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

buja

BeitragMi, Mai 14, 2008 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink
...

Der Eisvogel

BeitragMi, Mai 14, 2008 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BladeRunner

Moderator

BeitragMi, Mai 14, 2008 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 15, 2008 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 15, 2008 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 15, 2008 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Omenaton
Darüber habe ich noch nie nachgedacht. Embarassed
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.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group