;--Dessin du texte pour le score
CreateSprite(#TexteScore,180,50,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#TexteScore))
DrawingFont(gFont)
DrawText(0,10,"SCORE : "+gScore,RGBA(255,255,255,255),RGBA(0,0,0,0));
StopDrawing()
;--Dessin du texte pour la vie
CreateSprite(#TexteLives,450,50,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#TexteLives))
DrawingFont(gFont)
DrawText(10,10,"VIES : "+gVies,RGBA(255,255,255,255),RGBA(0,0,0,0));
StopDrawing()
;---Boucle principale du programme
Tu dois réécrire dans ton sprite à chaque fois que tes variables changent, dans ta boucle , le mieux c'est appel de procédure ; mais à ta place, je créerai un sprite pour les nombres scores et un autre pour les nombres vies, plutôt que de réécrire à chaque fois "SCORE : xxx" et "VIES : y".
Code : Tout sélectionner
;-- Initilisation
EnableExplicit
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("Erreur", "Impossible d'initialiser le programme ")
End
EndIf
;---Constantes
Enumeration Window
#Main_Form
EndEnumeration
Enumeration Sprite
#TexteScore
#TexteLives
#ValScore
#ValLives
#funSprite
EndEnumeration
;---Variables Globale
Global gEvent,gWidth=800,gHeight=600,gScore=0,gVies=15,gFont,simScore=0, time1,time2,sx=Int(gWidth/2),sy=Int(gHeight/2),px=-5,py=5
;---Création de la surface du jeu
OpenWindow(#Main_Form,0,0,gWidth,gHeight,"Game test ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Form),0,0,gWidth,gHeight)
;
;---Chargement de la police pour les textes
gFont = LoadFont(0, "Arial", 18, #PB_Font_Bold )
;--Dessin du texte pour le score
Procedure spritesFixes()
CreateSprite(#TexteScore,180,50,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#TexteScore))
DrawingFont(gFont)
DrawText(0,10,"SCORE : ",RGBA(255,255,255,255),RGBA(0,0,0,0));
StopDrawing()
;--Dessin du texte pour la vie
CreateSprite(#TexteLives,450,50,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#TexteLives))
DrawingFont(gFont)
DrawText(10,10,"VIES : ",RGBA(255,255,255,255),RGBA(0,0,0,0));
StopDrawing()
;--Dessin sprite pour le fun
CreateSprite(#funSprite,100,100,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#funSprite))
Circle(50,50,49,RGBA(255,0,0,255))
Ellipse(50,50,10,46,RGBA(255,128,0,255))
StopDrawing()
EndProcedure
Procedure spritesVariables(valeurScore.i,valeurVies.i)
; Score
CreateSprite(#ValScore,180,50,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#ValScore))
DrawingFont(gFont)
DrawText(0,10,RSet(Str(valeurScore),5,"0"),RGBA(255,255,255,255),RGBA(0,0,0,0));
StopDrawing()
;--Dessin du texte pour la vie
CreateSprite(#ValLives,450,50,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#ValLives))
DrawingFont(gFont)
DrawText(10,10,RSet(Str(valeurVies),2,"0"),RGBA(255,255,255,255),RGBA(0,0,0,0));
StopDrawing()
; NB : Rset sert à "formater" le texte avec les zéros non significatifs (ex 00012)
EndProcedure
;---Boucle principale du programme
; /****************************************/
; /* Initialisation de départ des sprites */
; /* les "Fixes" et les "Variables" */
; /****************************************/
spritesFixes()
spritesVariables(gScore,gVies)
time1=ElapsedMilliseconds()
Repeat
Repeat
gEvent = WindowEvent()
Select gEvent
Case #PB_Event_CloseWindow
End
EndSelect
Until gEvent=0
; Simulation de changement de valeur pour les vies et les scores
; changer les valeurs toutes les quarts de secondes
time2=ElapsedMilliseconds()
If (time2-time1) >= 250
; changer les valeurs des vies et des scores
gVies-1 ; équivalent à gVies = gVies-1
gScore+1; équivalent à gScore = gScore+1
If gVies < 0
gVies=15
EndIf
If gScore > 99999
gScore=0
EndIf
; recréer les sprites
spritesVariables(gScore,gVies)
time1=ElapsedMilliseconds()
EndIf
;---Partie pour la 2D
ClearScreen(RGB(0,0,0))
;---Affichage du texte Score et du texte Lives
DisplayTransparentSprite(#TexteScore, 20, 10)
DisplayTransparentSprite(#ValScore, 120, 10)
DisplayTransparentSprite(#TexteLives, 580, 10)
DisplayTransparentSprite(#ValLives, 680, 10)
; sprite pour le fun
sx+px
sy+py
If sx<=1 Or sx=>gWidth-100
px*-1
EndIf
If sy<=1 Or sy=>gHeight-100
py*-1
EndIf
DisplayTransparentSprite(#funSprite, sx, sy)
ExamineKeyboard()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)