Forum

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

Un jeu où il faut trouver un nombre.

JarasimTI82 le 05/10/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 winkle.gif
linkakro le 05/10/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.
https://tout82.pages-perso.fre[...].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.
polo le 30/10/2015 à 15:59
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...)
Mingerton le 30/10/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