Verfasst: 26.05.2008 14:11
Thnx, das klappt jetzt! Aber wegen meinen bekloppten GeschichtsLehrer Herr Nägerschewski (eigentlich Naguschewski) kam ich noch nicht dazu das waponezdingsda anzugucken, mache ich jetz 

Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"Vollbild")
LoadSprite(0,"F:\Kai´s Spiel\Pics\Weltraum.bmp",0)
LoadSprite(1,"F:\Kai´s Spiel\Pics\Shuttle.bmp",0)
LoadSprite(2,"F:\Kai´s Spiel\Pics\Schuss.bmp",0)
HBX = 0
HBY = 0
ShuttleX = 350
ShuttleY = 350
Structure Schuss
SchussX.w
SchussY.w
EndStructure
Global NewList Schuss.Schuss()
Procedure AddSchuss(SchussX,SchussY)
AddElement(Schuss())
Schuss()\SchussX = SchussX
Schuss()\SchussY = SchussY
EndProcedure
Repeat
ClearScreen(0+256*0+256*256*0)
Pause + 1
SchussY - 10
If ShuttleX > 700
ShuttleX = 700
EndIf
If ShuttleX < 0
ShuttleX = 0
EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
ShuttleX - 5
EndIf
If KeyboardPushed(#PB_Key_Right)
ShuttleX + 5
EndIf
If KeyboardPushed(#PB_Key_Space) And Pause > 10
Pause = 0
AddElement(Schuss())
SchussX = ShuttleX + 49
SchussY = ShuttleY - 5
EndIf
DisplayTransparentSprite(0,HBX,HBY)
DisplayTransparentSprite(1,ShuttleX,ShuttleY)
DisplayTransparentSprite(2,SchussX,SchussY)
FlipBuffers()
Until KeyboardPushed(1)
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"Vollbild")
HBX = 0
HBY = 0
ShuttleX = 350
ShuttleY = 350
Structure Schuss
SchussX.f ;Sich bewegende Objekte lieber mit Floats oder Doubles machn
SchussY.f
EndStructure
Global NewList Schuss.Schuss()
Repeat
ClearScreen(0+256*0+256*256*0)
Pause + 1
SchussY - 10
If ShuttleX > 700
ShuttleX = 700
EndIf
If ShuttleX < 0
ShuttleX = 0
EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
ShuttleX - 5
EndIf
If KeyboardPushed(#PB_Key_Right)
ShuttleX + 5
EndIf
If KeyboardPushed(#PB_Key_Space) And Pause > 10
Pause = 0
AddElement(Schuss())
Schuss()\SchussX = ShuttleX + 8 ; Einem Listen element übergibt man Werte so
Schuss()\SchussY = ShuttleY - 5
EndIf
lcount.l = CountList(Schuss()) ;Listenelemente zählen damit man sie später in der Schleife durchlaufen kann
StartDrawing(ScreenOutput()) ; Damit ich es auch ausführen kann
;Das ist dein Schiff
Box(ShuttleX,ShuttleY,32,32,RGB(0,255,0))
If lcount > 0 ; Wenn es keine Schüsse gibt braucht man auch keine Darstellen
For n = 0 To lcount - 1 ; "lcount - 1 " weil 0 auch schon das erste Element ist
; Das ist dein Schuss
SelectElement(Schuss(), n)
Schuss()\SchussY - 1.5 ; Damit sich der Schuss bewegt
Box(Schuss()\SchussX,Schuss()\SchussY,16,16,RGB(255,0,0))
Next
;Hier werden die Schüsse ab einer bestimmten Grenze gelöscht bei mir ist es wenn Schuss()\SchussY < 32 ist
FirstElement(Schuss()) ;Erstes Element auswählen
For n = 0 To lcount - 1 ;Wie oben in der Schleife
If Schuss()\SchussY < 32 ; Wenn SchussY < 32 ist dann wir gelöscht
DeleteElement(Schuss(),1) ; Schuss löschen und dann auf das Element davor springen damit alles nacher gut funzt
EndIf
NextElement(Schuss()) ;Nächstes Element
Next
EndIf
StopDrawing()
FlipBuffers()
Until KeyboardPushed(1)
Code: Alles auswählen
For n=0 To 10
Code: Alles auswählen
Next