8bit vs. 32bit
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
lieber Machete
es gibt ungefähr so viele mögliche fehlerquellen, wie deine exe bytes hat.
es gibt hunderte möglicher ursachen, warum so etwas passieren kann.
wenn du deine exe irgendwo ins web stellen würdest, und man beobachten könnte, wie der fehler auftritt, dann könnte man zumindest ne vermutung äußern, in welcher ecke des codes du suchen musst.
wenn einer von uns nachvollziehen soll, woran es liegt, dann muss man doch in den code gucken, was den fehler verursachen könnte.
das ist doch ganz einfach klar und logisch.
also solange du nicht dich wenigstens genauer äußerst, in welchem ZUSAMMENHANG der fehler auftritt, kann dir wirklich niemand weiterhelfen.
> habe gehofft das das schon mal jemandem passiert ist und er es geschafft hat
ja natürlich, das ist mir schon ein paar mal passiert. aber geschafft habe ich es nur, indem ich meinen code durchgesehen habe, und die fehlerquelle eliminiert habe.
es gibt ungefähr so viele mögliche fehlerquellen, wie deine exe bytes hat.
es gibt hunderte möglicher ursachen, warum so etwas passieren kann.
wenn du deine exe irgendwo ins web stellen würdest, und man beobachten könnte, wie der fehler auftritt, dann könnte man zumindest ne vermutung äußern, in welcher ecke des codes du suchen musst.
wenn einer von uns nachvollziehen soll, woran es liegt, dann muss man doch in den code gucken, was den fehler verursachen könnte.
das ist doch ganz einfach klar und logisch.
also solange du nicht dich wenigstens genauer äußerst, in welchem ZUSAMMENHANG der fehler auftritt, kann dir wirklich niemand weiterhelfen.
> habe gehofft das das schon mal jemandem passiert ist und er es geschafft hat
ja natürlich, das ist mir schon ein paar mal passiert. aber geschafft habe ich es nur, indem ich meinen code durchgesehen habe, und die fehlerquelle eliminiert habe.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- Machete @PB
- Beiträge: 81
- Registriert: 12.09.2006 03:12
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Ich würde jetzt gerne mal das Spiel sehen
jetzt wo es funzt kannst Du es ja präsentieren



ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
- Machete @PB
- Beiträge: 81
- Registriert: 12.09.2006 03:12
Ja ok, aber ich hab da einige Probleme mit den Bossen, vll findet ihr ja den Fehler^^. Ich muss noch ein bisschen an den Gegnern Arbeiten, aber sonst...
If InitSprite() = 0 Or InitPalette(10) = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf
Global Level.w
Global Leben.w
Global Punkte.w
Level = 1
Leben = 3
Structure Bullet
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure
NewList Bullet.Bullet()
Structure Bullet2
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure
NewList Bullet2.Bullet2()
Structure Explosion
x.w
y.w
State.w
Delay.w
EndStructure
NewList Explosion.Explosion()
Structure Alien
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure
NewList Aliens.Alien()
Structure Boss
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure
NewList Boss.Boss()
Procedure AddBullet(Sprite, x, y, SpeedX, SpeedY)
AddElement(Bullet())
Bullet()\x = x
Bullet()\y = y
Bullet()\Width = SpriteWidth(Sprite)
Bullet()\Height = SpriteHeight(Sprite)
Bullet()\Image = Sprite
Bullet()\SpeedX = SpeedX
Bullet()\SpeedY = SpeedY
EndProcedure
MessageRequester("Sers!", "Das ist mein erstes ´Spiel´!"+Chr(10)+"Benutz die Pfeiltasten zum Bewegen und die Leertaste um alle Gegner zu zerstören!!"+Chr(10)+Chr(10)+"Viel Spaß
!", 0)
Path$ = "Data\"
If OpenScreen(1024, 768, 8, "Panzers2d;), BETA")
PlayerSpeedX = 20
PlayerSpeedY = 20
BulletSpeed = 30
LoadSprite(3, Path$+"Player_1.bmp", 0)
LoadSprite(0, Path$+"Player_2.bmp", 0)
LoadSprite(2, Path$+"Player_3.bmp", 0)
LoadSprite( 4, Path$+"Bullet_1.bmp", 0)
LoadSprite(9, Path$+"Boss.bmp", 0)
For k=0 To 5
LoadSprite(k+10, Path$+"Ennemy_3_"+Str(k+1)+".bmp", 0)
Next
For k=0 To 7
LoadSprite(k+20, Path$+"Explosion_"+Str(k+1)+".bmp", 0)
Next
LoadSprite(20, Path$+"Back_3.bmp", 0)
LoadPalette(1, Path$+"Back_3.bmp")
DisplayPalette(1)
SetPriorityClass_(GetCurrentProcess_(), 13);
PlayerWidth = SpriteWidth(3)
PlayerHeight = SpriteHeight(3)
PlayerX = 300
PlayerY = 400
Repeat
FlipBuffers()
If IsScreenActive()
db = 1-db
For BackX=0 To 1024 Step 32
For BackY=-32 To 768 Step 32
DisplaySprite(20, BackX, BackY+ScrollY)
Next
Next
Gosub CheckCollisions
Gosub MovePlayers
Gosub DisplayBullets
Gosub NewAlienWave
Gosub DisplayAliens
Gosub NewBossWave
Gosub DisplayBoss
Gosub DisplayExplosions
If BulletDelay > 0
BulletDelay-1
EndIf
If ScrollDelay = 0
ScrollY+1
ScrollDelay = 0
Else
ScrollDelay-1
EndIf
If ScrollY>31
ScrollY = 0
EndIf
Else
StopSound(-1)
Delay(10)
EndIf
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Waponez II", "Can't open a 640*480 8 bit screen !", 0)
EndIf
End
MovePlayers:
Fire = 0
PlayerImage = 3
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
PlayerX-PlayerSpeedX
PlayerImage = 2
EndIf
If KeyboardPushed(#PB_Key_Right)
PlayerX+PlayerSpeedX
PlayerImage = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
PlayerY-PlayerSpeedY
EndIf
If KeyboardPushed(#PB_Key_Down)
PlayerY+PlayerSpeedY
EndIf
If PlayerX < 0 : PlayerX = 0 : EndIf
If PlayerY < 0 : PlayerY = 0 : EndIf
If PlayerX > 1024-PlayerWidth : PlayerX = 1024-PlayerWidth : EndIf
If PlayerY > 768-PlayerHeight : PlayerY = 768-PlayerHeight : EndIf
If Dead = 1
Punkte = Punkte - 2
AddElement(Explosion())
Explosion()\x = PlayerX
Explosion()\y = PlayerY
Dead = 0
Else
If DeadDelay>0
DeadDelay-1
If db=1
If DeadDelay < 200
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
Else
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
If KeyboardPushed(#PB_Key_Space) Or KeyboardPushed(#pb_key_return)
If BulletDelay = 0
If DeadDelay < 100
BulletDelay = 3
AddBullet(4, PlayerX+5 , PlayerY-10, 0 , -BulletSpeed) ; Front bullet (Double bullet sprite)
EndIf
EndIf
EndIf
Return
Repeat
DisplayBullets:
ResetList(Bullet())
While NextElement(Bullet())
If Bullet()\y < 0
DeleteElement(Bullet())
Else
If Bullet()\x < 0
DeleteElement(Bullet())
Else
If Bullet()\x > 1024-Bullet()\Width
DeleteElement(Bullet())
Else
If Bullet()\y > 768
DeleteElement(Bullet())
Else
DisplayTransparentSprite(Bullet()\Image, Bullet()\x, Bullet()\y) ; Display the bullet..
Bullet()\y + Bullet()\SpeedY
Bullet()\x + Bullet()\SpeedX
EndIf
EndIf
EndIf
EndIf
Wend
Return
NewAlienWave:
If AlienDelay = 0
AddElement(Aliens())
If Boss = 1
Aliens()\x = 100
Aliens()\y = -16
Aliens()\Width = SpriteWidth(50)
Aliens()\Height = SpriteHeight(50)
Aliens()\Speed = 3
Aliens()\StartImage = 50
Aliens()\EndImage = 50
Aliens()\ImageDelay = 1
Aliens()\NextImageDelay = 1
Aliens()\ActualImage = 50
Aliens()\Armor = 20
AlienDelay = 1
Else
Aliens()\x = Random(768)
Aliens()\y = -32
Aliens()\Width = SpriteWidth(10)
Aliens()\Height = SpriteHeight(10)
Aliens()\Speed = 3
Aliens()\StartImage = 10
Aliens()\EndImage = 15
Aliens()\ImageDelay = 4
Aliens()\NextImageDelay = Aliens()\ImageDelay
Aliens()\ActualImage = 10
Aliens()\Armor = 5
AlienDelay = Random(30)
EndIf
Else
AlienDelay-1
EndIf
NewBossWave:
If Level = 10 Or Level = 20
AddElement(Boss())
If Boss = 1
Boss()\x = 100
Boss()\y = -16
Boss()\Width = SpriteWidth(50)
Boss()\Height = SpriteHeight(50)
Boss()\Speed = 7
Boss()\StartImage = 50
Boss()\EndImage = 50
Boss()\ImageDelay = 1
Boss()\NextImageDelay = 1
Boss()\ActualImage = 50
Boss()\Armor = 10
BossDelay = 1
BossDelay = 1
Boss()\x = Random(768)
Boss()\y = -32
Boss()\Width = SpriteWidth(10)
Boss()\Height = SpriteHeight(10)
Boss()\Speed = 7
Boss()\StartImage = 10
Boss()\EndImage = 15
Boss()\ImageDelay = 4
Boss()\NextImageDelay = Boss()\ImageDelay
Boss()\ActualImage = 10
Boss()\Armor = 10
BossDelay = Random(Level = Level + 10)
EndIf
Else
BossDelay-1
EndIf
Return
DisplayAliens:
ResetList(Aliens())
While NextElement(Aliens())
DisplayTransparentSprite(Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\y + Aliens()\Speed
If Aliens()\NextImageDelay = 0
Aliens()\ActualImage+1
If Aliens()\ActualImage > Aliens()\EndImage
Aliens()\ActualImage = Aliens()\StartImage
EndIf
Aliens()\NextImageDelay = Aliens()\ImageDelay
Else
Aliens()\NextImageDelay-1
EndIf
If Aliens()\Armor <= 0
Punkte = Punkte + 1
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
DeleteElement(Aliens())
Else
If Aliens()\y > 768
DeleteElement(Aliens())
Leben = Leben - 1
EndIf
EndIf
Wend
Return
CheckCollisions:
ResetList(Aliens())
While NextElement(Aliens())
ResetList(Bullet())
While NextElement(Bullet())
If SpriteCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\Armor - 1
DeleteElement(Bullet())
EndIf
Wend
If DeadDelay = 0
If SpriteCollision(PlayerImage, PlayerX, PlayerY, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Dead = 1
DeadDelay = 200
Leben = Leben - 1
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
DeleteElement(Aliens())
EndIf
EndIf
Wend
Return
DisplayBoss:
ResetList(Boss())
While NextElement(Boss())
DisplayTransparentSprite(Boss()\ActualImage, Boss()\x, Boss()\y)
Boss()\y + Boss()\Speed
If Boss()\NextImageDelay = 0
Boss()\ActualImage+1
If Boss()\ActualImage > Boss()\EndImage
Boss()\ActualImage = Boss()\StartImage
EndIf
Boss()\NextImageDelay = Boss()\ImageDelay
Else
Boss()\NextImageDelay-1
EndIf
If Boss()\Armor <= 0
Leben = Leben + 1
Punkte = Punkte + 5
AddElement(Explosion())
Explosion()\x = Boss()\x
Explosion()\y = Boss()\y
DeleteElement(Boss())
Else
If Boss()\y > 768
DeleteElement(Boss())
Leben = Leben - 3
EndIf
EndIf
Wend
Return
ResetList(Boss())
While NextElement(Boss())
ResetList(Bullet())
While NextElement(Bullet())
If SpriteCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Boss()\ActualImage, Boss()\x, Boss()\y)
Boss()\Armor - 1
DeleteElement(Bullet())
EndIf
Wend
If DeadDelay = 0
If SpriteCollision(PlayerImage, PlayerX, PlayerY, Boss()\ActualImage, Boss()\x, Boss()\y)
Dead = 1
DeadDelay = 200
Leben = Leben - 1
AddElement(Explosion())
Explosion()\x = Boss()\x
Explosion()\y = Boss()\y
DeleteElement(Boss())
EndIf
EndIf
Wend
Return
DisplayExplosions:
ResetList(Explosion())
While NextElement(Explosion())
DisplayTransparentSprite(Explosion()\State+20, Explosion()\x, Explosion()\y)
If Explosion()\Delay = 0
If Explosion()\State = 0
EndIf
If Explosion()\State < 7
Explosion()\State+1
Explosion()\Delay = 1
Else
DeleteElement(Explosion())
EndIf
Else
Explosion()\Delay-1
EndIf
Wend
StartDrawing(ScreenOutput())
DrawingMode(1)
Locate(512,1)
FrontColor(0,0,255)
DrawText("Punkte:" + Str(Punkte))
Locate(512,10)
FrontColor(255,0,0)
DrawText("Leben:" + Str(Leben))
Locate(512,20)
FrontColor(0,255,0)
DrawText("Level:" + Str(Level))
StopDrawing()
If (Punkte / 7) + 1 > Level
Level = Level + 1
EndIf
Until KeyboardPushed(1) Or Leben < 1 Or Punkte < 0
Delay(1000)
CloseScreen()
MessageRequester("Game Over", "Du hast " + Str(Punkte) + " Punkte erreicht",0)
If InitSprite() = 0 Or InitPalette(10) = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf
Global Level.w
Global Leben.w
Global Punkte.w
Level = 1
Leben = 3
Structure Bullet
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure
NewList Bullet.Bullet()
Structure Bullet2
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure
NewList Bullet2.Bullet2()
Structure Explosion
x.w
y.w
State.w
Delay.w
EndStructure
NewList Explosion.Explosion()
Structure Alien
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure
NewList Aliens.Alien()
Structure Boss
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure
NewList Boss.Boss()
Procedure AddBullet(Sprite, x, y, SpeedX, SpeedY)
AddElement(Bullet())
Bullet()\x = x
Bullet()\y = y
Bullet()\Width = SpriteWidth(Sprite)
Bullet()\Height = SpriteHeight(Sprite)
Bullet()\Image = Sprite
Bullet()\SpeedX = SpeedX
Bullet()\SpeedY = SpeedY
EndProcedure
MessageRequester("Sers!", "Das ist mein erstes ´Spiel´!"+Chr(10)+"Benutz die Pfeiltasten zum Bewegen und die Leertaste um alle Gegner zu zerstören!!"+Chr(10)+Chr(10)+"Viel Spaß

Path$ = "Data\"
If OpenScreen(1024, 768, 8, "Panzers2d;), BETA")
PlayerSpeedX = 20
PlayerSpeedY = 20
BulletSpeed = 30
LoadSprite(3, Path$+"Player_1.bmp", 0)
LoadSprite(0, Path$+"Player_2.bmp", 0)
LoadSprite(2, Path$+"Player_3.bmp", 0)
LoadSprite( 4, Path$+"Bullet_1.bmp", 0)
LoadSprite(9, Path$+"Boss.bmp", 0)
For k=0 To 5
LoadSprite(k+10, Path$+"Ennemy_3_"+Str(k+1)+".bmp", 0)
Next
For k=0 To 7
LoadSprite(k+20, Path$+"Explosion_"+Str(k+1)+".bmp", 0)
Next
LoadSprite(20, Path$+"Back_3.bmp", 0)
LoadPalette(1, Path$+"Back_3.bmp")
DisplayPalette(1)
SetPriorityClass_(GetCurrentProcess_(), 13);
PlayerWidth = SpriteWidth(3)
PlayerHeight = SpriteHeight(3)
PlayerX = 300
PlayerY = 400
Repeat
FlipBuffers()
If IsScreenActive()
db = 1-db
For BackX=0 To 1024 Step 32
For BackY=-32 To 768 Step 32
DisplaySprite(20, BackX, BackY+ScrollY)
Next
Next
Gosub CheckCollisions
Gosub MovePlayers
Gosub DisplayBullets
Gosub NewAlienWave
Gosub DisplayAliens
Gosub NewBossWave
Gosub DisplayBoss
Gosub DisplayExplosions
If BulletDelay > 0
BulletDelay-1
EndIf
If ScrollDelay = 0
ScrollY+1
ScrollDelay = 0
Else
ScrollDelay-1
EndIf
If ScrollY>31
ScrollY = 0
EndIf
Else
StopSound(-1)
Delay(10)
EndIf
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Waponez II", "Can't open a 640*480 8 bit screen !", 0)
EndIf
End
MovePlayers:
Fire = 0
PlayerImage = 3
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
PlayerX-PlayerSpeedX
PlayerImage = 2
EndIf
If KeyboardPushed(#PB_Key_Right)
PlayerX+PlayerSpeedX
PlayerImage = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
PlayerY-PlayerSpeedY
EndIf
If KeyboardPushed(#PB_Key_Down)
PlayerY+PlayerSpeedY
EndIf
If PlayerX < 0 : PlayerX = 0 : EndIf
If PlayerY < 0 : PlayerY = 0 : EndIf
If PlayerX > 1024-PlayerWidth : PlayerX = 1024-PlayerWidth : EndIf
If PlayerY > 768-PlayerHeight : PlayerY = 768-PlayerHeight : EndIf
If Dead = 1
Punkte = Punkte - 2
AddElement(Explosion())
Explosion()\x = PlayerX
Explosion()\y = PlayerY
Dead = 0
Else
If DeadDelay>0
DeadDelay-1
If db=1
If DeadDelay < 200
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
Else
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
If KeyboardPushed(#PB_Key_Space) Or KeyboardPushed(#pb_key_return)
If BulletDelay = 0
If DeadDelay < 100
BulletDelay = 3
AddBullet(4, PlayerX+5 , PlayerY-10, 0 , -BulletSpeed) ; Front bullet (Double bullet sprite)
EndIf
EndIf
EndIf
Return
Repeat
DisplayBullets:
ResetList(Bullet())
While NextElement(Bullet())
If Bullet()\y < 0
DeleteElement(Bullet())
Else
If Bullet()\x < 0
DeleteElement(Bullet())
Else
If Bullet()\x > 1024-Bullet()\Width
DeleteElement(Bullet())
Else
If Bullet()\y > 768
DeleteElement(Bullet())
Else
DisplayTransparentSprite(Bullet()\Image, Bullet()\x, Bullet()\y) ; Display the bullet..
Bullet()\y + Bullet()\SpeedY
Bullet()\x + Bullet()\SpeedX
EndIf
EndIf
EndIf
EndIf
Wend
Return
NewAlienWave:
If AlienDelay = 0
AddElement(Aliens())
If Boss = 1
Aliens()\x = 100
Aliens()\y = -16
Aliens()\Width = SpriteWidth(50)
Aliens()\Height = SpriteHeight(50)
Aliens()\Speed = 3
Aliens()\StartImage = 50
Aliens()\EndImage = 50
Aliens()\ImageDelay = 1
Aliens()\NextImageDelay = 1
Aliens()\ActualImage = 50
Aliens()\Armor = 20
AlienDelay = 1
Else
Aliens()\x = Random(768)
Aliens()\y = -32
Aliens()\Width = SpriteWidth(10)
Aliens()\Height = SpriteHeight(10)
Aliens()\Speed = 3
Aliens()\StartImage = 10
Aliens()\EndImage = 15
Aliens()\ImageDelay = 4
Aliens()\NextImageDelay = Aliens()\ImageDelay
Aliens()\ActualImage = 10
Aliens()\Armor = 5
AlienDelay = Random(30)
EndIf
Else
AlienDelay-1
EndIf
NewBossWave:
If Level = 10 Or Level = 20
AddElement(Boss())
If Boss = 1
Boss()\x = 100
Boss()\y = -16
Boss()\Width = SpriteWidth(50)
Boss()\Height = SpriteHeight(50)
Boss()\Speed = 7
Boss()\StartImage = 50
Boss()\EndImage = 50
Boss()\ImageDelay = 1
Boss()\NextImageDelay = 1
Boss()\ActualImage = 50
Boss()\Armor = 10
BossDelay = 1
BossDelay = 1
Boss()\x = Random(768)
Boss()\y = -32
Boss()\Width = SpriteWidth(10)
Boss()\Height = SpriteHeight(10)
Boss()\Speed = 7
Boss()\StartImage = 10
Boss()\EndImage = 15
Boss()\ImageDelay = 4
Boss()\NextImageDelay = Boss()\ImageDelay
Boss()\ActualImage = 10
Boss()\Armor = 10
BossDelay = Random(Level = Level + 10)
EndIf
Else
BossDelay-1
EndIf
Return
DisplayAliens:
ResetList(Aliens())
While NextElement(Aliens())
DisplayTransparentSprite(Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\y + Aliens()\Speed
If Aliens()\NextImageDelay = 0
Aliens()\ActualImage+1
If Aliens()\ActualImage > Aliens()\EndImage
Aliens()\ActualImage = Aliens()\StartImage
EndIf
Aliens()\NextImageDelay = Aliens()\ImageDelay
Else
Aliens()\NextImageDelay-1
EndIf
If Aliens()\Armor <= 0
Punkte = Punkte + 1
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
DeleteElement(Aliens())
Else
If Aliens()\y > 768
DeleteElement(Aliens())
Leben = Leben - 1
EndIf
EndIf
Wend
Return
CheckCollisions:
ResetList(Aliens())
While NextElement(Aliens())
ResetList(Bullet())
While NextElement(Bullet())
If SpriteCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\Armor - 1
DeleteElement(Bullet())
EndIf
Wend
If DeadDelay = 0
If SpriteCollision(PlayerImage, PlayerX, PlayerY, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Dead = 1
DeadDelay = 200
Leben = Leben - 1
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
DeleteElement(Aliens())
EndIf
EndIf
Wend
Return
DisplayBoss:
ResetList(Boss())
While NextElement(Boss())
DisplayTransparentSprite(Boss()\ActualImage, Boss()\x, Boss()\y)
Boss()\y + Boss()\Speed
If Boss()\NextImageDelay = 0
Boss()\ActualImage+1
If Boss()\ActualImage > Boss()\EndImage
Boss()\ActualImage = Boss()\StartImage
EndIf
Boss()\NextImageDelay = Boss()\ImageDelay
Else
Boss()\NextImageDelay-1
EndIf
If Boss()\Armor <= 0
Leben = Leben + 1
Punkte = Punkte + 5
AddElement(Explosion())
Explosion()\x = Boss()\x
Explosion()\y = Boss()\y
DeleteElement(Boss())
Else
If Boss()\y > 768
DeleteElement(Boss())
Leben = Leben - 3
EndIf
EndIf
Wend
Return
ResetList(Boss())
While NextElement(Boss())
ResetList(Bullet())
While NextElement(Bullet())
If SpriteCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Boss()\ActualImage, Boss()\x, Boss()\y)
Boss()\Armor - 1
DeleteElement(Bullet())
EndIf
Wend
If DeadDelay = 0
If SpriteCollision(PlayerImage, PlayerX, PlayerY, Boss()\ActualImage, Boss()\x, Boss()\y)
Dead = 1
DeadDelay = 200
Leben = Leben - 1
AddElement(Explosion())
Explosion()\x = Boss()\x
Explosion()\y = Boss()\y
DeleteElement(Boss())
EndIf
EndIf
Wend
Return
DisplayExplosions:
ResetList(Explosion())
While NextElement(Explosion())
DisplayTransparentSprite(Explosion()\State+20, Explosion()\x, Explosion()\y)
If Explosion()\Delay = 0
If Explosion()\State = 0
EndIf
If Explosion()\State < 7
Explosion()\State+1
Explosion()\Delay = 1
Else
DeleteElement(Explosion())
EndIf
Else
Explosion()\Delay-1
EndIf
Wend
StartDrawing(ScreenOutput())
DrawingMode(1)
Locate(512,1)
FrontColor(0,0,255)
DrawText("Punkte:" + Str(Punkte))
Locate(512,10)
FrontColor(255,0,0)
DrawText("Leben:" + Str(Leben))
Locate(512,20)
FrontColor(0,255,0)
DrawText("Level:" + Str(Level))
StopDrawing()
If (Punkte / 7) + 1 > Level
Level = Level + 1
EndIf
Until KeyboardPushed(1) Or Leben < 1 Or Punkte < 0
Delay(1000)
CloseScreen()
MessageRequester("Game Over", "Du hast " + Str(Punkte) + " Punkte erreicht",0)
Benutze Topos-PB-Version 3.3