Selektieren eines Bildes, Fehler bei dem 2 und folgenden!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

SmellGreen

Betreff: Selektieren eines Bildes, Fehler bei dem 2 und folgenden!

BeitragDo, Dez 20, 2012 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich probiere momentan ein bisschen mit Blitzbasic rum. Ich möchte gerade mit der Taste "K" ein neues Bild "spawnen" lassen und es dann per linksklick auswählen und mit einem rechtsklick bewegen lassen.

Dies Funktioniert auch, aber immer nur beim ersten Bild.

Liegt das vielleicht daran, dass wenn man auf das 2 Bild klickt, die Forschleife aber grade bei dem 1 Bild ist, dass ein False dabei herauskommt?

Hier mal der Code:
Code: [AUSKLAPPEN]
Graphics 1280,720

timer = CreateTimer(60)

run = True

mx = 0
my = 0

tank = LoadImage("tank.png")
tank_click = LoadImage("tank_click.png")

Type tank
   Field x
   Field y
   Field state
   Field walkx
   Field walky
End Type

While run = True
   Cls
   mx = MouseX()
   my = MouseY()
   If KeyHit(1) Then run = False
   
   If KeyHit(37)
      t.tank = New Tank
      t\x = 100
      t\y = 100
   EndIf
   
   For t.tank = Each Tank
   
   Text 0, 100, t\x + " | " + t\y
   
   Select t\state
      Case 0
      DrawImage(tank,t\x,t\y)
      Case 1
      DrawImage(tank_click,t\x,t\y)
   End Select
   
   If MouseHit(1)
      If RectsOverlap(t\x,t\y,50,50,mx,my,1,1)
         Select t\state
            Case 0
            t\state = 1
            Case 1
            t\state = 0
         End Select
      EndIf
   EndIf
   
   If MouseHit(2)
      If t\state = 1
      t\walkx = MouseX()
      t\walky = MouseY()
      EndIf
   EndIf
      
      If t\x < t\walkx Then t\x = t\x + 1
      If t\x > t\walkx Then t\x = t\x - 1
      If t\y < t\walky Then t\y = t\y + 1
      If t\y > t\walky Then t\y = t\y - 1

   Next

   Flip
   WaitTimer(timer)
Wend
End

Triology

BeitragDo, Dez 20, 2012 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

Ich würde deine objekte in ein Array laden und diese durch eine Id identifizieren, wodurch du auch einfacher ein Objekt selektieren lassen kannst.

MfG,
Triology

BladeRunner

Moderator

BeitragDo, Dez 20, 2012 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Vergiss das Array, Types sind wesentlich dynamischer, da bist Du schon auf dem rechten Weg. Der Fehler liegt darin dass Du Maushit in der Schleife abfragst, und das liefert in der Tat nur beim ersten Durchgang true, danalch wird es auf null gesetzt. Frag Mousehit vor der Schleife ab und lass Die Schleife nur anlaufen wenn es true war. Dann checkst Du in der Schleife die Koordinaten und vergleichst sie mit den Mauskoordinaten ob das zum aktuellen Tank passt und bewegst dementsprechend.
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
 

SmellGreen

BeitragDo, Dez 20, 2012 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,
Jetzt geht es, ich hatte mir das mit der For Schleife schon gedacht, aber manchmal kommt man einfach nicht auf die einfachsten Ideen. Danke BladeRunner! Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group