2d Schuss kollision problem, was mache ich falsch?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mafa

Betreff: 2d Schuss kollision problem, was mache ich falsch?

BeitragDi, Okt 11, 2011 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
ich bin neu im forum und habe ein problem mit der Schuss kollision. Die kugel geht einfach durch meine gegner durch. Ich habe mir sorgar eine hilfsvariable gemacht um zu schauen ob eine kollision stattfindet, aber es findet keine kollision statt. Was mache ich falsch?

BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,32,1
SetBuffer BackBuffer()
frametimer = CreateTimer(30)

;//////////////////////////////////////////////////////////////////////////
;obj
;Karakter
Global spieler = LoadImage("obj\spieler.bmp")
MaskImage spieler, 255,255,255

;gegenstände
Global grass = LoadImage("obj\grass.bmp")
MaskImage grass,255,0,255

Global flagge = LoadImage("obj\flagge.bmp")
MaskImage flagge,255,0,255


;/////////////////////////////////////////////////////////////////////////////
;var,const
Const rauf = 200, runter = 208, rechts = 205, links = 203

Global playerx = 300
Global playery = 300

Global info.schuss
Global info1.zombie1

ja = 0

kill = 0

flagge_x = 700
flagge_y = 500


;/////////////////
;zombie1


;//////////////////////////////////////////////////////////////////////
;array,type

Type schuss
Field load
Field schuss_x
Field schuss_y
End Type

Type zombie1
Field load
Field zombie_x
Field zombie_y
Field zleben
End Type

Dim map(30,20)

Restore mapdata
For y = 0 To 19
For x = 0 To 29
Read map(x,y)
Next
Next
;//////////////////////////////////////////////////////////////////////////
;hauptschleife
Repeat
Cls
WaitTimer(frametimer)








drawmap()
steuerung()
drawzombie()
movezombie()


Text 0,0, "kill:" + kill


DrawImage spieler, playerx,playery

Flip

Until KeyHit(1)
End

;/////////////////////////////////////////////////////////////////////////////
;functionen



Function steuerung()
If KeyDown(rauf) Then
playery = playery-2
ja = ja +1
EndIf
If KeyDown(runter) Then
playery = playery+2
ja = ja +1
EndIf
If KeyDown(links) Then
playerx = playerx -2
ja = ja +1
EndIf
If KeyDown(rechts) Then
playerx = playerx +2
ja = ja +1
EndIf
End Function


Function drawzombie()
If KeyHit(links) Or KeyHit(rechts) Or KeyHit(rauf) Or KeyHit(runter) Then
info1.zombie1 = New zombie1
info1\load = LoadImage ("obj\zombie1.bmp")
MaskImage info1\load,255,0,255
info1\zombie_x = Rnd(0,800)
info1\zombie_y = 0
info1\zleben = 50
EndIf

For info1.zombie1 = Each zombie1

DrawImage info1\load,info1\zombie_x,info1\zombie_y
If info1\zombie_x < playerx Then
info1\zombie_x = info1\zombie_x +1
ElseIf info1\zombie_x > playerx Then
info1\zombie_x = info1\zombie_x -1
EndIf
If info1\zombie_y < playery Then
info1\zombie_y = info1\zombie_y +1
ElseIf info1\zombie_y > playery Then
info1\zombie_y = info1\zombie_y -1
EndIf
Next

For info1.zombie1 = Each zombie1

If ja > 1 Then
If ImagesCollide(info\load,info\schuss_x,info\schuss_y,0,info1\load,info1\zombie_x,info1\zombie_y,0)Then
Delete info
Delete info1
EndIf
EndIf

Next
End Function

Function movezombie()
If KeyHit(57) Then
info.schuss = New schuss
info\load = LoadImage ("obj\kugel.bmp")
MaskImage info\load,255,0,255
info\schuss_x = playerx
info\schuss_y = playery
EndIf

For info.schuss = Each schuss
info\schuss_y = info\schuss_y -8
DrawImage info\load,info\schuss_x,info\schuss_y
Next

For info.schuss = Each schuss
If ja > 1 Or ja = 1 Then
If ImagesCollide(info\load,info\schuss_x,info\schuss_y,0,info1\load,info1\zombie_x,info1\zombie_y,0)Then
Delete info
Delete info1
EndIf
EndIf
Next

End Function

Function drawmap()

For y = 0 To 19
For x = 0 To 29
If map(x,y) = 0 Then
DrawImage grass, x*32,y*32
EndIf
If map(x,y) = 1 Then
DrawImage flagge, x*32,y*32
EndIf
Next
Next

;////////////////////////////////////////////////////////////////////////
;schuss
End Function






.mapdata
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

ZEVS

