Großes Problem mit Kollisionen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

[SHM]StArMaStEr

Betreff: Großes Problem mit Kollisionen

BeitragMo, Feb 23, 2004 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Ich habe ein riesiges Problem mit den Kollisionen. Die Gegner verschwinden einfach nach einer weile obwohl sie nicht getroffen wurden.
Die Kollision funzt eigentlich aber wenn es zuviele gegner werden dann verschwinden einfach einige. Zudem hab ich noch ein problem mit der stetig steigenden Gegnerzahl. BITTE HELFT MIR!!(hier is der Quelltext Crying or Very sad )

Graphics 800,600,16,1
SetBuffer BackBuffer()



kugel = LoadImage("shot.bmp")
ship = LoadImage("ship.bmp")
feind = LoadImage("enemy.bmp")
back = LoadImage("stars.bmp")


Global z = 0
Global score = 0
Global f#=1
Global schuss

Type gegner
Field xpos
Field ypos
End Type

x=400
y=540

Erschaffen()

SeedRnd MilliSecs()

Repeat
Cls

k#=k#+1.5
h#=h#+1
TileImage back,0,h#
TileImage back,100,k#


If schuss=50 Then schuss=1

For i = 1 To 50
If rak(i,0)=1
DrawImage kugel,rak(i,1),rak(i,2)
rak(i,2)=rak(i,2)-15
EndIf
Next

For fuck.gegner = Each gegner
fuck\ypos=fuck\ypos+2
DrawImage feind,fuck\xpos,fuck\ypos
If fuck\ypos>600
z=0
Delete fuck
EndIf
For i=1 To 50
If z=1
If ImagesCollide(feind,fuck\xpos,fuck\ypos,0,kugel,rak(i,1),rak(i,2),0)
If MouseHit(1)
z=0
rak(i,0)=0
EndIf
EndIf
Next

If KeyHit(57) Then
schuss=schuss+1
rak(schuss,0)=1
rak(schuss,1)=x+50
rak(schuss,2)=y-27
EndIf

If z=0 Then
erschaffen()
f#=f#+0.2
EndIf

If f#>2 Then f#=1

DrawImage ship,x,y

If KeyDown(203) Then x=x-5
If KeyDown(205) Then x=x+5
If KeyDown(200) Then y=y-3
If KeyDown(208) Then y=y+3

If x<30 Then x=30
If x>770 Then x=770
If y>550 Then y=550
If y<50 Then y=50

FlushKeys
Print score
Delay 8
Flip
Until KeyHit(1)

Function Erschaffen()
If z=0
For i=1 To f#
fuck.gegner= New gegner
fuck\xpos = Rand(50,750)
fuck\ypos = -100
z=1
Next
EndIf
End Function
BB-coden was das Zeug hällt!!!!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Feb 23, 2004 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist mir sofort aufgefallen ..
da fehlt was...Code: [AUSKLAPPEN]
For i=1 To 50
If z=1
if rak(i,0)=1; <<<<<<<<<<da lag der fehler denk ich
If ImagesCollide(feind,fuck\xpos,fuck\ypos,0,kugel,rak(i,1),rak(i,2),0)
If MouseHit(1)
z=0
rak(i,0)=0
EndIf
EndIf
end if;<<<<<<<<<<
Next

Du überprüfst jede Rakete egal ob es sie gibt oder nicht
Achja benutze CodeTags
[BB2D | BB3D | BB+]

Markus2

BeitragMo, Feb 23, 2004 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
So ,
ziemlicher Murks aber es geht irgendwie Wink

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()

Dim ximg(5)
For i=1 To 5
ximg(i)=CreateImage(32,32)
SetBuffer ImageBuffer(ximg(i))
Color Rnd(0,255),Rnd(0,255),Rnd(0,255)
Rect 0,0,32,32
SetBuffer BackBuffer()
Next

kugel =ximg(1); LoadImage("shot.bmp")
ship = ximg(2);LoadImage("ship.bmp")
feind =ximg(3); LoadImage("enemy.bmp")
back = ximg(4);LoadImage("stars.bmp")

Global z = 0
Global score = 0
Global f#=1
Global schuss

Type gegner
 Field xpos
 Field ypos
End Type

x=400
y=540

Dim rak(50,2)

Erschaffen()

SeedRnd MilliSecs()

Repeat
 Cls

 k#=k#+1.5
 h#=h#+1
 TileImage back,0,h#
 TileImage back,100,k#

 If schuss=50 Then schuss=1

 For i = 1 To 50
  If rak(i,0)=1 Then
   DrawImage kugel,rak(i,1),rak(i,2)
   rak(i,2)=rak(i,2)-15
  EndIf
 Next

For fuck.gegner = Each gegner
 fuck\ypos=fuck\ypos+2 
 DrawImage feind,fuck\xpos,fuck\ypos
 If fuck\ypos>600 Then
  z=0
  Delete fuck
 EndIf

 For i=1 To 50
  ;If z=1 Then
   If ImagesCollide(feind,fuck\xpos,fuck\ypos,0,kugel,rak(i,1),rak(i,2),0) Then
   ;If MouseHit(1) Then
    z=0
    rak(i,0)=0
    Delete Fuck
    Exit
  ;EndIf
 ;EndIf
 EndIf
Next

Next

If KeyHit(57) Then
 schuss=schuss+1
 rak(schuss,0)=1
 rak(schuss,1)=x+50
 rak(schuss,2)=y-27
EndIf

If z=0 Then
 erschaffen()
 f#=f#+0.2
EndIf

 If f#>2 Then f#=1

 DrawImage ship,x,y

 If KeyDown(203) Then x=x-5
 If KeyDown(205) Then x=x+5
 If KeyDown(200) Then y=y-3
 If KeyDown(208) Then y=y+3

 If x<30 Then x=30
 If x>770 Then x=770
 If y>550 Then y=550
 If y<50 Then y=50

 ;FlushKeys <-- GRRR
 Color 255,255,0
 Text 0,0, score
 Delay 20
 Flip
Until KeyHit(1)
End

Function Erschaffen()
 If z=0  Then
 For i=1 To f# ;<-- GRRR
 fuck.gegner= New gegner
 fuck\xpos = Rand(50,750)
 fuck\ypos = -100
 z=1 
 Next
 EndIf
End Function

 

[SHM]StArMaStEr

Betreff: Danke!!

BeitragMo, Feb 23, 2004 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke hab den fehler gefunden! cya
BB-coden was das Zeug hällt!!!!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group