Denkfehler

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Entenfels

Betreff: Denkfehler

BeitragFr, Mai 29, 2009 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo allerseits!
Ich weiß einfach nicht, was ich falsch mache. Die Sache ist folgende: Ich habe den Spieler sowie zwei Häuser. Mit einem Haus stellt der Computer alles korrekt dar (Player wird richtig vor/hinter das Haus gemalt). Beim zweiten Haus funktioniert es jedoch nur noch mit dem neuen Haus, nicht mehr mit dem zuvor erstellten.
Code: [AUSKLAPPEN]
Graphics 1024,768,0,1
house=LoadImage("Pictures\building0.bmp")
player=LoadImage("Pictures\Player.bmp")
Global Ende
Global PlayerX = 50
Global PlayerY = 50;Y-Koordinate DER UNTERKANTE des Bildes
Global PlayerImageY
Type building
   Field X
   Field Y ;Y-Koordinate DER UNTERKANTE!
   Field CollisionX ;Breite der Kollisionsfläche
   Field CollisionY ;Tiefe der Kollisionsfläche
   Field ImageY ;Hoehe des Bildes
End Type
house.building = New building
house.building\X = 100
house.building\Y = 200
house.building = New building
house.building\X = 500
house.building\Y = 300
For house.building = Each building
   house.building\CollisionX = 50
   house.building\CollisionY = 50
   house.building\ImageY = 100
Next
swapped=True ;Gebaeude sortieren
While swapped
   swapped=False
   VNew=True
   For house.building=Each building
      If XBefore>house.building\X And VNew=0 Then
         Insert house.building Before Before house.building
         VNew=0
         swapped=True
      End If
      XBefore=house.building\X
   Next
Wend
Repeat
   If KeyDown(1) Then Ende=1
   ;Steuerung mit Pfeiltasten
   PlayerDrawn=0
   For house.building = Each building
      If PlayerY<house.building\Y Then
         DrawImage Player,PlayerX,PlayerY-PlayerImageY
         DrawImage house,house.building\X,house.building\Y-house.building\Imagey
         PlayerDrawn=1
      Else
         DrawImage house,house.building\X,house.building\Y-house.building\Imagey
      End If
      If PlayerDrawn=0 Then DrawImage Player,PlayerX,PlayerY-PlayerImageY
   Next
   Flip
Until Ende
End

Weiß jemand, was ich falsch mache?
Danke schon im Voraus
Entenfels
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer

Chester

BeitragFr, Mai 29, 2009 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das dürfte eigentlich überhaupt nicht funktionieren, weil du erst die Variable house einmal als Image benutzt und danach als Type. Müsste theoretisch einen "Variable mismatch" Fehler geben.

Der Fehler selbst liegt in deiner For Schleife.
Du gehst jedes Haus durch und zeichnest für jedes Haus auch das Playerbild. Die Bilder überlagern sich dann natürlich, es wird z.B. erst das Playerbild gezeichnet, dann das Haus und dann das Playerbild noch einmal darüber. Somit kann immer nur das zuletzt erstellte Haus richtig dargestellt werden, da kein Durchgang mehr kommt, indem ein neues Playerbild gezeichnet wird.

Entenfels

BeitragDo, Jun 04, 2009 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx.
Das mit "house" ist mir bei der Vereinfachung des Codes passiert Embarassed
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group