BeitragDi, Okt 11, 2011 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code sieht ja schon mal recht professionell aus, aber das mit dem Einrücken kannst du noch üben. Die Feldbenennung ist ziemlich redundant: Die X-Position eines schuss ist als schuss_x gespeichert, sodass der Zugriff über schuss\schuss_x läuft. Das ist ziemlich unnötige Schreibarbeit und merkwürdig zu lesen - benenne das Feld lieber x. Gleiches natürlich auch für schuss_y, zombie_* und zleben.
Die Felder load sind nicht nur schlecht benannt (img wäre besser), nein, sie sind auch noch überflüssig und Kernstürck eines ziemlich unnötigen Performancefehlers: Du lädst die Schuss/Zombie-Bilder bei jedem Schuss/Zombie, statt sie einmal am Anfang zu laden und mehrmals zu zeichnen.
Zitat:
Ich habe mir sorgar eine hilfsvariable gemacht um zu schauen ob eine kollision stattfindet

Davon sehe ich nichts. Wäre aber natürlich praktisch.
Sowieso sind die Variablen info und info1 herrlich nichtssagend benannt und verschleiern einen Fehler: Wenn die Kollision stattfände (dabei wird sie unnötigerweise gleich zweimal überprüft), wäre entweder info oder info1 Null und du hättest einen RuntimeError.
Die Funktionen drawzombie und movezombie sind schlecht benannt, drawzombie macht beides und movezombie kümmert sich um Schüsse.

Zu deiner Frage, nach einer langen Kritik: Die Variable "ja" ist lokal definiert, wenn du von Funktionen aus darauf zugreifst, findet BB keine globale und mach auch dort eine lokale. Diese lokalen Variablen sind aber voneinander völlig unabhängig, sodass die merkwürdige Bedingung
Zitat:
BlitzBasic: [AUSKLAPPEN]
If ja > 1 [Or ja = 1]
nie erfüllt wird, da die lokale Variable stats 0 ist.

Man sieht schon, dass du neu bist...

ZEVS
 

mafa

BeitragDi, Okt 11, 2011 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort und sorry ich habe die hilfsvariable
warscheinlich durch das ständige probieren vergessen. ich werde es versuchen zu ändern, mit der ja variable, wenn ich es nicht hinbekomme dann melde ich mich noch mal.
 

mafa

BeitragDi, Okt 11, 2011 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bekomme es nicht hin. Wenn ich die Bilder am anfang lade erscheint immer die nachricht das das objekt nicht existiert. Die variable ja geht, wenn ich rauf drücke auf 1. Nur die hilfsvariable kill geht nicht um 1 höher, wenn der Schuss den gegner trifft. Der schuss fliegt immer noch durch.
BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,32,1
SetBuffer BackBuffer()
frametimer = CreateTimer(30)

;//////////////////////////////////////////////////////////////////////////
;obj
;Karakter
Global spieler = LoadImage("obj\spieler.bmp")
MaskImage spieler, 255,255,255

;wenn ich die bilder hier lade

;gegenstände
Global grass = LoadImage("obj\grass.bmp")
MaskImage grass,255,0,255

Global flagge = LoadImage("obj\flagge.bmp")
MaskImage flagge,255,0,255



;/////////////////////////////////////////////////////////////////////////////
;var,const
Const rauf = 200, runter = 208, rechts = 205, links = 203

Global playerx = 300
Global playery = 300

Global info.schuss
Global info1.zombie1

Global ja = 0

Global kill = 0

flagge_x = 700
flagge_y = 500


;/////////////////
;zombie1


;//////////////////////////////////////////////////////////////////////
;array,type

Type schuss ; im type gehts
Field img
Field x
Field y
End Type

Type zombie1
Field img
Field x
Field y
Field leben
End Type

Dim map(30,20)

Restore mapdata
For y = 0 To 19
For x = 0 To 29
Read map(x,y)
Next
Next
;//////////////////////////////////////////////////////////////////////////
;hauptschleife
Repeat
Cls
WaitTimer(frametimer)








drawmap()
steuerung()
drawzombie()
movezombie()
schuss()
moveschuss()




Text 0,0, "kill:" + kill
Text 0,10, "ja:" + ja

DrawImage spieler, playerx,playery


Flip

Until KeyHit(1)
End

;/////////////////////////////////////////////////////////////////////////////
;functionen



Function steuerung()
If KeyDown(rauf) Then
playery = playery-2
ja = 1
EndIf
If KeyDown(runter) Then
playery = playery+2
EndIf
If KeyDown(links) Then
playerx = playerx -2
EndIf
If KeyDown(rechts) Then
playerx = playerx +2
EndIf
End Function


