Autorisation : Membre
Nb de messages : 1
Inscrit le : Dim 05 Oct 2014, 15:17
Posté le : Dim 05 Oct 2014, 15:53
Vous cherchez un jeu facile à recopier et qui fait passer le temps? Ce jeu est fait pour vous!
Le principe: la calculatrice créé un nombre et votre but est de le trouver. Le miens contient 3 niveaux et un compteur de coups!
Code: 0=zero, O=o majuscule, ->=stocker dans
Le programme:
Code
PROGRAM:FINDIT
:0->B
:Disp"NIVEAU: 1)FACILE"
:Disp" 2)MOYEN 3)DUR"
:Prompt L //on demande au joueur de choisir le level
:If L=1
:Then
:Disp"ENTRE UN NOMBRE"
:Disp"ENTRE 1 ET 10"
:entAléat(1,10)->A
:Goto Z
:Else
:If L=2
:Then
:Disp"ENTRE UN NOMBRE"
:Disp"ENTRE 1 ET 100"
:entAléat(1,100)->A
:Goto Z
:Else
:If L=3
:Then
:Disp"ENTRE UN NOMBRE"
:Disp"ENTRE 1 ET 1000"
:entAléat(1,1000)->A
:Goto Z
:Lbl Z
:Prompt N
:If N>A
:Then
:Disp "C EST MOINS"
:B+1->B //le compteur de tours
:Goto Z
:Else
:If N<A
:Then
:Disp"C EST PLUS"
:B+1->B
:Goto Z
:Else
:If N=A
:Then
:B+1->B
:Disp"****************" //16 * et * est le signe x
:Disp" GAGNE!"
:Disp B," COUPS"
:Disp" C ETAIT:",A
Voila, n'hésitez pas à l'améliorer et a le poster pour que ce jeu
Soit une oeuvre collective
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 05 Oct 2014, 17:36
J'ai ajouté une paire de balises code. Utilises-en la prochaine fois.
Encore ce jeu. Et je l'optimiserai encore. Il y a aussi une erreur cette fois ci.
Si tu utilisais une autre variable que la lettre O, alors tu n'aurais plus besoin de montrer la différence entre o et zéro.
Ton usage de Goto Z est incompatible avec l'algorithmie. http://tout82.free.fr/forum/sujet.php?sujet=2757
Le système sature progressivement. C'est tolérable dans une certaine limite mais moins on abuse et mieux c'est.
Placer l'un derrière l'autre Goto Z et Lbl Z est inutile. Le dernier Lbl Z peut être lu sans le Goto Z juste avant.
Les branchements/alternatives se font de cette manière. Les espaces d'indentation au début de lignes ne sont qu'esthétiques pour mieux relire sur le forum.
Code
If condition
Then
// cas 1
Else
If condition 2
Then
// cas 2
Else
// par défaut
End
End
//une seule action dedans
If condition
Disp "1 ACTION"
Lorsque tu soumets Goto à une condition, arrange toi autant que possible pour que ce soit avec un If mais aucun Then/Else/End. Ainsi il n'y a pas de ralentissement.
Code
:0->B
:Disp"NIVEAU: 1)FACILE"
:Disp" 2)MOYEN 3)DUR"
:Prompt L //on demande au joueur de choisir le level
:If L=1
:Then
:Disp"ENTRE UN NOMBRE"
:Disp"ENTRE 1 ET 10"
:entAléat(1,10)->A
:Else
:If L=2
:Then
:Disp"ENTRE UN NOMBRE"
:Disp"ENTRE 1 ET 100"
:entAléat(1,100)->A
:Else
:If L=3
:Then
:Disp"ENTRE UN NOMBRE"
:Disp"ENTRE 1 ET 1000"
:entAléat(1,1000)->A
:Else
:Disp "ERREUR"
:Stop
:End
:End
:End
:Lbl Z
:Prompt N
:If N>A
:Then
:Disp "C EST MOINS"
:B+1->B //le compteur de tours
:End
:If N<A
:Then
:Disp "C EST PLUS"
:B+1->B
:End
:If N=A
:Then
:B+1->B
:Disp"****************" //16 * et * est le signe x
:Disp" GAGNE!"
:Disp B," COUPS"
:Disp" C ETAIT:",A
:Stop
:End
:Goto Z
Code
:EffEcr // efface l'écran, ainsi je sais quelle ordonnée donner au Output
:0->B
:Disp"NIVEAU: 1)FACILE"
:Disp" 2)MOYEN 3)DUR"
:Prompt L
:Disp"ENTRE UN NOMBRE"
:Disp"ENTRE 1 ET"
:Output(4,12,10^L) // calculer la borne avec le niveau et afficher
:entAléat(1,10^L)->A
:Repeat N=A
:Prompt N
:If N>A
:Disp "C EST MOINS"
:If N<A
:Disp "C EST PLUS"
:B+1->B // maintenant compte tout le temps y compris au tour gagnant
:End
:B+1->B
:Disp"****************"
:Disp" GAGNE!"
:Disp B," COUPS"
:Disp" C'ETAIT:",A // apostrophe dans le menu angle
Ensuite enlève les guillemets et parenthèses en fin de ligne et devant sto->, ce sera toujours fonctionnel mais allégé malgré la perte de rigueur.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
voici comment je l'ai décliné pour mes élèves (je leur ai donné ce travail à faire en DM pendant les vacances
Code
PrgmMYSTERE
:EffEcr // efface l'écran, ainsi je sais quelle ordonnée donner au Output
:0->B
:Disp"L'ENTIER MYSTERE" // apostrophe dans le menu angle
:Disp"NIVEAU :"
:Disp"1)FACILE"
:Disp" 2)MOYEN"
:Disp" 3)DIFFICILE"
:Input "CHOIX ",L
:EffEcr // efface l'écran
10^(L+1)->M // calculer la borne avec le niveau et afficher
:Disp"ENTRE UN ENTIER"
:Disp"DE 1 A ", M
:Disp"----------------" // 16 signes "-"
:entAléat(1,M)->A
:Repeat N=A
:Input "NOMBRE ",N
:B+1->B // maintenant compte tout le temps y compris au tour gagnant
:If N>A
:Then
:Disp "TROP GRAND !"
:End
:If N<A
:Then
:Disp "TROP PETIT !"
:End
:End
:Disp"----------------" // 16 signes "-"
:Disp"GAGNE !"
:Disp "EN ",B," COUPS"
:Disp" C'ETAIT :" ,A // apostrophe dans le menu angle
Je dois encore sécuriser le choix du niveau (on doit ne pas pouvoir saisir autre chose que 1, 2 ou 3...)
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Ven 30 Oct 2015, 17:44
Tu peux simplifier en :
Code
ClrHome
DelVar BDisp "L'ENTIER MYSTERE","NIVEAU :","1)FACILE","2)MOYEN","3)DIFFICILE
Input "CHOIX:",L
ClrHome
E(L+1->M //le E de l'exposant, sur le clavier
Disp "ENTRE UN ENTIER
Input "DE 1 A ",M
Disp "----------------
randInt(1,M->A
Repeat N=A
Input "NOMBRE:",N
B+1->B
If N>A
Disp "TROP GRAND !
If N<A
Disp "TROP PETIT !
End
Disp "----------------","GAGNE !","EN",B,"COUPS","C'ETAIT",A