collideproblem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

pepetigo

Betreff: collideproblem

BeitragFr, Jul 13, 2007 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Die CollideFunction(ganz unten) functioniert nicht. Ich hoffe ihr konnt mir helfen.
Hier 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()
   Cls
   Repeat
      star()
      DrawImage loser, 20, 140
      Flip
   Until KeyHit(57) Or KeyHit(28) Or KeyHit(1)
   
   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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jul 13, 2007 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Player_pos_X also Global definieren.

Ich würde allerdings nicht eine Zeile Code in eine Funktion rein packen, sondern erst so ab vier Zeilen und nur dann, wenn die Funktion aus mehreren Codepositionen aus gebraucht wird. Ist aber meine Meinung.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group