zone de texte temps réel dans un jeu !

Programmation avancée de jeux en PureBasic
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

zone de texte temps réel dans un jeu !

Message par Mytic »

Voilà une petite astuce à améliorer pour crée une zone de texte dans votre application comme le Input de la Consol Dos mais sans arrêter l’exécution du programme. :)

Je l’ai crée en quelques minutes que pour donner l’exemple, donc c’est à améliorer.
Voilà le Code :

Code : Tout sélectionner

InitScreen()
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,300,300,"")
OpenWindowedScreen(WindowID(0),0,0,300,300,0,0,0)
Procedure zone_texte(x.l,y.l,couleur.l)
Static texte$,Start
If start = 0
start = 1
CreateSprite(0,600,40)
EndIf
ExamineKeyboard()
t$ = KeyboardInkey()
If KeyboardPushed(#PB_Key_Back)
texte$ = Left(texte$,Len(texte$)-1)
Delay(50)
Goto 1t
EndIf
If t$ <> ""
texte$ = texte$ + t$
EndIf
1t:
StartDrawing(SpriteOutput(0))
Circle(0,0,2000,0)
DrawText(x,y,texte$,couleur,0)
StopDrawing()
DisplaySprite(0,x,y)
EndProcedure

CreateSprite(1,600,600)
Procedure fon()
   StartDrawing(SpriteOutput(1))
      xc = 1
      yc = 1
      For Rayon = 400 To 10 Step -10
        Circle(xc, yc, rayon ,RGB(Random(255),Random(255),Random(255)))
      Next Rayon
      StopDrawing() 
      DisplaySprite(1,0,0)
EndProcedure


Repeat
fon()

zone_texte(10,10,255)
FlipBuffers()

Event = WindowEvent() 
Until event = #PB_Event_CloseWindow
Si quelqu’un a une astuce meilleur elle sera la bienvenu, car dans ma technique y’a un petit problème avec le Delay() , il ralentit le programme quand vous cliquez sur la touche effacer , mais si je l’enlève , l’effacement devient très rapide. 8O
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

...........
Dernière modification par Backup le mar. 19/août/2014 13:33, modifié 2 fois.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

La solution de Dobro est celle que j'utiliserais...

Par contre vous utilisez tout les deux la fonction Goto... (Dobro, ta fumé quelque chose aujourd'hui ? :lol: )
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

j'aime pas les fonctions goto :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

wolfjeremy a écrit :La solution de Dobro est celle que j'utiliserais...

Par contre vous utilisez tout les deux la fonction Goto... (Dobro, ta fumé quelque chose aujourd'hui ? :lol: )
j'ai utilisé son code !!


pis moi j'aime bien les goto !!
c'est le fondement des Basics !! :D

toutefois , tu as raison, ce Goto ,e sert a rien ; il suffisait de le retirer ! :D
j'ai corrigé ! :)
Dernière modification par Backup le jeu. 26/juil./2007 10:24, modifié 1 fois.
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

bof, c'est surtout les fondements d'un bordel montrueux dans un gros programme. :D
hackotedelaplaque
Messages : 121
Inscription : mer. 21/janv./2004 22:18

Message par hackotedelaplaque »

Dobro a raison, un BASIC sans GOTO ce n'est plus un vrai BASIC.
C'est comme Roméo sans Juliette, une rose sans parfum ou une biture sans ivresse ! :lol:

Code : Tout sélectionner

5 CLS
10 PRINT "GOTO POOWWERR !!"
20 GOTO 10
:twisted:
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Crystal Noir a écrit :bof, c'est surtout les fondements d'un bordel montrueux dans un gros programme. :D
non! en fait pas vraiment lorsqu'il est employé avec parcimonie

par exemple pour sauter un petite partie de code , je le trouve indispensable
personnellement je l'emploi assez souvent !
toujours pour des sauts Court (max 10-15 ligne) , jamais plus !

équivalent du JUMP en assembleur, nous serions bien embêté sans lui !!

pour ne pas confondre avec une autre variable, je l'emploi avec des nom de label , sans équivoque !!
exemple


ztrzrt :

goto ztrzrt

comme ça je ne peut pas le confondre avec autre chose !!
puisque "ztrzrt" ne signifie rien ! :)

c'est un tres vieux débat, le Goto , a l'époque nous commencions a parler du language C , sur Atari,
je me souviens que l'on se foutais de nous (les programmeur en C, snobiste) parce que nous avions des Goto dans nos prg
la programmation "Spaghettis" que cela s'appelait !!
n'empêche qu'avec un Goto bien placé (souvent dans des conditions), on évite quelque fois, bien des lignes de programme ! :)

il y a les partisans du pour, et du contre , comme souvent ! :D
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

nianiania goto machin alors c ou machin ha c'est la nianianai goto bidule, merde faut remonter...

pfff beurk j'ai horreur de cela, mais bon les égouts et les couleurs hein :D

moi je l'emplois jamais mais bon je dis pas pourquoi pas une fois ou deux mais faire des boucles qu'avec ca là c'est du grand bordel :D
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Au fait ! j'ai 2 petites questions :?

=>y'a t'il une différence si la procédure et avant ou après sont appel ?
ex :
procedure a()
….
Endprocedure
a()

OU

a()
procedure a()
….
Endprocedure


=> et est-ce que les Onerror ralentissent le programme pour surveiller les erreurs en temps réel ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Mytic a écrit :Au fait ! j'ai 2 petites questions :?

=>y'a t'il une différence si la procédure et avant ou après sont appel ?
oui d'ordre esthétique !! :D

moi je prefere les procedures en bas du listing
pour moi le haut d'un listing est reservé au Declarations de toutes sorte

ensuite prg

et a la fin , data, procedure, sous-prg !!

voila, mais chacun fait comme il veux !! :D
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

je vois , :D merci

une autre question :oops: ! le Onerror ne marche pas chez moi ?
c'est normal ?!!

Code : Tout sélectionner

Procedure erreur()
MessageRequester("info","erreeeeeeeuuuuuuuuuuuur")
EndProcedure

OnErrorGosub(@erreur)

a = a / 0
hackotedelaplaque
Messages : 121
Inscription : mer. 21/janv./2004 22:18

Message par hackotedelaplaque »

moi je prefere les procedures en bas du listing
pour moi le haut d'un listing est reservé au Declarations de toutes sorte

ensuite prg

et a la fin , data, procedure, sous-prg !!
Sans oublier la partie label pour les GOTO :jesors:
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

hackotedelaplaque a écrit : Sans oublier la partie label pour les GOTO :jesors:
ben non les label ça se mets n'importe ou, en bordel !
c'est ça les joies de la programmation Basic , elle est faite pour les rebels !! :lol:
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

je vois , :D merci

une autre question :oops: ! le Onerror ne marche pas chez moi ?
c'est normal ?!!

Code : Tout sélectionner

Procedure erreur()
MessageRequester("info","erreeeeeeeuuuuuuuuuuuur")
EndProcedure

OnErrorGosub(@erreur)

a = a / 0
c'est vraiment urgent :cry:
Répondre