Poster un nouveau sujet Poster une réponse
Jeu du PLUS/MOINS
Auteur Message
Metalmaniaxx



Autorisation : Membre
Nb de messages : 2
Inscrit le : Mar 23 Mai 2017, 10:23
Posté le : Mar 23 Mai 2017, 10:50   Citer 

Bonjour,
j'ai fait un programme sur ma TI83 pour le jeu du plus ou du moins, je suis ouvert à toute critique, tant qu'elle est constructive.
Enjoy !


Code
ClrHome
Disp "ENTRER UN NOMBRE"
Disp "ENTRE 1 ET 1000"
Disp "VOUS AVEZ 10"
Disp "ESSAIS"
randInt(1,1000)->N
0->A
0->I
While A=0 and I =!10 //Je n'ai pas trouvé le symbole "différent" sur clavier
Input "NOMBRE :",P
If P=N
Then
1->A
Else
If P>N
Then
Disp "C EST MOINS"
Else
Disp "C EST PLUS"
End
End
I+1->I
End
If I<10
Then
Disp "BRAVO",N
Disp "NBRE ESSAIS",I
Else
Disp "PERDU"
Disp "LE NOMBRE A"
Disp "DEVINER ETAIT",N



----------------------
Metalmaniaxx
 Adresse email Haut de page Bas de page 
 
Homer_Dalor



Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Mar 23 Mai 2017, 11:46   Citer 

Salut à toi !

Aaaah, le plus ou moins <3 LE premier programme à faire quand on se lance :3
Ca me rappelle tellement de souvenirs happy.gif

Bref, pour progresser, rien de mieux que de montrer son travail aux gens et d'attendre les critiques, ainsi que les améliorations ! Je commence donc.
(Si jamais il y a quelque chose que j'explique mal, n'hésite pas à me redemander <3)


Code
Disp "ENTRER UN NOMBRE"
Disp "ENTRE 1 ET 1000"
Disp "VOUS AVEZ 10"
Disp "ESSAIS"



Il faut savoir que tu peux tout mettre dans un seul Disp, en séprant tes phrases avec une virgule. De plus, à la fin d'une ligne ou avant un sto (->) Tu n'as pas besoin de fermer les guillemets ou de fermer une parenthèse.
Le code sera donc ici :


Code
Disp "ENTRER UN NOMBRE","ENTRE 1 ET 1000","VOUS AVEZ 10","ESSAIS



********************************************************


Code
randInt(1,1000)->N
0->A
0->I



Ici, tu peux remplacer les "0->Variable" par "Effvar Variable, sachant qu'après cette ligne tu n'as pas besoin de passer une ligne, tu peux tout simplement mettre directement à la suite la prochaine. (Fais tout de même attention avec un début de boucle, ça peut faire n'importe quoi. Ici donc ton code donnera :


Code
EffVar AEFFvar IrandInt(1,1000->N   //toujours la parenthèse qu'on peut enlever avant un sto (->)



**********************************************************


Code
While A=0 and I =!10 //Je n'ai pas trouvé le symbole "différent" sur clavier



Pourquoi au lieu d'utiliser la variable A, tu ne lui demande pas tout simplement "Si P=N"?
Il y a une fonction qui permet de lire une fois la boucle avant de regarder la condition d'arrêt. Cette fonction s'appelle Repeat. Pour savoir quoi mettre dedans, il faut se dire : "La fonction Répète le code jusqu'à ce que..." Donc ici, ce ne sera pas "tant que", "P!=N and I =!10" devient donc "P=N ou I =10".
Du coup, pas besoin de variable A, ni d'initialiser la Variable P. Le début de ton code devient donc :


Code
ClrHome
Disp "ENTRER UN NOMBRE","ENTRE 1 ET 1000","VOUS AVEZ 10","ESSAIS
EffVar IrandInt(1,1000->N
Repeat P=N or I =10



******************************************************************


Code
If P=N
Then
1->A
Else
If P>N
Then
Disp "C EST MOINS"
Else
Disp "C EST PLUS"
End
End



Ici, il faut savoir qu'après un If, tu n'as pas besoin de Then et End si il n'y a qu'une seule ligne à executer.
Du coup, le code devient, en enlevant aussi le If P=N vu qu'on l'a mis dans la boucle Repeat winkle.gif :


Code
If P>N
Disp "C'EST MOINS
If P<N
Disp "C'EST PLUS




************************************************************

Pour la fin de ton programme, attention, tu n'as pas mis de End pour fermer le If/then, ici ça ne posera pas de problème comme c'est la fin du programme, mais ça peut gêner si tu commences à le modifier, par exemple en mettant un menu winkle.gif

Tu peux comme avant rassembler les Disp :


Code

If I<10
Then
Disp "BRAVO",N,"NBRE ESSAIS",I
Else
Disp "PERDU","LE NOMBRE A","DEVINER ETAIT",N
End



************************************************************

Au final le code entier ressemble à ceci :


Code
ClrHome
Disp "ENTRER UN NOMBRE","ENTRE 1 ET 1000","VOUS AVEZ 10","ESSAIS
EFFvar IrandInt(1,1000->N
Repeat P=N or I =10
Input "NOMBRE :",P
If P>N
Disp "C'EST MOINS
If P<N
Disp "C'EST PLUS
I+1->I
End
If I<10
Then
Disp "BRAVO",N,"NBRE ESSAIS",I
Else
Disp "PERDU","LE NOMBRE A","DEVINER ETAIT",N
End




Voilà voilà, j'espère t'avoir appris quelques techniques pour commencer, n'hésite pas à améliorer ton programme, rajouter un menu, demander au joueur entre quel nombre et quel nombre il veut rechercher, mettre un menu Facile, moyen difficile, avec un nombre plus grand et/ou moins de vie, etc winkle.gif
Et hésite pas non plus à poster tes programmes sur le forum <3

 Adresse email Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mar 23 Mai 2017, 23:59   Citer 

Tu as juste oublié l'incrémentation de I, sinon l'algorithme ne se termine pas. Sinon ok pour l'optimisation

----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
Homer_Dalor



Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Mer 24 Mai 2017, 0:31   Citer 

Oups, effectivement, je me suis pas relu sur le code^^

C'est corrigé :3 <3

 Adresse email Haut de page Bas de page 
 
Ruadh



Autorisation : Membre
Nb de messages : 30
Inscrit le : Ven 06 Nov 2015, 14:08
Posté le : Sam 01 Juil 2017, 14:17   Citer 

Je remonte un peu le sujet, mais il y a une erreur dans le code d'Homer_Dalor. Si on trouve le nombre au dixième essai, on obtient "perdu". Pour corriger ça, il faut remplacer cette ligne :


Code
If I<10



par celle-là :


Code
If N=P



 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 9 requêtes