Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Morpion - Page 1 / 3
samsam le 15/06/2012 à 16:13
Bonjour,
Je suis en train d'essayer de faire un morpion, pour l'instant il se joue uniquement à 2 sur la même calculatrice, il n'y a pas de mode contre la machine.
Il est un peu lent sur les conditions et emploie pas mal de variables.
Je voudrai savoir comment utiliser la fonction CapVar( pour jouer avec le câble.
Bien sur il peut être améliorer notamment un mode contre la calculatrice.
Code
3->dim(L1
3->dim(L2
3->dim(L3
Remplir(0,L1
Remplir(0,L2
Remplir(0,L3
EffVar [A]
{3,3->dim([A]
Disp [A]
While 1
Prompt X,Y
Input "joueur:",[thêta]
[thêta]->[A](Y,X
Matr>Liste([A],L1,L2,L3
somme(L1->D
somme(L2->E
somme(L3->F
L1(1)+L2(1)+L3(1->G
L1(2)+L2(2)+L3(3->H
L1(3)+L2(3)+L3(3->I
L1(1)+L2(2)+L3(3->J
L1(3)+L2(2)+L3(1->K
If D=12 ou E=12 ou F=12 ou G=12 ou H=12 ou I=12 ou J=12 ou K=12
Then
Disp "joueur 4 a gagne
Disp [A]
Stop
End
If D=3 ou E=3 ou F=3 ou G=3 ou H=3 ou I=3 ou J=3 ou K=3
Then
disp "joueur 1 a gagne
Disp [A]
Stop
End
End
Le jeu se fait avec les matrices vous l'aurez deviné.
Le joueur 4 n'est pas le joueur 2 par soucis d'égalité des lignes.
J'aurai pu ne pas utiliser les listes mais après 4h à les étudier il fallait que je les case quelque part

F-BVXT le 15/06/2012 à 16:46
Pour utiliser CaptVar(, il faut faire : CaptVar(Variable.
Du coup, si par exemple la variable que tu souhaite récupérer est L1, alors il faut faire :
Ce qui copiera la valeur L1 de l'autre calculatrice vers ta valeur de L1. Par contre, je crois que l'autre calculette doit être du même modèle que le tient (TI 82-Stats et TI 82-Stats.fr sont incompatibles par exemple).
The K le 15/06/2012 à 16:57
Ou utiliser les matrices, ou utiliser les listes, mais pas les deux
Dans ton cas voila ce que ça pourrait donner avec les listes, si tu préfères
Code
EffListe L1,L2,L3
3->dim(L1
3->dim(L2
3->dim(L3
While 1
EffEcr
Disp L1,L2,L3
Prompt X,Y,J //J comme joueur ^^
If Y=1
J->L1(X
If Y=2
J->L2(X
If Y=3
J->L3(X
For(A,3,12,9
If A=somme(L1) ou somme(L2) ou somme(L3) ou L1(1)+L2(1)+L3(1) ou L1(2)+L2(2)+L3(3) ou L1(3)+L2(3)+L3(3) ou L1(1)+L2(2)+L3(3) ou L1(3)+L2(2)+L3(1
Then
Output(7,8,J
Pause "JOUEUR A GAGNE
Stop
End
End
End
Après je ne suis pas le meilleur programmeur ici ... je pense que qqun d'autre va sortir qqchose de mieux que ça

Samos le 15/06/2012 à 17:02
Je devrai mettre le programme à l'identique sur la 2ème calculatrice mais avec un Captvar( en début de boucle? Ou une fois le CaptVar( lancé la calculatrice continue à échanger la variable?The K le 15/06/2012 à 17:13
Du manuel (faut penser a le regarder ça sert à ça un manuel ...)
Citation
CaptVar() : capte le contenu d’une variable stockée sur une autre TI-82 Stats.fr et le mémorise dans variable sur la TI-82 Stats.fr de destination. variable peut être un nombre, un terme de liste, un nom de liste, un élément de matrice, un nom de matrice, une chaîne, une variable Y= , une base de données de graphe ou une image.
CaptVar(variable)
Samos le 15/06/2012 à 18:07
ça je l'ai vu mais ça ne répond pas à ma question

La variable est captée une fois pour toute ou elle est régulièrement modifiée?
F-BVXT le 15/06/2012 à 18:11
J'ai jamais utilisé cette fonction mais la variable doit certainement être modifié à chaque passage de boucle, donc il faut un CaptVar à chaque fois que tu as besoin des données de l'autre calculette.The K le 15/06/2012 à 22:44
Euh oui desole j'me suis un peu raté dans mon post précédant désolé ^^'
Donc eh ben une fois qu'elle est captée elle ne l'est qu'une fois ... Il faut recapter la valeur à chaque fois qu'elle est actualisée / qu'on en a besoin.
Et attention à la commande EnvoiVar( qui n'existe pas

F-BVXT le 15/06/2012 à 22:54
Comme je n'ai jamais utilisé cette fonction et apparemment samsam non plus, je devance sa question : Ca veut dire qu'il va falloir alterner Prompt et CaptVar une boucle sur deux, c'est ça ?The K le 15/06/2012 à 22:58
Je n'ai jamais utilisé CaptVar( non plus. Il va falloir que j'integre ça a mon propre morpion
Donc euh ben ... Dans la boucle while Tu captvares puis tu promptes. Ou l'inverse. Peu importe tant que c'est avant l'intégration de la dernière case jouer à la matrice/liste et la vérification

F-BVXT le 15/06/2012 à 23:09
Citation
Dans la boucle while Tu captvares puis tu promptes. Ou l'inverse. Peu importe tant que c'est avant l'intégration de la dernière case jouer à la matrice/liste et la vérification
Ah bon, moi j'aurai plutôt fait quelque chose comme :
Code
EffVar I //cette ligne ne sert que si on veut que ce soit toujours le même
joueur qui commence
...
If partDéc(I/2)=0
Then
Prompt X,Y,J
Else
CaptVar(X
CaptVar(Y
CaptVar(J
End
...
I+1->I
The K le 15/06/2012 à 23:14
Selon ma soluce tu prend mon optimisation proposée plus haut et juste avant le prompt tu rajoutes "CaptVar(L1,L2,L3F-BVXT le 15/06/2012 à 23:19
Ah oui dans ce cas d'accord. Mais du coup je crois que si l'adversaire a gagné, tu devra quand même jouer, et si tu met un "coup gagnant" (oui, je sais j'ai trop regardé Roland Garros

) à ton tour il y aura donc 2 gagnants.
The K le 15/06/2012 à 23:26
Tout ça sont des détails
Tout comme le fait que tu peux jouer deux fois de suite ou plus ^^
Tout comme sans les CaptVar tu peux jouer deux fois la même case.
Des détails qui ne demandent qu'à être réglés dans une version plus complète du morpion

F-BVXT le 15/06/2012 à 23:32
C'est vrai que ça serait mieux que J s'initialise automatiquement à chaque tour de boucle, au lieu d'avoir à le rentrer. Surtout que contre des mauvais perdant, tu risque de te retrouver avec 3 croix alignés sans même avoir pu jouer

The K le 15/06/2012 à 23:48
Yep ... Bon bah mon projet des vac's ^^ améliorer mon KMorpion ... Peut être même y intégrer une IA !F-BVXT le 16/06/2012 à 00:30
Ah oui, tient je viens de regarder ton Morpion et bah comme ça on est deux à avoir fait un morpion graphique
Le tient est quand même plus légé que le mien mais ne barre pas les symboles à la fin de la partie.
Sinon, pour l'A.I (ah non c'est vrai l'I.A vu qu'on est sur le forum des 82 stats.fr

) si tu arrive chapeau parce que mes rares essais n'ont pas été très concluent (adversaire invincible ou totalement stupide en fonction des versions

).
The K le 16/06/2012 à 09:54
Oh ben je vais étudier les IA de Sandro / Linka / Persa et J'vais bien voir comment ils ont fait

Samos le 16/06/2012 à 13:15
J'ai une petite idée pour empêcher les rageurs!
Ils pourront toujours placer leurs "pions" sur les autres mais au moin c'est chacun son tour!
Code
9->dim(L4
1->L4(1
4->L4(2
1->L4(3
4->L4(4 // ECT jusqu'a 9
...
0->M
While 1
1+M->M
Prompt X,Y
L4(M)->[A](Y,X
Bon c'est un peu lourd mais j'ai pas trouvé mieu.
snap le 16/06/2012 à 13:18
si tu veux raccourcir un peu :
Code
1->L4(1
4->L4(2
1->L4(3
4->L4(4 // ECT jusqu'a 9
...
devient
Code
Remplir(1, L4
For(Z,2,8,2
4 -> L4(Z
End
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.