Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 1919
Réponses : 11
Type : discussion
Etat : réponses autorisées

(Jeu) Mémoriz (Jeu)

S.L le 30/07/2012 à 11:38
J'ai fait un jeu où le but est de mémoriser un nombre qui s'affiche et ensuite de le réécrire. Le score augmente à chaque bonne réponse et vous perdez quand vous mettez une mauvaise réponse.
Toutefois, le jeu n'est pas esthétique mais je ne pense pas qu'il faut l'améliorer de ce coté là bigmouth.gif
Voici le code:

Nom: Mémoriz
Taille: 368 octets
Auteur: S.L

-> : flèche sto
# : signe "différent de" (2nd+Math+2)
Fonctions en français:
Code
PROG:MEMORIZ
:EffEcr
:Menu("****MEMORIZ*****","JOUER",A,"INSTRUCTIONS",B,"CREDITS",C,"QUITTER",D
:Lbl D
:EffEcr
:Stop
:Lbl C
:Disp "GAME BY S.L","(C)2012
:Pause
:Return
:Lbl B
:Disp "MEMORIZ LE","NOMBRE QUI","APPARAIT ET","REECRIS-LE.
:Pause
:Return
:Lbl A
:0->S
:Output(4,6,"PRET?
:Pause
:EffEcr
:Lbl 1
:EffEcr
:entAléat(100000,999999)->A
:30->B
:Lbl 2
:Output(4,6,A
:B-1->B
:If B=0:Goto 3
:Goto 2
:Lbl 3
:EffEcr
:Input "NOMBRE?",C
:If C=A:Then:EffEcr:Disp "BIEN JOUE!
:S+1=S
:Pause
:Goto 1
:End
:If C#A:Then:EffEcr:Disp "ECHEC!","LE NOMBRE ETAIT:",A,"SCORE",S
Samos le 30/07/2012 à 12:45
Code

:Lbl 1
:EffEcr
:entAléat(100000,999999)->A
:30->B
:Lbl 2
:Output(4,6,A
:B-1->B
:If B=0:Goto 3                //////même si B est différent de 0 on va au lbl 3
:Lbl 3                          /////peut-être un goto 2 que tu as oublié
:EffEcr
:Input "NOMBRE?",C
:If C=A:Then:EffEcr:Disp "BIEN JOUE!
:S+1=S
:Pause
:Goto 1
:End
:If C#A:Then:EffEcr:Disp "ECHEC!","LE NOMBRE ETAIT:",A,"SCORE",S[/quote]



Code

:-1->S
:EffVar C
:0
:While C=Rep
:S+1->S
:Pause "PRET?
:EffEcr
:entAléat(100000,999999
:For(A,0,30
:Output(4,6,rep
:End
:EffEcr
:Input "NOMBRE?",C
:If C=rep
:Disp "BIEN JOUE!
:End
:Disp "ECHEC!","LE NOMBRE ETAIT:",Rep,"SCORE:",S

Voila j'ai essayé de l'optimiser mais ce n'est pas sur qu'il prenne moin d'octets godgrace.gif
snap le 30/07/2012 à 12:50
Samsam, je ne sais pas si tu as testé ton code, mais je ne pense pas qu'il marche car la :

Code
:Input "NOMBRE?",C
:If C=rep


Normalement rép prend la valeur que tu viens de donner à C donc tu gagne tout le temps.
Samos le 30/07/2012 à 12:57
J'ai essayé ça avant de poster! je ne suis pas suicidaire non plus!
Code

:0
:DelVar C
:While C=Ans
:RandInt(1,10
:Disp ans
:Input C
:Disp Ans
:End

Et la calto m'affichait toujours la valeur de rand
snap le 30/07/2012 à 13:09
Ah, désolé, autant pour moi^^

Dans ton code, on peux quand même changer quelques trucs genre le while qui se transforme en repeat te permet de retirer le 0 juste avant et le EffVar C :

Code
:-1->S
:Repeat C=/=Rep
:S+1->S
:If S : Disp "BIEN JOUE !        <-- Prend moins de place :D
:Pause "PRET?
:EffEcr
:entAléat(E5,999999
:For(A,0,30
:Output(4,6,rep
:End
:EffEcr
:Input "NOMBRE?",C
:End
:Disp "ECHEC!","LE NOMBRE ETAIT:",Rep,"SCORE:
:S              <-- permet d'enlever un guillemet et une virgule
The K le 30/07/2012 à 13:29
999999 = E6-1

A moins que E6-1 soit considéré comme E5. Je ne sais pas !
snap le 30/07/2012 à 13:34
:p J'y avais même pas pensé. Non, E6-1 est bien égal à 999999, c'est x10^(6-1) qui est égal à E5
S.L le 30/07/2012 à 14:37
@samsam: Oui j'avais bien oublier un Goto 2 angry.gif
linkakro le 30/07/2012 à 15:40
Si le For est une temporisation, il est innutile de placer le output à l'intérieur puisque ce output affiche un unique nombre à chaque tour de jeu.
Code
EffVar SRepeat C-Rep // EffVar S est léger et C-Rép est plus simple
If S : Disp "BIEN JOUE !
S+1->S // il suffisait d'intervertir les lignes pour se passer du -1->S
Pause "PRET?
EffEcr
entAléat(E5,999999
Output(4,6,Rép
For(A,1,30 // j'ai sortit la boucle
End
EffEcr
Input "NOMBRE?",C
End
Disp "ECHEC!","LE NOMBRE ETAIT:",Rep,"SCORE:
S
Quand j'ai extrait output de la temporisation, je voulais me débarrasser de Rép et faire plus propre.
Puis je me suis aperçu que le Repeat C-Rép se sert de Rép, et je sais que Output ne modifie pas Rép.

EDIT: augmentez le nombre de la boucle For pour augmenter la durée d'affichage.
snap le 30/07/2012 à 15:46
Je pense que ce qu'il voulait faire c'était mettre du temps pour que l'on se souvienne du nombre. La dans ton code sa change tout, il faut se rappeler du dernier nombre que l'on voit 1/4 de seconde :p
linkakro le 30/07/2012 à 16:03
Je me suis d'abord basé sur le dernier programme posté, qui correspond assez bien au programme original excepté pour les menus.
Si le timing est trop court, ce n'est pas mon problème. C'était ainsi dans le code original, malgré une lenteur accrue par des défauts d'optimisation.
S.L le 30/07/2012 à 16:04
snap a écrit :
Je pense que ce qu'il voulait faire c'était mettre du temps pour que l'on se souvienne du nombre.

C'est tout à fait ça laugh.gif