Kollisionen Probleme

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Gero

Betreff: Kollisionen Probleme

BeitragMi, Jan 05, 2011 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute ich habe ein Problem.......
Ich verstehe nicht warum beim Kontakt zwischen laserschuss und smiley nichts passiert ich habe doch eigentlich alles richtig gemacht....

Danke schonmal im Vorraus....

PS:Bin blutiger Anfäanger also bitte möglichst einfach halten.....





















Der Code:






Graphics (1300,800)

Global hintergrund=LoadImage("Lava Hintergrund gerade.bmp")

Global gameover=LoadImage("Gameover.bmp")


Global smiley=LoadImage("Smiley.bmp")
MaskImage smiley,255,255,255
ScaleImage smiley,0.36,0.36

Global Kanone1=LoadImage ("Kanone.bmp")
MaskImage Kanone1,255,255,255

Global laserschuss_vertikal = LoadImage("laserschuss_vertikal.bmp")
Global laserschuss_horizontal = LoadImage("laserschuss_horizontal.bmp")

Global techno=LoadSound ("techno.mp3")
Global fail=LoadSound ("fail.mp3")

Global Schriftart=LoadFont ("Arial",115,100)

anfangszeit = MilliSecs()


Global x=600 ;Mein Spawnpoint
Global y=350
Global shot_counter=0

Type shot ;erstellt den Type "shot"
Field shot_x ;x Koordinate
Field shot_y ;y Koordinate
End Type


SeedRnd MilliSecs()
Global xk1=Rand(100,1050) ;Spawnpoint Kanone 1
Global zxk1=Rand(100,1050)
Global yk1=550



SetBuffer BackBuffer()


While Not KeyHit(1)

Cls
DrawBlock hintergrund ,0,0
endzeit=MilliSecs()



If KeyDown (205) x=x+7
If KeyDown (203) x=x-7
If KeyDown (208) y=y+7 ;Bewegung
If KeyDown (200) y=y-7

If x=>1142 Then x=x-7
If y=>642 Then y=y-7 ;Begrenzungen
If x=<100 Then x=x+7
If y=<100 Then y=y+7


DrawImage (smiley,x,y,0) ;Smiley


If xk1 < zxk1-3 Then
xk1=xk1+3
DrawImage kanone1,xk1,yk1

ElseIf xk1 > zxk1+3 Then

Tankbuster

BeitragMi, Jan 05, 2011 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist wohl nicht der vollständige Code.
Es wäre außerdem besser, wenn du ihn in CodeTags setzt. [*code][*/code]
Twitter
Download Jewel Snake!
Windows|Android
 

Gero

Betreff: Nachtrag

BeitragMi, Jan 05, 2011 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohhh das tut mir Leid

Sorry

Hier der vollständige Code:





Graphics (1300,800)

Global hintergrund=LoadImage("Lava Hintergrund gerade.bmp")

Global gameover=LoadImage("Gameover.bmp")


Global smiley=LoadImage("Smiley.bmp")
MaskImage smiley,255,255,255
ScaleImage smiley,0.36,0.36

Global Kanone1=LoadImage ("Kanone.bmp")
MaskImage Kanone1,255,255,255

Global laserschuss_vertikal = LoadImage("laserschuss_vertikal.bmp")
Global laserschuss_horizontal = LoadImage("laserschuss_horizontal.bmp")

Global techno=LoadSound ("techno.mp3")
Global fail=LoadSound ("fail.mp3")

Global Schriftart=LoadFont ("Arial",115,100)

anfangszeit = MilliSecs()


Global x=600 ;Mein Spawnpoint
Global y=350
Global shot_counter=0

Type shot ;erstellt den Type "shot"
Field shot_x ;x Koordinate
Field shot_y ;y Koordinate
End Type


SeedRnd MilliSecs()
Global xk1=Rand(100,1050) ;Spawnpoint Kanone 1
Global zxk1=Rand(100,1050)
Global yk1=550



SetBuffer BackBuffer()


While Not KeyHit(1)

Cls
DrawBlock hintergrund ,0,0
endzeit=MilliSecs()



If KeyDown (205) x=x+7
If KeyDown (203) x=x-7
If KeyDown (208) y=y+7 ;Bewegung
If KeyDown (200) y=y-7

If x=>1142 Then x=x-7
If y=>642 Then y=y-7 ;Begrenzungen
If x=<100 Then x=x+7
If y=<100 Then y=y+7


DrawImage (smiley,x,y,0) ;Smiley


If xk1 < zxk1-3 Then
xk1=xk1+3
DrawImage kanone1,xk1,yk1

ElseIf xk1 > zxk1+3 Then
xk1=xk1-3
DrawImage kanone1,xk1,yk1

ElseIf xk1>zxk1-3 Then
SeedRnd MilliSecs()
zxk1=Rand (100, 1050)

ElseIf xk1< zxk1+3 Then
SeedRnd MilliSecs()
zxk1=Rand (100, 1050)

EndIf


timer(anfangszeit,endzeit,zeit)
Schuss(xk1,yk1,shot_x,shot_y)



Flip
Wend
End














Function timer(endzeit,anfangszeit,zeit)
zeit=anfangszeit-endzeit
zeit=zeit/1000
Locate (650,0)
SetFont Schriftart
Print zeit
Return zeit
End Function












Function Schuss (xk1,yk1,shot_x,shot_y)

If KeyDown(57) Then
shot_counter = shot_counter +1
EndIf

If shot_counter=5 Then
info.shot = New shot
info\shot_x = xk1 +40
info\shot_y = yk1
shot_counter=0
EndIf

For info.shot = Each shot
info\shot_y = info\shot_y -5
DrawImage laserschuss_vertikal,info\shot_x,info\shot_y
Next


If ImagesCollide (smiley,x,y,o,laserschuss_vertikal,shot_x,shot_y,0) Then
Cls
DrawBlock gameover,0,0
Delay(2000)
End
EndIf

End Function

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Jan 05, 2011 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
der Fehler liegt in Dieser Zeile
Code: [AUSKLAPPEN]
If ImagesCollide (smiley,x,y,o,laserschuss_vertikal,shot_x,shot_y,0) Then

die sollte so sein und innerhalb deiner Schleife

Code: [AUSKLAPPEN]
    For info.shot = Each shot
      If ImagesCollide (smiley,x,y,0,laserschuss_vertikal,info\shot_x,info\shot_y,0) Then
         Cls
         DrawBlock gameover,0,0
         Delay (2000)
         End
      EndIf
   Next
[BB2D | BB3D | BB+]
 

Gero

Betreff: Vielen Dank

BeitragDo, Jan 06, 2011 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank ich habs verstanden und es klappt super.....
Hättest du auch eine Idee wie die Kanone alle 5 Sekunden( oder eine zufällige Zahl) automatisch schießt.
Also nicht wenn ich Leertaste drücke sonder halt wenn eine bestimmte Zeitdauer vorbei ist....

Wäre um Hilfe dankbar

Gero
 

Sterbendes Lüftlein

BeitragDo, Jan 06, 2011 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

ozzi789

BeitragFr, Jan 07, 2011 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich rate dir, dich zuerst mit etwas Lektüre zu befassen, bevor du dich an ein Spiel wagst.
Wird weniger frustrierend für dich Wink
Check mal https://www.blitzforum.de/scene/links/ !

Dazu bitte benütze Codetags Code: [AUSKLAPPEN]
[code]DEIN CODE über mehrere zeilen usw[/code]

So ist alles viel lesbarer und kompakter.

mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group