Programmation TI-82: rendre intelligent
Tofu-goutte
Messages postés
24
Statut
Membre
-
Tofu-goutte Messages postés 24 Statut Membre -
Tofu-goutte Messages postés 24 Statut Membre -
Bonjour à tous !!
J'ai une calculatrice TI-82 Stats.fr et j'ai créé un jeu d'allumettes (que j'ai trouvé sur Internet). Le but du jeu est de prendre entre 1 et 6 allumettes (26 allumettes au total) sans prendre la dernière.
Le programme à la fin de ce message.
J'aimerais arranger ce jeu ainsi:
-Avoir au total 15 allumettes (et non 26) et pouvoir enlever 1 à 3 allumettes (et non de 1 à 6).
Vous remarquerez que d'après le programme:
:entAléat(1,6)?E
:Outpout(1,1,"L'ordinateur en:")
:Outpout(2,10,E)
l'ordinateur enlève aléatoirement les allumettes. Il est donc quasiment impossible de perdre contre lui.
-J'aimerais le rendre "intelligent": il doit enlever la 2, 6, 10 et 14ème allumettes. Exemple: si le joueur prend 4 allumettes, il devra en prendre 2 (4+2=6).
Malheureusement je ne sais pas comment faire pour faire ces deux modifications. Pourriez-vous m'aider ?? Merci ;)
Voici le programme:
_____________________________________________________________________
:EffEcr
:EffDessin
:Texte(20,17, "Jeu des allumettes"
:Texte(26,35,"by Lancelot")
:Pause
:EffDessin
:EffEcr
:Lbl 02
:Menu("Menu principale","jouer",04,"regles",03,"quitter",09)
:Lbl 03
:EffDessin
:Texte(0,0,"Regles du jeu:")
:Texte(6,0,"Enlevez entre 1 et 6")
:Texte(12,0,"allumettes sans prendre")
:Texte(18,0,"la dernière.")
:Pause
:Goto 02
:Lbl 04
:Menu("Nombre de joueurs","un",41,"deux",42)
:Lbl 41
:1->J
:Goto 05
:Lbl 42
:2->J
:Lbl 05
:entAléat(0,1)->T
:36->A
:{2,12,12}?L1
:Repeat A<1
:For(I,1,3)
:For(K,1,L?(I))
:Outpout(2I+2,K+2,"I")
:End
:End
:If J=1 et T=1
:Then
:entAléat(1,6)?E
:Outpout(1,1,"L'ordinateur en:")
:Outpout(2,10,E)
:Pause
:Else
:Repeat E<7 et E>0
:Outpout(2,8,"Joueurs")
:Outpout(2,16,T+1)
:Inpout"Nombre à enlever",E
:End
:End
:EffEcr
:non(T)->T
:L1(1)-E>L1(1)
:If L1(2)<0
:Then
:L1(2)+L1(1)?L?(2)
:0->L1(1)
:If L?(2)<0
:Then
:L1(3)+L1(2)->L1(3)
:0->L1(2)
:End
:End
:L1(1)+L1(2)+L1(3)->A
:End
:Outpout(3,4,"Vainqueur:")
:If J=1 et T=1
:Then
:Outpout(4,4,"Ordinateur")
:Else
:Outpout(4,5,"Joueur")
:Outpout(4,12,T+1)
:End
:Pause
:EffEcr
:Menu("Recommencer ?","Oui",05,"Non",02,"Quitter",09)
:Lbl 09
:EffEcr
:EffDessin
_______________________________________________________________
J'ai une calculatrice TI-82 Stats.fr et j'ai créé un jeu d'allumettes (que j'ai trouvé sur Internet). Le but du jeu est de prendre entre 1 et 6 allumettes (26 allumettes au total) sans prendre la dernière.
Le programme à la fin de ce message.
J'aimerais arranger ce jeu ainsi:
-Avoir au total 15 allumettes (et non 26) et pouvoir enlever 1 à 3 allumettes (et non de 1 à 6).
Vous remarquerez que d'après le programme:
:entAléat(1,6)?E
:Outpout(1,1,"L'ordinateur en:")
:Outpout(2,10,E)
l'ordinateur enlève aléatoirement les allumettes. Il est donc quasiment impossible de perdre contre lui.
-J'aimerais le rendre "intelligent": il doit enlever la 2, 6, 10 et 14ème allumettes. Exemple: si le joueur prend 4 allumettes, il devra en prendre 2 (4+2=6).
Malheureusement je ne sais pas comment faire pour faire ces deux modifications. Pourriez-vous m'aider ?? Merci ;)
Voici le programme:
_____________________________________________________________________
:EffEcr
:EffDessin
:Texte(20,17, "Jeu des allumettes"
:Texte(26,35,"by Lancelot")
:Pause
:EffDessin
:EffEcr
:Lbl 02
:Menu("Menu principale","jouer",04,"regles",03,"quitter",09)
:Lbl 03
:EffDessin
:Texte(0,0,"Regles du jeu:")
:Texte(6,0,"Enlevez entre 1 et 6")
:Texte(12,0,"allumettes sans prendre")
:Texte(18,0,"la dernière.")
:Pause
:Goto 02
:Lbl 04
:Menu("Nombre de joueurs","un",41,"deux",42)
:Lbl 41
:1->J
:Goto 05
:Lbl 42
:2->J
:Lbl 05
:entAléat(0,1)->T
:36->A
:{2,12,12}?L1
:Repeat A<1
:For(I,1,3)
:For(K,1,L?(I))
:Outpout(2I+2,K+2,"I")
:End
:End
:If J=1 et T=1
:Then
:entAléat(1,6)?E
:Outpout(1,1,"L'ordinateur en:")
:Outpout(2,10,E)
:Pause
:Else
:Repeat E<7 et E>0
:Outpout(2,8,"Joueurs")
:Outpout(2,16,T+1)
:Inpout"Nombre à enlever",E
:End
:End
:EffEcr
:non(T)->T
:L1(1)-E>L1(1)
:If L1(2)<0
:Then
:L1(2)+L1(1)?L?(2)
:0->L1(1)
:If L?(2)<0
:Then
:L1(3)+L1(2)->L1(3)
:0->L1(2)
:End
:End
:L1(1)+L1(2)+L1(3)->A
:End
:Outpout(3,4,"Vainqueur:")
:If J=1 et T=1
:Then
:Outpout(4,4,"Ordinateur")
:Else
:Outpout(4,5,"Joueur")
:Outpout(4,12,T+1)
:End
:Pause
:EffEcr
:Menu("Recommencer ?","Oui",05,"Non",02,"Quitter",09)
:Lbl 09
:EffEcr
:EffDessin
_______________________________________________________________
A voir également:
- Programmation TI-82: rendre intelligent
- Application de programmation - Guide
- Atomman g7 ti - Accueil - Ordinateurs
- 06 82 quel opérateur - Guide
- Ti college plus log - Forum calculatrices
- Mauvais jeton ti connect ✓ - Forum Matériel & Système
2 réponses
Tu dois calculer le nombre d'allumettes restantes modulo 4
Si le résultat est 2, 3 ou 0, il faudra enlever respectivement 1, 2 ou 3 allumettes.
Si le résultat est 1, c'est que l'autre joueur est en train de gagner donc peu importe combien tu en enlèves, le joueur peut toujours gagner et dès qu'il se plantera la calculatrice reprendra la main jusqu'à gagner...
Remarque : si la calculatrice commence toujours, le joueur n'a aucune chance de gagner.
Il faut donc laisser le joueur commencer, et éventuellement faire varier le nombre d'allumettes au départ, sauf n=4k+1 car l'ordinateur gagnerait quand même !
PS. Je connais pas le code TI mais avec mes explications ça devrait aller ;-)
La confiance n'exclut pas le contrôle
Si le résultat est 2, 3 ou 0, il faudra enlever respectivement 1, 2 ou 3 allumettes.
Si le résultat est 1, c'est que l'autre joueur est en train de gagner donc peu importe combien tu en enlèves, le joueur peut toujours gagner et dès qu'il se plantera la calculatrice reprendra la main jusqu'à gagner...
Remarque : si la calculatrice commence toujours, le joueur n'a aucune chance de gagner.
Il faut donc laisser le joueur commencer, et éventuellement faire varier le nombre d'allumettes au départ, sauf n=4k+1 car l'ordinateur gagnerait quand même !
PS. Je connais pas le code TI mais avec mes explications ça devrait aller ;-)
La confiance n'exclut pas le contrôle
Merci de ta réponse, mais je n'ai pas tout compris...
J'ai rajouté une petite modification: il faut enlever seulement entre 1 et 3 allumettes (et non entre 1 et 6).
J'ai rajouté une petite modification: il faut enlever seulement entre 1 et 3 allumettes (et non entre 1 et 6).
Je suis bien d'accord ^^
Ce que je voulais dire c'est que quand il reste N allumettes, la calculatrice doit faire un calcul simple de congruence : (N-1) modulo 4, dont le résultat vaut 0, 1, 2 ou 3 et correspond au nombre d'allumettes qu'il faut enlever. Remarque si c'est 0, tu dois te forcer à jouer quand même ;-)
Ce que je voulais dire c'est que quand il reste N allumettes, la calculatrice doit faire un calcul simple de congruence : (N-1) modulo 4, dont le résultat vaut 0, 1, 2 ou 3 et correspond au nombre d'allumettes qu'il faut enlever. Remarque si c'est 0, tu dois te forcer à jouer quand même ;-)
C'est juste le terme que tu ne connais pas, mais tu dois connaitre ça depuis le CE2 ^^
Quand tu fais la division de A par B, tu as le quotient Q et le reste R.
A modulo B, c'est le reste R de la division de A par B.
Si tu as N=15 allumettes, (N-1) modulo 4, c'est le reste de la division de 14 par 4.
14 divisé par 4 donne 3 il reste 2 (on a donc 14 modulo 4 qui est égal à 2) tu dois enlever 2 allumettes.
Après quelques recherches tu peux calculer A modulo B avec fpart ([MATH]+[NUM]+4 à vérifier)
:fPart(A/B)*B
Dans ton programme, tu devras donc enlever :fPart((N-1)/4)*4 allumettes...
Quand tu fais la division de A par B, tu as le quotient Q et le reste R.
A modulo B, c'est le reste R de la division de A par B.
Si tu as N=15 allumettes, (N-1) modulo 4, c'est le reste de la division de 14 par 4.
14 divisé par 4 donne 3 il reste 2 (on a donc 14 modulo 4 qui est égal à 2) tu dois enlever 2 allumettes.
Après quelques recherches tu peux calculer A modulo B avec fpart ([MATH]+[NUM]+4 à vérifier)
:fPart(A/B)*B
Dans ton programme, tu devras donc enlever :fPart((N-1)/4)*4 allumettes...