Page 1 sur 1

[OK]Comment afficher la valeur d'une variable avec drawTEXT?

Publié : mer. 13/avr./2016 16:38
par Bernie
Bonjour

je souhaite afficher le score et la vie dans mon code , j"ai crée 2 sprites pour afficher le texte SCORE et VIES et j'ai crée 2 variables mais après je sais pas comment faire pour afficher la valeur de ces 2 variables, je veux afficher au départ SCORE :0 et VIES : 4
comment récupérer la valeur de ces 2 variables ?
merci d'avance

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
EndEnumeration
;---Variables Globale 
Global gEvent,gWidth=800,gHeight=600,gScore=0,gVies=4,gFont

;---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
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()
;---Boucle principale du programme

Repeat
  Repeat
    gEvent = WindowEvent()
    Select gEvent
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until gEvent=0
  ;---Partie pour la 2D 
  ClearScreen(RGB(0,0,0))
  ;---Affichage du texte Score et du texte Lives
  DisplayTransparentSprite(#TexteScore, 20, 10)
  DisplayTransparentSprite(#TexteLives, 580, 10)
  ExamineKeyboard()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) 

Re: Comment afficher la valeur d'une variable avec drawTEXT?

Publié : mer. 13/avr./2016 19:30
par venom
C'est simple. Si par exemple tu te fait toucher par un ennemi:

Tu fait dans ton code après un spritecollision par exemple

gVies=gVies-1

Et gVies sera égale à 3.

Pareil pour les score dans l'autre sens.

gScore=gScore+1

regarde sur le code de mon pong au début j'ai déclarer sa :

ScoreGaucheDemarrage = 0
ScoreDroiteDemarrage = 0

et quand la balle touche le mur :

ScoreGaucheDemarrage = ScoreGaucheDemarrage+1
ScoreDroiteDemarrage = ScoreDroiteDemarrage+1




@++

Re: Comment afficher la valeur d'une variable avec drawTEXT?

Publié : mer. 13/avr./2016 20:33
par SPH

Code : Tout sélectionner

DrawText(10,10,"VIES : "+Str(vie),RGBA(255,255,255,255),RGBA(0,0,0,0));

Re: Comment afficher la valeur d'une variable avec drawTEXT?

Publié : jeu. 14/avr./2016 6:29
par Bernie
Merci à vous 2

Re: Comment afficher la valeur d'une variable avec drawTEXT?

Publié : jeu. 14/avr./2016 8:53
par TazNormand
Tu ajoutes +gVies/+gScore à ton DrawText :
;--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".

Pour le fun :

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) 

Re: [OK]Comment afficher la valeur d'une variable avec drawT

Publié : jeu. 14/avr./2016 8:59
par Ar-S
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".
+1

Re: [OK]Comment afficher la valeur d'une variable avec drawT

Publié : jeu. 14/avr./2016 9:20
par Bernie
Merci Taz
si j'ai bien compris quand je change d'abord la valeur de la variable Scoreet j'appelle ensuite la procedure

Code : Tout sélectionner

SpritesVariables(gScore,gVies) 

Re: [OK]Comment afficher la valeur d'une variable avec drawT

Publié : jeu. 14/avr./2016 10:37
par Ar-S
Petite ajout dans le code de taz pour le spritefun afin d'obtenir le rond sans le carré noir.

Dans la procédure spritesFixes()

Code : Tout sélectionner

  ;--Dessin sprite pour le fun
  CreateSprite(#funSprite,100,100,#PB_Sprite_AlphaBlending)
  StartDrawing(SpriteOutput(#funSprite)) 
; -------------------------- Mode de dessin gérant la transparance  
DrawingMode(#PB_2DDrawing_AllChannels)
; -------------------------- Dessin d'une boite noire
  Box(0,0,100,100,$0)

  Circle(50,50,49,RGBA(255,0,0,255))
  Ellipse(50,50,10,46,RGBA(255,128,0,255))
  StopDrawing()

Re: [OK]Comment afficher la valeur d'une variable avec drawT

Publié : jeu. 14/avr./2016 11:54
par TazNormand
@Bernie : oui, car la procédure recrée le sprite avec les nouvelles valeurs de score

@ Ar-S : Merci, j'avais zoublié le DrawingMode(), et comme le fond était noir et que je ne suis pas resté plus de 3 secondes à regarder, j'ai pas vu le fond noir :oops:

Re: [OK]Comment afficher la valeur d'une variable avec drawT

Publié : jeu. 14/avr./2016 14:51
par Bernie
Merci à tous