1.) loadsprite() und transparentspritecolor() raus aus der schleife, also davor.
2.) das aufhängnen kommt von der fehlenden message bearbeitung -> windowevent().
3.) in der kollisionsprüfunng muß auch noch ein mousebutton() rein (ist jedenfalls sinnvoller)
jetzt werden aber alle gegner, die beim click mit dem kreuz überlappen, auif einmal gelöscht.
Code: Alles auswählen
If InitKeyboard() = 0
MessageRequester("Fehler!", "Die Tastatur konnte nicht initalisiert werden. DirectX7 oder höher notwendig!")
EndIf
If InitSprite() = 0
MessageRequester("Fehler!", "Grafiken konnte nicht initalisiert werden. DirectX7 oder höher notwendig!")
EndIf
If InitMouse() = 0
MessageRequester("Fehler!", "Maus konnte nicht initalisiert werden. DirectX7 oder höher notwendig!")
EndIf
Structure EnemyA
x.l
y.l
speedx.l
EndStructure
Global NewList EnemyA.EnemyA()
Procedure AddEnemyA(x, y, speedx)
AddElement(EnemyA())
EnemyA()\x = x
EnemyA()\y = y
EnemyA()\speedx = speedx
EndProcedure
Procedure DebugEnemyA()
StartDrawing(WindowOutput(0))
DrawText(10, 10, "Current EnemyA : "+Str(CountList(EnemyA())), RGB(255, 255, 255), RGB(0, 0, 0))
DrawText(10, 25, Str(CollisionState), RGB(255, 255, 255), RGB(0, 0, 0))
StopDrawing()
EndProcedure
OpenWindow(0, 0, 0, 500, 300, "Storm the Base", #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 500, 300, 0, 0, 0)
Timer.l = ElapsedMilliseconds()
Delay.l
CollisionState = 0
LoadSprite(0, "c:\test\test32.bmp")
LoadSprite(1, "c:\test\test32.bmp")
TransparentSpriteColor(0, RGB(255, 0, 255))
TransparentSpriteColor(1, RGB(255, 0, 255))
Repeat
WindowEvent()
ExamineKeyboard()
ExamineMouse()
ClearScreen(RGB(0, 0, 0))
DisplayTransparentSprite(1, MouseX(), MouseY())
ForEach EnemyA()
DisplayTransparentSprite(0, EnemyA()\x, EnemyA()\y)
EnemyA()\x + EnemyA()\speedx
Next
If KeyboardPushed(#PB_Key_Up) And Delay = 0
AddEnemyA(15, Random(200), 1)
Delay = 5
EndIf
ForEach EnemyA()
If EnemyA()\x>500 : DeleteElement(EnemyA())
ElseIf MouseButton(1) And SpriteCollision(1, MouseX(), MouseY(), 0, EnemyA()\x, EnemyA()\y) : DeleteElement(EnemyA())
EndIf
Next
If Delay>0 : Delay - 1 : EndIf
;DebugEnemyA()
Delay(1)
FlipBuffers(1)
Until KeyboardPushed(#PB_Key_Escape)