Autorisation : Membre
Nb de messages : 74
Inscrit le : Mar 24 Mai 2011, 19:08
Posté le : Mar 24 Mai 2011, 20:13
Voilà je crée un pendu mais le problème c'est que je stock les mots a trouver dans une chaine.
Or j'aimerais que le pendu ce joue a deux et que le mot est choisi par un joueur et trouve par l'autre. Comment faire ?
J'utilise :
Code
Input "mot:",chaine0
"LES MOTS SONT ICI
sous-chaine(rep,6entaleat(0,9)+1,6->chaine0
Longueur(chaine0->D'
D->dim(L1
Autorisation : Membre
Nb de messages : 74
Inscrit le : Mar 24 Mai 2011, 19:08
Posté le : Mar 24 Mai 2011, 20:54
J'ai une ti-82 stats.fr et j'aimerais que le pendu ce joue seulement sur une calculatrice que l'on se fait passer (ex : je choisis le mot, tu devine). Et si possible, comme je débute tu peux expliquer le code ?
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mar 24 Mai 2011, 21:19
Voici ma prosition:
Code
:Input "NOMBRE DE TOURS", M
:For(C,1,M
:EffEcran
:2 -> Z
:If partdéc(C/2
:1 -> Z
:Disp "JOUEUR",Z
:Input "MOT",Chaîne1
:EffEcran
:Output(1,1,"JOUEUR"
:Output(1,8,-Z+3
:longueur(Chaîne1) -> L
:"----------------" -> Chaîne2
:Souschaîne(Chaîne2,1,L -> Chaîne2
:Output(2,1,Chaîne2
:L -> dim(Liste1)
:Remplir(0,Liste1)
:For(B,1,N //N est à remplacer par le nombre d'aissais
:Input "LETTRE",Chaîne3
:1 -> A
:While A
:Carchaîne(Chaîne1,Chaîne2,A -> A
:1 -> Liste1(A
:Output(2,A,Chaîne3
:End
:Output(8,1,"IL RESTE ESSAIS")
:Output(8,10,N-B)
:If produit(Liste1)
:goto A
:End
:Output(4,6,"PERDU"
:Goto B
:LblA
:Output(4,6,"GAGNE"
:LblB
:pause
:EffEcran
Sandro
PS:les explication sont pour demain aprem
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 24 Mai 2011, 23:46
Oui mais j'ai déjà perdu du temps pour mon bac.
Ton idée pour sauvegarder est correcte.
Mais je ne comprends pas pourquoi tu demandes un mot à quelqu'un alors qu'une liste de mots est prévu à la ligne en dessous.
---------------------- 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)
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 25 Mai 2011, 14:21
Tu pourrait utiliser un programme du type
Code
:GraphNaff \
:AxeNaff \
:Fonct off \Initialise l'écran graphique
:0 -> Xmin /
:94 -> Xmax /
:0 -> Ymax /
:-62 -> Ymin /
:Input "NOMBRE DE TOURS", M //demande le nombre de tours
:{0,0} -> Liste2 //initialis les scores de joueurs
:For(C,1,2M //compteur C des parties (2*nombre de tours au total)
:EffDessin
:Text(30,10,"JOUEUR 1 A ",Liste2(1)," POINTS")
:Text(30,10,"JOUEUR 2 A ",Liste2(2)," POINTS")
:0 -> D //initialise le nombre de fautes
:EffEcran
:2 -> Z \
:If partdéc(C/2 ! détermine le joueur qui ne Joue
:1 -> Z /
:Disp "JOUEUR",3-Z \demmande le mot à trouver
:Input "MOT",Chaîne1 /au joueur passif
:EffEcran
:Effdessin
:text(1,1,"JOUEUR",Z //annonce le joueur jouant
:longueur(Chaîne1) -> L
:"-" -> Chaîne2 \
:For(H,2,L \Crée une chaîne contenant un "-" par lettre
:"-"+Chaîne2 -> Chaîne 2 /
:End /
:texte(7,1,Chaîne2
:L -> dim(Liste1) \Crée un liste dont chaque terme vaut 1 si la
:Remplir(0,Liste1) /lettre est trouvée, sinon 0
:For(B,1,N //N est à remplacer par le nombre d'essais
:Repeat non(K) \
:Code touche -> K !Attend la préssion d'une touche
:End /
:If K=41:"A" \
:If K=42:"B" \
:If K=43:"C" !remplace
:If K=51:"D" !la
:If K=52:"E" !valeur
:If K=53:"F" !de
:If K=54:"G" !K
:If K=55:"H" !par
:If K=61:"I" !la
:If K=62:"J" !lettre
:If K=63:"K" !correspondante
:If K=64:"L" !placée
:If K=65:"M" !dans
:If K=71:"N" !la
:If K=72:"O" !chaîne
:If K=73:"P" !n°3
:If K=74:"Q" !
:If K=75:"R" !
:If K=81:"S" !
:If K=82:"T" !
:If K=83:"U" !
:If K=84:"V" !
:If K=85:"W" !
:If K=91:"X" !
:If K=92:"Y" !
:If K=93:"Z" /
:Rep -> Chaîne3 /
:1 -> A \
:While A \
:Carchaîne(Chaîne1,Chaîne2,A -> A ! recherche la lettre dans le mot, l'affiche à
:1 -> Liste1(A !sa place et actualise la liste des lettres trouvées
:Text(7,5A-4,Chaîne3 /
:End /
:If non(Carchaîne(Chaîne1,Chaîne2
:then
:D+1 -> D
\Ici il faut mettre un prog qui trace la partie de la potence
\correspondant à D !
/(If D=1:ligne(X,Y,X',Y'): [...]
/ If D=5:Cercle(X2,Y2,R): [...])
:End
:If produit(Liste1) //1 si toutes les lettres sont trouvées, sinon 0
:goto A
:End
:Text(60,1,"PERDU"
:Goto B
:LblA
:Text(60,1,"GAGNE"
:1+Liste2(Z) -> Liste2(Z) //actualise le score
:LblB
:pause
:EffEcran
:End
Sandro
PS:J'espère ne pas avoir fait d'erreures, j'ai créé ce programme sans ma TI
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 25 Mai 2011, 21:09
chocolat : Soit tu t'es posé des questions existentielles, soit je n'avais pas compris ce qui te pose problème. sandro semble avoir résolu ton problème.
sandro : Je suis séduit par le while qui détecte chaque lettre du mot correspondante à celle saisie.
Le goto A à l'intérieur de la boucle est à la limite de ce qui peut poser problème, mais heureusement ce programme ne craint pas les ralentissements.
---------------------- 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)
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 25 Mai 2011, 22:19
Bonjour/bonsoir
Suite à la remarque de linkakro, voici une version sans goto dans la boucle
Code
:GraphNaff
:AxeNaff
:Fonct off
:0 -> Xmin
:94 -> Xmax
:0 -> Ymax
:-62 -> Ymin
:Input "NOMBRE DE TOURS", M
:{0,0} -> Liste2
:For(C,1,2M
:EffDessin
:Text(30,10,"JOUEUR 1 A ",Liste2(1)," POINTS")
:Text(30,10,"JOUEUR 2 A ",Liste2(2)," POINTS")
:0 -> D
:EffEcran
:2 -> Z
:If partdéc(C/2
:1 -> Z
:Disp "JOUEUR",3-Z
:Input "MOT",Chaîne1
:EffEcran
:Effdessin
:text(1,1,"JOUEUR",Z
:longueur(Chaîne1) -> L
:"-" -> Chaîne2
:For(H,2,L
:"-"+Chaîne2 -> Chaîne 2
:End
:texte(7,1,Chaîne2
:L -> dim(Liste1)
:Remplir(0,Liste1)
:For(B,1,N
:Repeat non(K)
:Code touche -> K
:End
:If K=41:"A"
:If K=42:"B"
:If K=43:"C"
:If K=51:"D"
:If K=52:"E"
:If K=53:"F"
:If K=54:"G"
:If K=55:"H"
:If K=61:"I"
:If K=62:"J"
:If K=63:"K"
:If K=64:"L"
:If K=65:"M"
:If K=71:"N"
:If K=72:"O"
:If K=73:"P"
:If K=74:"Q"
:If K=75:"R"
:If K=81:"S"
:If K=82:"T"
:If K=83:"U"
:If K=84:"V"
:If K=85:"W"
:If K=91:"X"
:If K=92:"Y"
:If K=93:"Z"
:Rep -> Chaîne3
:1 -> A
:0 -> F
:While A et non(F //ici
:Carchaîne(Chaîne1,Chaîne2,A -> A
:1 -> Liste1(A
:Text(7,5A-4,Chaîne3
:End
:If non(Carchaîne(Chaîne1,Chaîne2
:then
:D+1 -> D
\Ici il faut mettre un prog qui trace la partie de la potence
\correspondant à D !
/(If D=1:ligne(X,Y,X',Y'): [...]
/ If D=5:Cercle(X2,Y2,R): [...])
:End
:produit(Liste1) -> F //ici
:End
:If non(F) //ici
:Text(60,1,"PERDU"
:If F //ici
:Then //ici
:Text(60,1,"GAGNE"
:1+Liste2(Z) -> Liste2(Z)
:End //ici
:pause
:EffEcran
:End
Sandro
PS: le programme n'est volentairement pas optimiser, le but n'étant pas une utilisation optimalissime mais de faire comprendre les acarne de la programmation à Chocolat (il faut être à l'aise en programmation pour pouvoir optimiser à fond sans s'embrouiller ensuite à la relecture).
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 74
Inscrit le : Mar 24 Mai 2011, 19:08
Posté le : Mer 25 Mai 2011, 22:50
Le problème c'est que je n'arrive pas a mélanger les deux prgm ( le tien et le mien ) j'essaye jusqu a samedi et si j'y arrive toujours pas je peux faire appel a vous ?