Bild wird nicht gezeichnet bei If-Abfrage [gelöst]
Übersicht

![]() |
Der EisvogelBetreff: Bild wird nicht gezeichnet bei If-Abfrage [gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
ich Farge mit einer If-Abfrage ab, ob ein bestimmtes Feld eine bestimmte Zahl hat, doch bei einer Abfrage geht das irgendwie nicht. Code: [AUSKLAPPEN] For x=0 To 9
For y=0 To 9 If player(x,y)=1.02 Then DrawImage schiff_5k_img_sr,x*32,y*32,0 If player(x,y)=1.12 Then DrawImage schiff_5k_img_sr,x*32,y*32,1 If player(x,y)=1.22 Then DrawImage schiff_5k_img_sr,x*32,y*32,2 If player(x,y)=1.32 Then DrawImage schiff_5k_img_sr,x*32,y*32,3 If player(x,y)=1.42 Then DrawImage schiff_5k_img_sr,x*32,y*32,4 If player(x,y)=2.02 Then DrawImage schiff_4k_img_sr,x*32,y*32,0 If player(x,y)=2.12 Then DrawImage schiff_4k_img_sr,x*32,y*32,1 If player(x,y)=2.22 Then DrawImage schiff_4k_img_sr,x*32,y*32,2 If player(x,y)=2.32 Then DrawImage schiff_4k_img_sr,x*32,y*32,3 If player(x,y)=3.02 Then DrawImage schiff_3k_img_sr,x*32,y*32,0 If player(x,y)=3.12 Then DrawImage schiff_3k_img_sr,x*32,y*32,1 If player(x,y)=3.22 Then DrawImage schiff_3k_img_sr,x*32,y*32,2 If player(x,y)=4.02 Then DrawImage schiff_2k_img_sr,x*32,y*32,0 If player(x,y)=4.12 Then DrawImage schiff_2k_img_sr,x*32,y*32,1 Next Next Bei dieser Abfrage wird kein Bild gezeichnet: Code: [AUSKLAPPEN] If player(x,y)=1.32 Then DrawImage schiff_5k_img_sr,x*32,y*32,3
Bei allen anderen Abfragen wird ein Bild gezeichnet. Das Bild existiert auf jeden Fall. Das Dim-Fald natürlich auch. Es ist auch mit Float formatiert. Eines von den 100 Feldern, die ich abfrage hat auf jeden Fall den Wert "1.32". Ich habe alles mögliche ausprobiert. 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 Mo, Apr 14, 2008 23:34, insgesamt 3-mal bearbeitet
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Float Zahlen sind in Blitz immer mit Vorsicht zu genießen. Ich würde sie bei Abfragen solcher Art am besten ganz weg lassen. Blitz verändert Nachkommastellen gerne mal geringfügig.
Und außerdem rate ich dir dringendst mal select und case anzuschauen. Edit: was genau willst du denn machen? Vielleicht kann ich dir eine alternative Lösung vorschlagen bei der du keine Float Abgragen mit If machen musst. |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code ist für die BCC#16 und Select-Case kostet da ein Paar Kbyte und bei mir sind alle davon sehr wichtig. Ich habe ja jetzt schon Probleme mit der Gröse des Codes.
EDIT: Habe den Rat von Firstdeathmaker befolgt und Ints verwendet und es geht jetzt alles einwandfrei. Ich weiß irgendwie garnicht mehr wie ich auf Floats gekommen bin. MfG Marc-Peter |
||
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. |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Uff, dann ist Optimieren aber nicht so dein Ding, oder? ![]() Also vorweg: Ich würde an deiner Stelle auch keine Floats sondern Integer nehmen und dann statt z.B. "1.12" einfach "112" speichern. Dadurch konnte ich deinen Code schonmal mit Select-Case verkürzen: Code: [AUSKLAPPEN] Select player(x,y)
Case 102,202,302,402:fr=0 Case 112,212,312,412:fr=1 Case 122,222,322:fr=2 Case 132,232:fr=3 Case 142:fr=4 End Select DrawImage schiff_2k_img_sr,x*32,y*32,fr Ich finde schon, dass es wesentlich kürzer ist. Geht natürlich noch besser. Und zwar wenn keine anderen Werte außer die vorgegebenen auftreten, kannst du auch das hier benutzen: Code: [AUSKLAPPEN] fr = (player(x,y) / 10) Mod 10
DrawImage schiff_2k_img_sr,x*32,y*32,fr Das mal kurz, was. ![]() Übrigens ein weiterer Tipp: Benutz kürzere Variablennamen, wenn du Bytes sparen willst. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das mit dem Select-Case Zeugs ist mir so noch garnicht in den Sinn gekommen aber ich werds gleich ausprobieren. Zu der 2-Zeilen-Methode:
Die kann ich nicht anwenden, da es verschiedene Bilder sind und diese widerum eine verschiedene Anzahl von Bildern hat. Oder ist es auch unter diesen Bedingungen möglich die 2-Zeilen-Methode anzuwenden? EDIT: Ich habs jetzt so versucht: Code: [AUSKLAPPEN] Select player(x,y)
Case 1,6,10,13,15,20,24,27 : frame=0 Case 2,7,11,14,16,21,25,28 : frame=1 Case 3,8,12,17,22,26 : frame=2 Case 4,9,18,23 : frame=3 Case 5,19 : frame=4 Case 1,2,3,4,5 : image=schiff_5k Case 6,7,8,9 : image=schiff_4k Case 10,11,12 : image=schiff_3k Case 13,14 : image=schiff_2k Case 15,16,17,18,19 : image=schiff_5k_sr Case 20,21,22,23 : image=schiff_4k_sr Case 24,25,26 : image=schiff_3k_sr Case 27,28 : image=schiff_2k_sr Case 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 : DrawImage image,x*32,y*32,frame End Select Aber jetzt werden gar keine Bilder mehr gemalt. Bin blöd oder einfach nur unwissend? |
||
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. |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du mußt Drawimage auch hinter der Selectschleife schreiben
Code: [AUSKLAPPEN] ....
Case 24,25,26 : image=schiff_3k_sr Case 27,28 : image=schiff_2k_sr End Select DrawImage image,x*32,y*32,frame |
||
[BB2D | BB3D | BB+]
|
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Rallimen
Mit der Möglichkeit habe ich es auch schon versucht, aber da kam eine Fehlermeldung. Ich habe mit Hilfe von D2006 die Lösung: Code: [AUSKLAPPEN] Select player(x,y)
Case 1,6,10,13,15,20,24,27 : frame=0 Case 2,7,11,14,16,21,25,28 : frame=1 Case 3,8,12,17,22,26 : frame=2 Case 4,9,18,23 : frame=3 Case 5,19 : frame=4 End Select Select player(x,y) Case 1,2,3,4,5 : image=schiff_5k_img Case 6,7,8,9 : image=schiff_4k_img Case 10,11,12 : image=schiff_3k_img Case 13,14 : image=schiff_2k_img Case 15,16,17,18,19 : image=schiff_5k_img_sr Case 20,21,22,23 : image=schiff_4k_img_sr Case 24,25,26 : image=schiff_3k_img_sr Case 27,28 : image=schiff_2k_img_sr End Select If player(x,y)<>0 Then DrawImage image,x*32,y*32,frame |
||
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