Kollisions und abschlussbild problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

snörkl

Betreff: Kollisions und abschlussbild problem

BeitragDo, Jul 12, 2007 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi. Ich und mein Freund haben ein Problem mit folgendem Code.
1. Wenn man verliert, wird das "verlierer-bild" nicht angezeigt. Erst wenn man nochmal auf space drückt erscheint es für den bruchteil einer sekunde und ein neues spiel wird gestartet.
2. In der letzten funktion (collide() ) funktioniert die kollision nicht richtig. Zum einen kollidiert das Bild nicht an jeder stelle mit dem anderen, zum anderen erscheint ein fehler, wenn es kollidiert.
Wir hoffen, ihr könnt uns helfen,
mfg.

Der Code:
Code: [AUSKLAPPEN]
;Grafikmodus setzen
Graphics 640, 480, 16, 2

;Fenstertitel bestimmen
AppTitle "Schuss frei"

;Alle benötigten Bilder laden und gegebenfalls mit transparenz versorgen
Global spieler_1 = LoadImage("gfx/Spieler_1.png")
MaskImage spieler_1 ,255, 0, 255
 Global gegner_1=LoadImage("gfx/gegner_2.png")
MaskImage gegner_1 ,255, 0, 255
Global stars=LoadImage("gfx/stars.bmp")
Global loser=LoadImage("gfx/loser.png")
MaskImage loser, 255,0,255

;Globale Variablen

;Hintergrundvariablen
Global x_star = 1
;Gegnervariablen
SeedRnd MilliSecs()
Global Gegner_pos_X = Rnd(1, 640)
Global Gegner_pos_Y = 1
Global gtimer = MilliSecs()
;Spielervariablen
Global leben = 3
Global schaden = 1
Global stimer = MilliSecs()

;buffer setzen u. Spieler zeichnen
SetBuffer BackBuffer()
DrawImage spieler_1, 0, 380
;Musik
Global titelsound = LoadSound("sound/17_sasha_-_goodbye.mp3");(namen ersetzen für eigenes lied)
sound()

;HAUPTSCHLEIFE
Repeat
;funktionen
   star()
   gegner()
   collide()

;Leben etc.
   Text 1,1,"Leben:" + leben
   If KeyHit(57) Then leben = leben - 1
    If leben <= 0 Then lose()

;spieler bewegen
   If KeyDown(203)
      
      If MilliSecs() > stimer + 100
         Player_pos_X=Player_pos_X-20
         stimer=MilliSecs()
      EndIf
      If Player_pos_X=<0 Then Player_pos_X=1

   EndIf
   If KeyDown(205)
   
      If MilliSecs() > stimer + 100
         player_pos_x=player_pos_X +20
         stimer=MilliSecs()
      EndIf
      If Player_pos_X=>540 Then Player_pos_X=540
   EndIf
;Spieler zeichnen (positionswechsel?)
   DrawImage spieler_1,player_pos_x,380
;Buffer swap u. altes bild cls
   Flip
   Cls   

;ENDE HAUPTSCHLEIFE
Until KeyHit(1)

;beenden
End

;//////////////////FUNKTIONEN\\\\\\\\\\\\\\\\\\\\\\\

Function sound()
   LoopSound titelsound
   titelsound =PlaySound(titelsound)
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function gegner()
   DrawImage gegner_1, Gegner_pos_X, Gegner_pos_Y
      If MilliSecs() > gtimer + 150
         Gegner_pos_Y=Gegner_pos_Y+5
         gtimer=MilliSecs()
      EndIf
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function lose()
   Repeat
        DrawImage loser, 20, 140
      star()
   Until KeyHit(57)
   
   leben = 3
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function star()
   TileImage stars, x_star, 1

   x_star = x_star + 1
   If x_star = 201 Then x_star = 1
End Function

Function collide()
If ImagesCollide(spieler_1, Player_pos_X, 380, 0, gegner_1, Gegner_pos_X, Gegner_pos_Y, 0) Then leben = leben -1
End Function

Dreiser

BeitragDo, Jul 12, 2007 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
In der lose-Function fehlt CLS/Flip.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group