test font,barre d'énergie,collision,timer
Publié : jeu. 12/oct./2017 16:24
bonjour,
pour ce test je me suis inspiré de ce code pour la barre d'énergie.
j'ai voulut testé les fontes,les collisions et un timer.
il doit avoir pas mal d'erreur dans mon code.
pour ce test je me suis inspiré de ce code pour la barre d'énergie.
Code : Tout sélectionner
;auteur Huitbit
;barre d'énergie avec clipsprite
;pb v4.02
;***************************************************
#largeur_barre=200
#hauteur_barre=#largeur_barre/10
InitSprite()
OpenWindow(0,0,0,#largeur_barre,2*#hauteur_barre,"barre d'énergie",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,#largeur_barre,2*#hauteur_barre,1,0,0)
;dessin de la barre complète
CreateSprite(0,#largeur_barre,#hauteur_barre)
StartDrawing(SpriteOutput(0))
For i=0 To #hauteur_barre/2
Line(0,i,#largeur_barre,1,RGB(100+15*i,0,0))
Line(0,i+#hauteur_barre/2,#largeur_barre,1,RGB(255-15*i,0,0))
Next i
For i = 1 To 9
Line(#hauteur_barre*i,0,1,#hauteur_barre,RGB(100,100,100))
Next i
StopDrawing()
x=0;niveau d'énergie
dx=1;variation du niveau d'énergie
Repeat
Repeat
Event = WindowEvent()
If Event = #PB_Event_CloseWindow
End
EndIf
Until Event = 0
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
ClipSprite(0,0,0,x,#hauteur_barre);affichage partiel de la barre d'énergie
DisplaySprite(0, 0,10)
x=x+dx
If x>#largeur_barre Or x=<0
dx=-dx
EndIf
ForEver
il doit avoir pas mal d'erreur dans mon code.
Code : Tout sélectionner
;test font,barre d'energie,collision,timer
EnableExplicit
;- Initialisations
If InitSprite()=0 Or InitKeyboard()=0 ;Or InitSound() = 0
MessageRequester("Probleme","Initialisations impossibles",0)
End
EndIf
;fenetre
Enumeration fenetre
#fenetre
EndEnumeration
;font
Enumeration
#font
EndEnumeration
;sprite
Enumeration
#etoile
#etoile2
#etoile3
#Bg
#ravitaillement
#ravitaillement2
#astronaute
#barre_fond
#pieces
#fond_base
#lune
#dessin_intro
#HB
EndEnumeration
Structure Star
Xpos.i
Ypos.i
vit.i
couleur.b
EndStructure
#barre = 550
#NBstar = 99
#Sas = 80
Global i,Event,ctime_oxygene,time_oxygene = 1000/8 ;timer barre oxygene
Global largeur_ecran,hauteur_ecran,ravitaillement_posx,ravitaillement_posy,Astronaute_Posx,Astronaute_Posy,t
Global oxygene,variation_oxygene,player,aff_oxygene,Boost_Oxygene
Global ctime_deplacement,time_deplacement=1000/2
Global affiche_gameover,credits,Vies,Vies_Posx,Vies_Posy
Global Lune_posx,Lune_Posy,ravitaillement2_posx,ravitaillement2_posy,Intro_Posx,Intro_Posy,Intro_logo,Sas,Sas_variation
Global Dim stars.star(#NBstar) ; tableau etoile
Global Lstar,Hstar,Lstarv,Hstarv,Score,base_x,base_y,sas_posx,sas_posy
;variables ecran
largeur_ecran = 1024
hauteur_ecran = 768
ravitaillement_posx = 500
ravitaillement_posy = 380
ravitaillement2_posx = 500
ravitaillement2_posy = 380
Astronaute_Posx = -50
Astronaute_Posy = 380
oxygene = 550
variation_oxygene = 1
vies = 1
Vies_Posx = 10
Vies_Posy =12
credits = 1
Lune_posx = 1024
Lune_Posy = -130
Lstar = 1024
Hstar = 768
Intro_logo = #True
Intro_Posx = 120
Intro_Posy = 0
Sas = 80
Sas_variation=1
Score = 0
base_x =720
base_y = 80
sas_posx = 720
sas_posy = 0
;ecran
OpenWindow(#fenetre,0,0,largeur_ecran,hauteur_ecran,"test font,barre energie,collision,timer",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#fenetre),0,0,largeur_ecran,hauteur_ecran)
Procedure newfont()
Protected font
font=LoadFont(#font, "arial",15)
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(#font))
DrawText(760,700,"Position astronaute X: "+Str(Vies_Posx),RGB(255,255,255))
DrawText(760,730,"Position astronaute Y: "+Str(Vies_Posy),RGB(255,255,255))
DrawText(450,680,"Score : " +Str(Score),RGB(125,125,255))
DrawText(10,680,"Vie : "+Str(vies),RGB(255,255,0))
DrawText(90,680,"Credit : "+Str(credits),RGB(0,155,55))
If player=1
DrawText(470,320,"PLAYER 1",RGB(255,255,155))
EndIf
;si il y a collision avec le sprite ravitaillement et l'astronaute on affiche le message level up.
If SpritePixelCollision(#ravitaillement,ravitaillement_posx,ravitaillement_posy,#astronaute,Astronaute_Posx,Astronaute_Posy):DrawText(470,320,"LEVEL UP",RGB(255,255,155)):EndIf
; on affiche player 1 a la position 50 en x de l'astronaute
If Astronaute_Posx >50:player=1:EndIf
;on desactive le message player 1 à la position en x de 250 de l'astronaute
If Astronaute_Posx >250:player=0:EndIf
If affiche_gameover=#True: DrawText(460,320,"GAME OVER",RGB(255,255,155)):Else:affiche_gameover=#False:EndIf
If aff_oxygene=1: DrawText(250,680,"Oxygene : "+Str(oxygene),RGB(25,125,255)):EndIf
;si oxygene est different de 250 affiche oxygene interface
If oxygene<>250:aff_oxygene=1:EndIf
;si oxygene et plus bas que 250 affiche message critique
If oxygene<250:DrawText(200,680,"Oxygene niveau critique ",RGB(t+255,0,0)):aff_oxygene=0:EndIf
If Boost_Oxygene=#True:DrawText(250,655,"Boost Oxygene ",RGB(0,t+255,0)):EndIf
;intensité font
If t>0:t-255:Else:t+1:EndIf
StopDrawing()
EndProcedure
;--- barre d'oxygene ---
Procedure Bg()
CreateSprite(#Bg,550,10,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#Bg))
For i = 0 To #barre
Box(0,0,550,10,RGB(25,155,255))
Next i
StopDrawing()
ClipSprite(#Bg,0,0,oxygene,#barre)
DisplayTransparentSprite(#Bg,largeur_ecran/2-485,hauteur_ecran-45)
EndProcedure
;--- Astronaute ---
Procedure astronaute()
CreateSprite(#astronaute,120,120,#PB_Sprite_AlphaBlending|#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#astronaute))
Circle(28,28,18,$666666)
Circle(34,28,13,RGB(0,155,255))
Box(18,45,20,55,$666666)
Box(5,45,12,30,$ffffff)
Box(20,45,12,30,$ccffff)
Box(30,65,12,10,$ccffff)
Box(5,15,2,30,$ffffff)
Box(15,95,35,10,$FFFFFF)
StopDrawing()
TransparentSpriteColor(#astronaute,RGB(0,0,0))
ZoomSprite(#astronaute,60,60)
DisplayTransparentSprite(#astronaute,Astronaute_Posx,Astronaute_Posy)
DisplayTransparentSprite(#astronaute,Vies_Posx,Vies_Posy+15)
EndProcedure
Procedure ravitaillement()
CreateSprite(#ravitaillement,80,80,#PB_Sprite_AlphaBlending|#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#ravitaillement))
Box(0,0,80,80,RGB(175,175,175))
Box(0,0,80,3,RGB(125,125,125))
Box(0,2,3,79,RGB(125,125,125))
Box(0,80,80,3,RGB(125,125,125))
Box(77,2,3,79,RGB(125,125,125))
Box(0,15,80,3,RGB(125,125,125))
Box(3,18,74,7,RGB(0,t+255,0))
Box(0,25,80,3,RGB(125,125,125))
Box(0,50,80,3,RGB(125,125,125))
Box(3,53,74,7,RGB(255,255,115))
Box(0,60,80,3,RGB(125,125,125))
Circle(12,9,2,RGB(115,115,115))
Circle(66,9,2,RGB(115,115,115))
Circle(12,71,2,RGB(115,115,115))
Circle(66,71,2,RGB(115,115,115))
StopDrawing()
TransparentSpriteColor(#ravitaillement,RGB(0,0,0))
ZoomSprite(#ravitaillement,32,32)
DisplayTransparentSprite(#ravitaillement,ravitaillement_posx,ravitaillement_posy)
EndProcedure
Procedure ravitaillement2()
CreateSprite(#ravitaillement2,80,80,#PB_Sprite_AlphaBlending|#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#ravitaillement2))
Box(0,0,80,80,RGB(175,175,175))
Box(0,0,80,3,RGB(125,125,125))
Box(0,0,3,79,RGB(125,125,125))
Box(0,80,80,3,RGB(125,125,125))
Box(77,2,3,79,RGB(125,125,125))
Box(0,15,80,3,RGB(125,125,125))
Box(3,18,74,7,RGB(Random(255),Random(255),Random(255)))
Box(0,25,80,3,RGB(125,125,125))
Box(0,50,80,3,RGB(125,125,125))
Box(3,53,74,7,RGB(Random(255),Random(255),Random(255)))
Box(0,60,80,3,RGB(125,125,125))
Circle(12,9,2,RGB(115,115,115))
Circle(66,9,2,RGB(115,115,115))
Circle(12,71,2,RGB(115,115,115))
Circle(66,71,2,RGB(115,115,115))
StopDrawing()
EndProcedure
;--- décor base
Procedure decor_base()
CopySprite(#ravitaillement,#fond_base)
;test decor base
DisplayTransparentSprite(#fond_base,0,0)
DisplayTransparentSprite(#fond_base,480,0)
DisplayTransparentSprite(#fond_base,800,0)
DisplayTransparentSprite(#fond_base,960,0)
DisplayTransparentSprite(#fond_base,160,0)
DisplayTransparentSprite(#fond_base,320,0)
DisplayTransparentSprite(#fond_base,640,0)
ZoomSprite(#fond_base,80,40)
DisplayTransparentSprite(#fond_base,80,80)
DisplayTransparentSprite(#fond_base,0,80)
DisplayTransparentSprite(#fond_base,160,80)
DisplayTransparentSprite(#fond_base,240,80)
DisplayTransparentSprite(#fond_base,320,80)
DisplayTransparentSprite(#fond_base,400,80)
DisplayTransparentSprite(#fond_base,480,80)
DisplayTransparentSprite(#fond_base,560,80)
DisplayTransparentSprite(#fond_base,640,80)
DisplayTransparentSprite(#fond_base,base_x,base_y)
DisplayTransparentSprite(#fond_base,800,80)
DisplayTransparentSprite(#fond_base,880,80)
DisplayTransparentSprite(#fond_base,960,80)
EndProcedure
;--- Lune ---
Procedure Lune()
CreateSprite(#Lune,360,360,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#Lune))
Circle(178,172,37,RGB(t+255,0,0))
Circle(178,172,36,RGB(Random(255),Random(255),Random(255)))
Circle(180,172,35,RGB(125,155,155))
Circle(228,184,6,RGB(115,115,t+255))
StopDrawing()
If Lune_Posx<-250:Lune_Posx=1024:EndIf
TransparentSpriteColor(#lune,RGB(0,0,0))
DisplayTransparentSprite(#Lune,Lune_Posx,Lune_Posy)
Lune_posx - 1
EndProcedure
;-- piece ---
Procedure pieces()
CreateSprite(#pieces,60,60,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#pieces))
Circle(34,28,15,RGB(255,255,255))
Circle(34,28,14,RGB(155,155,0))
Circle(34,28,12,RGB(155,125,0))
Circle(34,28,8,RGB(155,155,100))
StopDrawing()
EndProcedure
;fenetre base
Procedure Hb()
CreateSprite(#HB,80,80,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#HB))
Box(0,0,80,80,RGB(175,175,175))
Box(0,0,80,3,RGB(125,125,125))
Box(0,0,3,79,RGB(125,125,125))
Box(0,80,80,3,RGB(125,125,125))
Box(77,2,3,79,RGB(125,125,125))
Box(0,78,80,3,RGB(125,125,125))
Box(5,15,70,50,RGB(0,0,0))
Circle(12,9,2,RGB(115,115,115))
Circle(66,9,2,RGB(115,115,115))
Circle(66,70,2,RGB(115,115,115))
Circle(12,70,2,RGB(115,115,115))
StopDrawing()
TransparentSpriteColor(#HB,RGB(0,0,0))
DisplayTransparentSprite(#HB,480,0)
DisplayTransparentSprite(#HB,400,0)
DisplayTransparentSprite(#HB,240,0)
DisplayTransparentSprite(#HB,80,0)
DisplayTransparentSprite(#HB,560,0)
DisplayTransparentSprite(#HB,880,0)
EndProcedure
;--- sas ----
Procedure Sas()
CreateSprite(#sas,80,80,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#sas))
;Box(0,0,100,100,RGB(0,255,255))
Box(0,0,80,80,RGB(175,175,175))
Box(0,0,80,3,RGB(125,125,125))
Box(0,0,3,79,RGB(125,125,125))
Box(0,80,80,3,RGB(125,125,125))
Box(77,2,3,79,RGB(125,125,125))
Box(0,78,80,3,RGB(125,125,125))
Box(5,15,70,50,RGB(125,125,125))
Box(15,25,45,15,RGB(0,0,0))
Box(15,45,45,15,RGB(255,255,115))
Circle(12,9,2,RGB(115,115,115))
Circle(66,9,2,RGB(115,115,115))
Circle(66,70,2,RGB(115,115,115))
Circle(12,70,2,RGB(115,115,115))
StopDrawing()
TransparentSpriteColor(#sas,RGB(0,0,0))
ClipSprite(#sas,0,0,#sas,sas)
DisplayTransparentSprite(#Sas,sas_posx,sas_posy);:DisplayTransparentSprite(#sas,640,0)
If sas>#sas Or sas=<20:sas_variation=-sas_variation:EndIf
EndProcedure
;--- timer oxygene ---
Procedure timer_oxygene()
If ElapsedMilliseconds() - ctime_oxygene > time_oxygene ;timer barre oxygene
ctime_oxygene = ElapsedMilliseconds()
oxygene=oxygene - variation_oxygene
EndIf
EndProcedure
;--- Logo ---
Procedure Affiche_logo()
;o
ZoomSprite(#Sas,16,16)
DisplayTransparentSprite(#Sas,Intro_Posx,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+17,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+34,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+51,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+67,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+67,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+67,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+67,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+17,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+51,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+34,Intro_Posy+264)
;x
DisplayTransparentSprite(#Sas,Intro_Posx+100,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+117,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+134,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+151,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+167,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+184,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+167,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+151,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+134,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+117,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+100,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+184,Intro_Posy+264)
;y
DisplayTransparentSprite(#Sas,Intro_Posx+251,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+284,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+234,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+217,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+217,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+317,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+317,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+300,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+267,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+267,Intro_Posy+264)
;G
DisplayTransparentSprite(#Sas,Intro_Posx+367,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+384,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+400,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+417,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+351,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+351,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+351,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+351,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+367,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+384,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+400,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+417,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+417,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+417,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+384,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+400,Intro_Posy+231)
;E
DisplayTransparentSprite(#Sas,Intro_Posx+468,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+485,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+502,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+451,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+451,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+451,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+519,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+519,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+451,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+468,Intro_Posy+221)
DisplayTransparentSprite(#Sas,Intro_Posx+485,Intro_Posy+221)
DisplayTransparentSprite(#Sas,Intro_Posx+502,Intro_Posy+221)
DisplayTransparentSprite(#Sas,Intro_Posx+519,Intro_Posy+221)
DisplayTransparentSprite(#Sas,Intro_Posx+468,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+485,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+502,Intro_Posy+264)
;N
DisplayTransparentSprite(#Sas,Intro_Posx+555,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+555,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+555,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+555,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+555,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+555,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+571,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+588,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+604,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+620,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+636,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+652,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+652,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+652,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+652,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+652,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+652,Intro_Posy+264)
;E
DisplayTransparentSprite(#Sas,Intro_Posx+700,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+716,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+732,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+748,Intro_Posy+180)
DisplayTransparentSprite(#Sas,Intro_Posx+684,Intro_Posy+197)
DisplayTransparentSprite(#Sas,Intro_Posx+684,Intro_Posy+214)
DisplayTransparentSprite(#Sas,Intro_Posx+684,Intro_Posy+231)
DisplayTransparentSprite(#Sas,Intro_Posx+684,Intro_Posy+248)
DisplayTransparentSprite(#Sas,Intro_Posx+700,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+716,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+732,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+748,Intro_Posy+264)
DisplayTransparentSprite(#Sas,Intro_Posx+700,Intro_Posy+221)
DisplayTransparentSprite(#Sas,Intro_Posx+716,Intro_Posy+221)
DisplayTransparentSprite(#Sas,Intro_Posx+732,Intro_Posy+221)
DisplayTransparentSprite(#Sas,Intro_Posx+748,Intro_Posy+221)
EndProcedure
;--- timer deplacement astronaute
Procedure time_deplacement()
If ElapsedMilliseconds() - ctime_deplacement > time_deplacement
ctime_deplacement = ElapsedMilliseconds()
Astronaute_Posx + 50
If Astronaute_Posx >-50
vies = 1
credits=0
affiche_gameover= #False
Boost_Oxygene = #False
EndIf
If Astronaute_Posx>1000
vies = 0
affiche_gameover=#True
credits = 1
score - 100
Boost_Oxygene=#True
EndIf
If vies=0:aff_oxygene=0:EndIf
EndIf
EndProcedure
;--- collisions ----
Procedure collision()
;si il y a collision entre le sprite astronaute et le ravitaillement.
If SpritePixelCollision(#ravitaillement,ravitaillement_posx,ravitaillement_posy,#astronaute,Astronaute_Posx,Astronaute_Posy)
;on active le boost d'oxygene
Boost_Oxygene=#True
oxygene=oxygene + 1
;on deplace le 2eme astronaute
Vies_Posx +3
score + 5
TransparentSpriteColor(#ravitaillement2,RGB(0,0,0))
ZoomSprite(#ravitaillement2,32,32)
DisplayTransparentSprite(#ravitaillement2,ravitaillement2_posx,ravitaillement2_posy)
EndIf
EndProcedure
;-- dessine etoiles --
Procedure dessine_star()
CreateSprite(#etoile,1,1)
CreateSprite(#etoile2,1,1)
CreateSprite(#etoile3,1,1)
StartDrawing(SpriteOutput(#etoile))
Box(0,0,1,1,$00FFFF)
StopDrawing()
StartDrawing(SpriteOutput(#etoile2))
Box(0,0,1,1,$0033FF)
StopDrawing()
StartDrawing(SpriteOutput(#etoile3))
Box(0,0,1,1,$FFCC00)
StopDrawing()
EndProcedure
;----- init starfield horizontale ---------
Procedure init_star()
Protected i
With stars(i)
For i = 0 To #Nbstar
\Xpos = i*Lstar / #Nbstar
\Ypos = i*Hstar / #Nbstar
\vit=Random(4,2)
\couleur=Random(2,0)
Next
For i = 0 To #Nbstar*5
Swap stars(Random(#Nbstar))\Xpos, stars(Random(#Nbstar))\Xpos
Swap stars(Random(#Nbstar))\Ypos, stars(Random(#Nbstar))\Ypos
Next i
EndWith
EndProcedure
;----------- affiche starfield horizontale ---------
Procedure affiche_star()
Protected i
For i= 0 To #nbstar
DisplayTransparentSprite(stars(i)\couleur,stars(i)\Xpos,stars(i)\Ypos)
stars(i)\Xpos - stars(i)\vit
If stars(i)\Xpos < = 0
stars(i)\Xpos + Lstar
EndIf
Next
EndProcedure
pieces()
dessine_star()
astronaute()
init_star()
SpriteQuality(#PB_Sprite_BilinearFiltering)
;-boucle
Repeat ; 2d
FlipBuffers()
ClearScreen(RGB(0,0,0))
ExamineKeyboard()
; on appelle les procedures
affiche_star()
Lune()
ravitaillement()
ravitaillement2()
collision()
astronaute()
decor_base()
Hb()
sas()
timer_oxygene()
time_deplacement()
newfont()
bg()
;si l'astraunaute sort de l'ecran en x il reapparait à la position de depart - 50 pixels
If Astronaute_Posx>largeur_ecran:Astronaute_Posx=-50:EndIf
;affichage nombre de vie astronaute
If vies=1:credits=0:DisplayTransparentSprite(#astronaute,15,600):EndIf
;si j'ajoute un credit on active le boost d'oxygene et on affiche la piece
If credits=1:oxygene=oxygene+1: DisplayTransparentSprite(#pieces,90,600):EndIf
;si le 2eme astronaute sort de l'ecran en x il revient a la position de depart - 50 pixels
If Vies_Posx>1024:Vies_Posx=-50:EndIf
If Vies_Posx>720:sas=80:base_y+1:sas_posy+1:Else:sas_posy=0:sas=sas-Sas_variation:EndIf
If vies_posx>720:vies_posy +1:Else:base_y=80:EndIf
If vies_posy>520:score+1000:oxygene=300:Vies_Posy=12:vies_posx=10:EndIf
If base_y>600:base_y-1:EndIf
If Vies_Posx>280 And Vies_Posx<720:Affiche_logo():EndIf
Repeat ; fenetre
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event=0
;on quitte si on appuie sur echap ou la croix de la fenetre (ou si le niveau d'oxygene est à 0 modif lihne 535).
Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow ;Or oxygene = 0
End