Problem mit Mini-Spaceshooter
Übersicht

captain kwirkbyBetreff: Problem mit Mini-Spaceshooter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi! Ich hab ein Problem, ich wolte nämlich einen Mini-Spaceshooter machen(nur ganz einfach, als Übung) und jetzt zeigt er mir alle 20 Sekunden ein "Object does not exist" bei der Zeile "If ImagesOverlap(sh,s\x,s\y..."
Könnt ihr mir helfen? Code: [AUSKLAPPEN] Graphics 640,480,32,2
SeedRnd MilliSecs() SetBuffer BackBuffer() Global you = LoadAnimImage("you.bmp",100,50,0,2) Global en = LoadImage("enemy.bmp") Global sh = LoadImage("shot.bmp") Global explo = LoadImage("explo.bmp") MaskImage you,255,255,255 MaskImage en,255,255,255 MaskImage sh,255,255,255 MaskImage explo,255,255,255 MidHandle sh MidHandle explo MidHandle you MidHandle en Global x = 50 Global y = 240 Global health = 10 Global timer = CreateTimer(30) Function explosion(x,y) DrawImage explo,x,y End Function Type enemy Field x Field y End Type Type shot Field x Field y End Type Function CreateEnemy() e.enemy = New enemy e\x = 640 e\y = Rand(50,600) End Function Function CreateShot() s.shot = New Shot s\x = x+25 s\y = y-5 End Function While Not KeyHit(1) WaitTimer TIMER Cls If KeyDown(200) And y>25 Then y = y - 5 If KeyDown(208) And y<465 Then y = y + 5 If KeyHit(57) Then CreateShot() booley = Rand(49) If booley = 7 Then CreateEnemy() For e.enemy = Each enemy e\x = e\x - 5 DrawImage en,e\x,e\y If e\x <= 0 Then Delete e ;------------------- For s.shot = Each shot s\x = s\x + 5 DrawImage sh,s\x,s\y If s\x > 640 Then Delete s If ImagesOverlap(sh,s\x,s\y,en,e\x,e\y) Then explosion(e\x,e\y) Delete e Delete s End If Next ;------------- Next If nr = 0 Then nr = 1 Else nr = 0 DrawImage you,x,y,nr Color 255,0,0 Rect 5,5,health * 10,10 Flip Wend |
||
99 % aller Amokläufer essen Brot. Verbietet Brot!!! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du prüfst auf e obwohl du es vorher potentiell löschst ![]() |
||
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 |
captain kwirkby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke das klappt jetzt ![]() Aber jetzt hab ich das Problem dass die Schüsse immer schneller werden ![]() |
||
99 % aller Amokläufer essen Brot. Verbietet Brot!!! |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Poste doch noch einmal deinen aktuellen code... | ||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
captain kwirkby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay hier ist er:
Code: [AUSKLAPPEN] Graphics 640,480,32,2
SeedRnd MilliSecs() SetBuffer BackBuffer() Global you = LoadAnimImage("you.bmp",100,50,0,2) Global en = LoadImage("enemy.bmp") Global sh = LoadImage("shot.bmp") Global explo = LoadImage("explo.bmp") MaskImage you,255,255,255 MaskImage en,255,255,255 MaskImage sh,255,255,255 MaskImage explo,255,255,255 MidHandle sh MidHandle explo MidHandle you MidHandle en Global x = 50 Global y = 240 Global health = 10 Global timer = CreateTimer(30) Function explosion(x,y) DrawImage explo,x,y End Function Type enemy Field x Field y End Type Type shot Field x Field y End Type Function CreateEnemy() e.enemy = New enemy e\x = 640 e\y = Rand(50,400) End Function Function CreateShot() s.shot = New Shot s\x = x+25 s\y = y-5 End Function While Not KeyHit(1) WaitTimer TIMER Cls If KeyDown(200) And y>25 Then y = y - 5 If KeyDown(208) And y<465 Then y = y + 5 If KeyHit(57) Then CreateShot() booley = Rand(49) If booley = 7 Then CreateEnemy() For e.enemy = Each enemy e\x = e\x - 5 DrawImage en,e\x,e\y ;------------------- For s.shot = Each shot s\x = s\x + 5 DrawImage sh,s\x,s\y If ImagesOverlap(sh,s\x,s\y,en,e\x,e\y) Then explosion(e\x,e\y) Delete e Delete s End If Next ;------------- Next If nr = 0 Then nr = 1 Else nr = 0 DrawImage you,x,y,nr Color 255,0,0 Rect 5,5,health * 10,10 Flip Wend |
||
99 % aller Amokläufer essen Brot. Verbietet Brot!!! |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hast du auch noch die Bilder? So beim durchsehen kann ich nix entdecken, hab aber keine Lust imagestrips zu basteln um das testen zu können... | ||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
captain kwirkby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bitteschön ![]() http://www.file-upload.net/dow...a.zip.html |
||
99 % aller Amokläufer essen Brot. Verbietet Brot!!! |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast da mit den Schleifen einiges im argen liegen. Die Schüsse werden bei mehr Gegnern schneller, weil sie dann öfter geupdatet werden.
Lager die Bewegung der Schüsse und der Gegner in zwei unterschiedliche Schleifen aus, und mach nachher eine seperate for-Schleife über die Schüsse und Gegner in der du auf Kollision prüfst: Code: [AUSKLAPPEN] Graphics 640,480,32,2
SeedRnd MilliSecs() SetBuffer BackBuffer() Global you = LoadAnimImage("you.bmp",100,50,0,2) Global en = LoadImage("enemy.bmp") Global sh = LoadImage("shot.bmp") Global explo = LoadImage("explo.bmp") MaskImage you,255,255,255 MaskImage en,255,255,255 MaskImage sh,255,255,255 MaskImage explo,255,255,255 MidHandle sh MidHandle explo MidHandle you MidHandle en Global x = 50 Global y = 240 Global health = 10 Global timer = CreateTimer(30) Function explosion(x,y) DrawImage explo,x,y End Function Type enemy Field x Field y End Type Type shot Field x Field y End Type Function CreateEnemy() e.enemy = New enemy e\x = 640 e\y = Rand(50,600) End Function Function CreateShot() s.shot = New Shot s\x = x+25 s\y = y-5 End Function While Not KeyHit(1) Cls If KeyDown(200) And y>25 Then y = y - 5 If KeyDown(208) And y<465 Then y = y + 5 If KeyHit(57) Then CreateShot() For s.shot = Each shot s\x = s\x + 5 DrawImage sh,s\x,s\y Next booley = Rand(49) If booley = 7 Then CreateEnemy() For e.enemy = Each enemy e\x = e\x - 5 DrawImage en,e\x,e\y ;------------------- For s.shot = Each shot If ImagesOverlap(sh,s\x,s\y,en,e\x,e\y) Then explosion(e\x,e\y) Delete e Delete s Exit End If Next ;------------- Next If nr = 0 Then nr = 1 Else nr = 0 DrawImage you,x,y,nr Color 255,0,0 Rect 5,5,health * 10,10 Flip WaitTimer timer Wend |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
captain kwirkby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke hat funktioniert und alles läuft soweit bugfrei ![]() |
||
99 % aller Amokläufer essen Brot. Verbietet Brot!!! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group