Function drawzombie()
If KeyHit(links) Or KeyHit(rechts) Or KeyHit(rauf) Or KeyHit(runter) Then
info1.zombie1 = New zombie1
info1\img = LoadImage ("obj\zombie1.bmp")
MaskImage info1\img,255,0,255
info1\x = Rnd(0,800)
info1\y = 0
info1\leben = 50
EndIf
End Function


Function movezombie()
For info1.zombie1 = Each zombie1
If info1\x < playerx Then
info1\x = info1\x +1
ElseIf info1\x > playerx Then
info1\x = info1\x -1
EndIf
If info1\y < playery Then
info1\y = info1\y +1
ElseIf info1\y > playery Then
info1\y = info1\y -1
EndIf
DrawImage info1\img,info1\x,info1\y
Next
End Function


Function schuss()
If KeyHit(57) Then
info.schuss = New schuss
info\img = LoadImage ("obj\kugel.bmp")
MaskImage info\img,255,0,255
info\x = playerx
info\y = playery
EndIf
End Function


Function moveschuss()
For info.schuss = Each schuss
info\y = info\y -8
DrawImage info\img,info\x,info\y
Next
End Function


Function drawmap()
For y = 0 To 19
For x = 0 To 29
If map(x,y) = 0 Then
DrawImage grass, x*32,y*32
EndIf
If map(x,y) = 1 Then
DrawImage flagge, x*32,y*32
EndIf
Next
Next
End Function



For info.schuss = Each schuss ; kollision kugel,zombie1
If ja = 1 Then
If ImagesCollide(info\img,info\x,info\y,0,info1\img,info1\x,info1\y,0)Then
Delete info.schuss
kill = kill +1
EndIf
EndIf
Next





.mapdata
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

ZEVS

BeitragDi, Okt 11, 2011 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Dass das Objekt nicht existiert, heißt nicht, dass an dem Prinzip etwas falsch ist. Ich empfehle dir daher dringend, dich später noch einmal damit auseinanderzusetzen.
Die Variablen info und info1 haben eine sehr unklare Verwendung. Probiere es doch einmal mit Lokalen Variablen.
Die einzige Kollisionsabfrage steht jetzt ein bisschen verlassen außerhalb jeder Funktion und nach dem Mainloop direkt vor .mapdata. Das musst du ändern. Am besten, du nimmst eine eigene Funktion.
Der Sinn der Überprüfung ob ja = 1 verschließt sich mir mit besonderer Hartnäckigkeit: Die Variable ja nenne ich für mich immer "movecounter", d.h., die Kollisionen werden nur überprüft, wenn man sich genau einmal bewegt hat (und die Kollisionsüberprüfung überhaupt stattfindet).
Eventuell solltest du dir überlegen, ob statt dem langsamigen, teilweise fehlerhaften ImageCollide nicht eine einfachere Rechtecküberprüfung deinen Ansprüchen genügt.
Wegen der Funktion drawzombie und movezombie weise ich jetzt daraufhin, dass movezombie alles macht und drawzombie sich nur um das Erstellen von Zombies kümmert. Auf Englisch: drawzombie creates zombies and movezombie moves and draws zombies. Potenzielle Missverständnisse habe ich kursiv gemacht.
Möglicherweise ist es überlegenswert, was mit Schüssen passiert, die keinen Zombie treffen. Das du sie nicht mehr siehst, heißt noch lange nicht, dass es sie nicht mehr gibt, sie weiterhin (wenn auch im nicht sichtbaren Bereicht) gezeichnet werden, aktualisiert werden und weiterhin RAM verbrauchen. Mit anderen Worten: Performancekiller, Memoryleak. Zu korrigieren.

ZEVS

Xeres

Moderator

BeitragDi, Okt 11, 2011 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Objekte haben nichts mit Bildern zu tun. Entweder einmal Global laden:
Code: [AUSKLAPPEN]
Global zombie_img = LoadImage("obj\grass.bmp")
;[...]
DrawImage zombie_img, zombie\x, zombie\y

Oder einmal aus der Globalen zuweisen:
Code: [AUSKLAPPEN]
zombie\img = zombie_img
;[...]
DrawImage zombie\img, zombie\x, zombie\y

Jedes Bild immer wieder laden ist ein schneller Tod für dein Programm.
Das map Array geht von 0 bis einschließlich 30 bzw. 20!
Dein Kollisionsblock da über .mapdata steht in keiner Funktion und wird nie erreicht und ausgeführt.
Wenn du eine Fehlermeldung bekommst, aktiviere den Debugger, und sag uns die Zeile, in der der Fehler auftritt - Debuglog, Stop seien auch erwähnt.

Und bitte: Editiere deine Post anstatt Doppelposts zu machen. Danke.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

