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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

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

Message 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) 
Dernière modification par Bernie le jeu. 14/avr./2016 6:30, modifié 1 fois.
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message 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




@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

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

Message par SPH »

Code : Tout sélectionner

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

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

Message par Bernie »

Merci à vous 2
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

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

Message 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) 
Image
Image
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

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

Message 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) 
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

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

Message 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:
Image
Image
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

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

Message par Bernie »

Merci à tous
Répondre