Type Einträge löschen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Joel

Betreff: Type Einträge löschen

BeitragDi, März 01, 2011 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Manche von euch kennen vielleicht meinen Schiessstand den ich vor ~ einem Jahr ins Showcase stellte.
Nun habe ich mit BlitzMax angefangen und hatte die Idee eine Neuauflage in BM zu schreiben.

Doch ich habe wiedermal Probleme mit Types.
Ich kann die Scheiben nur in der reinfolge "wegklicken" in der sie generiert wurden.
Was muss ich beim Löschen anders machen? Oder Liegt das Problem bei der List?

Naja... hier mal der Code:
Code: [AUSKLAPPEN]
SuperStrict

Graphics 800, 600, 32, 32
Global Timer:TTimer = CreateTimer(60)

Type Zielscheibe
   Global List:TList = CreateList()
   
   Field x:Int
   Field y:Int
   Field radius:Int
   Field speed:Int
   
   Method New()
      List.AddLast(Self)
      radius = 64
      speed = Rand(2, 5)
      x = -radius
      Select Rand(1, 3)
         Case 1
         y = 150
         Case 2
         y = 300
         Case 3
         y = 450
      End Select
   End Method

   Function UpdateZielscheibe()
      For Local Z:Zielscheibe = EachIn Zielscheibe.List
         
         Z.x = Z.x + Z.speed
         DrawOval z.x-z.radius,z.y-z.radius,z.radius*2,z.radius*2
         If MouseHit(MOUSE_LEFT)
            If Sqr((MouseX() - Z.x) ^ 2 + (MouseY() - Z.y) ^ 2) < Z.radius
            Z.List.Remove(Z)
            End If
         End If
      Next
   EndFunction

EndType



Global Punkte:Int
While Not KeyHit(KEY_ESCAPE)
   If Rand(0, 127) = 0
      New Zielscheibe
   End If
   
   Zielscheibe.UpdateZielscheibe()
   WaitTimer(Timer)
   DrawText(Punkte, 0, 0)
   Flip 0
   Cls
Wend
End


Ich danke euch für eure Hilfe schon im Voraus.

Midimaster

BeitragDi, März 01, 2011 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
könnte es nicht sein, dass der MouseHit nur einmal zur Verfügung steht?

also besser vorher den Zustand retten?

BlitzMax: [AUSKLAPPEN]
   Function UpdateZielscheibe()
Local MouseLeft%=MouseHit(MOUSE_LEFT)
For Local Z:Zielscheibe = EachIn Zielscheibe.List

Z.x = Z.x + Z.speed
DrawOval z.x-z.radius,z.y-z.radius,z.radius*2,z.radius*2
If MouseLeft>0 Then
If Sqr((MouseX() - Z.x) ^ 2 + (MouseY() - Z.y) ^ 2) < Z.radius
Z.List.Remove(Z)
End If
End If
Next
EndFunction

Joel

BeitragDi, März 01, 2011 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne... klapt auch net...

Joel

BeitragDi, März 01, 2011 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh tschuldigung.. ging doch Embarassed

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group