mafa

BeitragDi, Okt 11, 2011 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten und ich werde in zukunft meine post editieren.

Es funktioniert immer noch nicht. Die Bilder werden jetzt am anfang geladen und das klappt auch.
Die gegner zeigt er auch an, aber sobal ich schieße wird die variable ja = 1 und ich bekomme ich die meldung das das Object nicht existiert und der debugger zeigt die stelle an
BlitzBasic: [AUSKLAPPEN]

Function kollision()
For info.schuss = Each schuss
If ja = 1 Then ; kollision kugel,zombie1
If ImagesCollide(info\img,info\x,info\y,0,info1\img,info1\x,info1\y,0) Then ; die hier
Delete info
kill = kill +1
EndIf
EndIf
Next
End Function


der ganze code:
BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,32
SetBuffer BackBuffer()
frametimer = CreateTimer(30)

;//////////////////////////////////////////////////////////////////////////
;obj
;Karakter
Global spieler = LoadImage("obj\spieler.bmp")
MaskImage spieler, 255,255,255

Global zombie1 = LoadImage ("obj\zombie1.bmp")
MaskImage zombie1,255,0,255


;gegenstände
Global grass = LoadImage("obj\grass.bmp")
MaskImage grass,255,0,255

Global flagge = LoadImage("obj\flagge.bmp")
MaskImage flagge,255,0,255

Global schuss = LoadImage ("obj\kugel.bmp")
MaskImage schuss,255,0,255


;/////////////////////////////////////////////////////////////////////////////
;var,const
Const rauf = 200, runter = 208, rechts = 205, links = 203

Global playerx = 300
Global playery = 300

Global info.schuss
Global info1.zombie1

Global ja = 0

Global kill = 0

flagge_x = 700
flagge_y = 500


;/////////////////
;zombie1


;//////////////////////////////////////////////////////////////////////
;array,type

Type schuss
Field img
Field x
Field y
End Type

Type zombie1
Field img
Field x
Field y
Field leben
End Type

Dim map(30,20)

Restore mapdata
For y = 0 To 19
For x = 0 To 29
Read map(x,y)
Next
Next
;//////////////////////////////////////////////////////////////////////////
;hauptschleife
Repeat
Cls
WaitTimer(frametimer)








drawmap()
steuerung()
drawzombie()
movezombie()
schuss()
moveschuss()
kollision()




If schuss = 0 Then DebugLog "schuss nicht da"
If zombie1 = 0 Then DebugLog "zombie nicht da"

Text 0,0, "kill:" + kill
Text 0,10, "ja:" + ja

DrawImage spieler, playerx,playery


Flip

Until KeyHit(1)
End

;/////////////////////////////////////////////////////////////////////////////
;functionen

Function drawmap()
For y = 0 To 19
For x = 0 To 29
If map(x,y) = 0 Then
DrawImage grass, x*32,y*32
EndIf
If map(x,y) = 1 Then
DrawImage flagge, x*32,y*32
EndIf
Next
Next
End Function

Function steuerung()
If KeyDown(rauf) Then
playery = playery-2
ja = 1
EndIf
If KeyDown(runter) Then
playery = playery+2
EndIf
If KeyDown(links) Then
playerx = playerx -2
EndIf
If KeyDown(rechts) Then
playerx = playerx +2
EndIf
End Function


Function drawzombie()
If KeyHit(links) Or KeyHit(rechts) Or KeyHit(rauf) Or KeyHit(runter) Then
info1.zombie1 = New zombie1
info1\img = zombie1
info1\x = Rnd(0,800)
info1\y = 0
info1\leben = 50

EndIf
End Function


Function movezombie()
For info1.zombie1 = Each zombie1
If info1\x < playerx Then
info1\x = info1\x +1
ElseIf info1\x > playerx Then
info1\x = info1\x -1
EndIf
If info1\y < playery Then
info1\y = info1\y +1
ElseIf info1\y > playery Then
info1\y = info1\y -1
EndIf
DrawImage zombie1,info1\x,info1\y
Next
End Function


Function schuss()
If KeyHit(57) Then
info.schuss = New schuss
info\img = schuss
info\x = playerx
info\y = playery
EndIf
End Function


Function moveschuss()
For info.schuss = Each schuss
info\y = info\y -8
DrawImage schuss,info\x,info\y
If info\y < 5 Then
Delete info
EndIf
Next
End Function

Function kollision()
For info.schuss = Each schuss
If ja = 1 Then ; kollision kugel,zombie1
If ImagesCollide(info\img,info\x,info\y,0,info1\img,info1\x,info1\y,0) Then
Delete info
kill = kill +1
EndIf
EndIf
Next
End Function










.mapdata
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group