Page 1 sur 3

zone de texte temps réel dans un jeu !

Publié : jeu. 26/juil./2007 0:16
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

Publié : jeu. 26/juil./2007 6:41
par Backup
...........

Publié : jeu. 26/juil./2007 9:16
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: )

Publié : jeu. 26/juil./2007 9:21
par Crystal Noir
j'aime pas les fonctions goto :D

Publié : jeu. 26/juil./2007 10:06
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é ! :)

Publié : jeu. 26/juil./2007 10:20
par Crystal Noir
bof, c'est surtout les fondements d'un bordel montrueux dans un gros programme. :D

Publié : jeu. 26/juil./2007 10:46
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:

Publié : jeu. 26/juil./2007 11:19
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

Publié : jeu. 26/juil./2007 13:57
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

Publié : jeu. 26/juil./2007 14:44
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 ?

Publié : jeu. 26/juil./2007 15:02
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

Publié : jeu. 26/juil./2007 15:12
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

Publié : jeu. 26/juil./2007 15:13
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:

Publié : jeu. 26/juil./2007 15:39
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:

Publié : jeu. 26/juil./2007 15:41
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: