Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Morpion
tapenade le 15/11/2011 à 18:33
voila un grand classique,deja fait,mais voici ma version de 625 octets pour ti-82.fr fait en moins d'une heure:
Code
:Disp"NE PAS APPUYER","2FOIS SUR LA MEME TOUCHE","LES EMPLACEMENTS SONT CEUX DU","PAVE NUMERIQUE"
:Pause
:0->X //ces quelques lignes paraissent servir a rien
:45->A //mais elles sont essentiel sinon le code bug
:46->B // les nombres importe peut sauf le X
:47->C
:48->D
:49->E
:50->F
:51->I
:52->J
:53->K
:Lbl0
:Menu(">MORPION<","JOUEUR1",1,"JOUEUR2",2)
:Lbl1
:X+1->X
:1->U
:Goto5
:Lbl2
:2->U
:X+1->X
:Goto5
:Lbl5
:EffEcr
:Input " ",O
:If O=9
:Then
:U->A
:End
:If O=8
:Then
:U->B
:End
:If O=7
:Then
:U->C
:End
:If O=6
:Then
:U->D
:End
:If O=5
:Then
:U->E
:End
:If O=4
:Then
:U->F
:End
:If O=3
:Then
:U->I
:End
:If O=2
:Then
:U->J
:End
:If O=1
:Then
:U->K
:End
:If A=D et D=I
:Goto3
:If B=E et E=J
:Goto3
:If C=F et F=K
:Goto3
:If A=B et B=C
:Goto3
:If D=E et E=F
:Goto3
:If I=J et J=K
:Goto3
:If A=E et E=K
:Goto3
:If C=E et E=I
:Goto3
:Effecr
:If C<3
:Output(1,4,C
:If B<3
:Output(1,5,B
:If A<3
:Output(1,6,A
:If F<3
:Output(1,4,F
:If E<3
:Output(1,5,E
:If D<3
:Output(1,6,D
:If K<3
:Output(1,4,K
:If J<3
:Output(1,5,J
:If I<3
:Output(1,6,I
:Pause
:If X=9
: Goto4
: Goto0
:Lbl3
:EffEcr
:Disp"JOUEUR",U,"A GAGNE"
:Stop
:Lbl4
:EffEcr
:Disp"EGALITE"
:Stop
pfiou!enfin fini!
bonne chance pour le recopier
si vous avez des idées pour l'ameliorer,des questions allez-y
idée pour une v.2:
une IA
faire un tour a tour non facultatif
empecher de taper 2 fois de suite sur le meme chiffre
si vous avez des idées pour ma v.2 dites les

Polymorph le 15/11/2011 à 18:56
Outch, il fait mal au cul ton code °°
Tu pourrais le diviser par trois à mon avis...
Déja toutes tes conditions en If suivies d'une seule action peuvent être écrites de la forme :
IF truc = machin
Machin = truc + bidule
Sans Then in End.
Ou encore par des boléens (groupe conditionnel égal à 1 si vrai ou à 0 si faux)
J'ajoute, que par l'utilisation d'une matrice, tu te simplifierais la vie. Tu crée une matrice 3x3 et dedans tu remplis par des 0 si rien, des 1 si c'est le joueur 1 ou des 2 si c'est le joueur deux.
Tu peux également le faire en graphique avec des sélecteurs (voir
Ce très bon tuto (vers la fin[...]ux tout lire ^^ sandro le 15/11/2011 à 19:22
Tu ne pourrait pas transformer
Code
:If A=D et D=I
:Goto3
:If B=E et E=J
:Goto3
:If C=F et F=K
:Goto3
:If A=B et B=C
:Goto3
:If D=E et E=F
:Goto3
:If I=J et J=K
:Goto3
:If A=E et E=K
:Goto3
:If C=E et E=I
:Goto3
en
Code
:If A=D et D=I ou B=E et E=J ou C=F et F=K ou A=B et B=C ou D=E et E=F ou
I=J et J=K ou A=E et E=K ou C=E et E=I
:Goto3
Sandro
tapenade le 15/11/2011 à 20:28
sandro:bonne idéeje vais essayer
polymorph:boléens????

et a qoui servirai la matrice?
mais je vais essayer de le reduire
sandro le 15/11/2011 à 20:48
booléens : calcul binaire qui ce base sur vrai=1 et faux=0. utilise des opérations telles que et, ou, ou exclusif, non, ... Sur la TI, les conditions fonctionnent en fait avec : un test renvoie 0 ou 1 : si c'est 0, c'est faux, si c'est autrechose (pas forcément 1), c'est juste.
Pour la matrice, ça permet du tout avoir en une seule variable pour tes positions, mais après, je ne suis pas sur si c'est le plus optimisé (faudrait tester).
SandroPolymorph le 15/11/2011 à 21:03
La matrice permettrait de recréer une grille, dont chaque case correspondrait à une case de ta grille, au début c'est bourré de zéros, et à chaque fois que tu joue t'en remplace un par un 1 ou un 2. Ainsi, dès que y'a plus de zéros, tu sais que c'est terminé, et il te suffit de faire les test verticaux, horizontaux et diagonaux à chaque coup en référant à la position du pion qui a été posé.tapenade le 15/11/2011 à 22:44
demain la v.1.2 allegee de 548octetstapenad le 17/11/2011 à 13:29
voici la v.1.2 de 548 octets:
Code
:Disp"NE PAS APPUYER","2FOIS SUR LA MEME TOUCHE","LES EMPLACEMENTS SONT CEUX DU","PAVE NUMERIQUE"
:Pause
:0->X //ces quelques lignes paraissent servir a rien
:45->A //mais elles sont essentiel sinon le code bug
:46->B // les nombres importe peut sauf le X
:47->C
:48->D
:49->E
:50->F
:51->I
:52->J
:53->K
:Lbl0
:Menu(">MORPION<","JOUEUR1",1,"JOUEUR2",2)
:Lbl1
:X+1->X
:1->U
:Goto5
:Lbl2
:2->U
:X+1->X
:Goto5
:Lbl5
:EffEcr
:Input " ",O
:If O=9
:Then
:U->A
:End
:If O=8
:Then
:U->B
:End
:If O=7
:Then
:U->C
:End
:If O=6
:Then
:U->D
:End
:If O=5
:Then
:U->E
:End
:If O=4
:Then
:U->F
:End
:If O=3
:Then
:U->I
:End
:If O=2
:Then
:U->J
:End
:If O=1
:Then
:U->K
:End
:If A=D=I ou B=E=J ou C=F=K ou A=B=C ou D=E=F ou I=J=K ou A=E=K ou C=E=I
:Goto3
:Effecr
:If C<3
:Output(1,4,C
:If B<3
:Output(1,5,B
:If A<3
:Output(1,6,A
:If F<3
:Output(1,4,F
:If E<3
:Output(1,5,E
:If D<3
:Output(1,6,D
:If K<3
:Output(1,4,K
:If J<3
:Output(1,5,J
:If I<3
:Output(1,6,I
:Pause
:If X=9
: Goto4
: Goto0
:Lbl3
:EffEcr
:Disp"JOUEUR",U,"A GAGNE"
:Stop
:Lbl4
:EffEcr
:Disp"EGALITE"
:Stop
et voila ( c'est toujours enorme mais c'est deja mieux

Sangohan38 le 17/11/2011 à 17:27
Si tu n'as qu'une instruction après un If, le Then et le End sont inutiles.
Au lieu d'utiliser tant de variables, essaye de tout regrouper dans une liste, c'est plus facile pour les calculs.
Sangohan38tapenad le 17/11/2011 à 17:43
ah oui desolé j'ai oublié de retirer les then et les end qui ne servent a rien
je vais essayé de mettre des liste a la place...Polymorph le 17/11/2011 à 17:47
Matrice! >_< Matrice!
Sinon tu as quand même un tas de variables qui ne servent pas énormément...tapenad le 17/11/2011 à 18:00
polymorph: tu a tout faux,mes variables on toutes leur utilités:
A B C D E F I J K sont les 9 cases ( je vais essayer de remplacer par une liste...)
U definit le joueur
X permet l'egalité(mais je pourrais mettre un for( ça allegerai l'ensembleSangohan38 le 17/11/2011 à 23:46
L'utilisation de matrice est inutile dans la mesure où l'utilisation de variables/listes sont moins gourmandes en place et leurs utilisation se fait en utilisant moins de caractères.
Sangohan38informato le 28/01/2012 à 20:12
Il y a une petite erreur je pense dans ton programme.
:If C<3
:Output(1,4,C
:If B<3
:Output(1,5,B
:If A<3
:Output(1,6,A
:If F<3
:Output(1,4,F
:If E<3
:Output(1,5,E
:If D<3
:Output(1,6,D
:If K<3
:Output(1,4,K
:If J<3
:Output(1,5,J
:If I<3
:Output(1,6,I
Ce serait mieux de mettre:
:If C<3
:Output(1,4,C
:If B<3
:Output(1,5,B
:If A<3
:Output(1,6,A
:If F<3
:Output(2,4,F
:If E<3
:Output(2,5,E
:If D<3
:Output(2,6,D
:If K<3
:Output(3,4,K
:If J<3
:Output(3,5,J
:If I<3
:Output(3,6,Itapenad le 28/01/2012 à 20:20
effectivement tu n'a pas tort je le reposte en bien propre...tapenad le 28/01/2012 à 20:23
et c'est parti:
Code
:Disp"NE PAS APPUYER","2FOIS SUR LA MEME TOUCHE","LES EMPLACEMENTS SONT CEUX DU","PAVE NUMERIQUE"
:Pause
:0->X //ces quelques lignes paraissent servir a rien
:45->A //mais elles sont essentiel sinon le code bug
:46->B // les nombres importe peut sauf le X
:47->C
:48->D
:49->E
:50->F
:51->I
:52->J
:53->K
:Lbl0
:Menu(">MORPION<","JOUEUR1",1,"JOUEUR2",2)
:Lbl1
:X+1->X
:1->U
:Goto5
:Lbl2
:2->U
:X+1->X
:Goto5
:Lbl5
:EffEcr
:Input " ",O
:If O=9
:U->A
:If O=8
:U->B
:If O=7
:U->C
:If O=6
:U->D
:If O=5
:U->E
:If O=4
:U->F
:If O=3
:U->I
:If O=2
:U->J
:If O=1
:U->K
:If A=D=I ou B=E=J ou C=F=K ou A=B=C ou D=E=F ou I=J=K ou A=E=K ou C=E=I
:Goto3
:Effecr
:If C<3
:Output(1,4,C
:If B<3
:Output(1,5,B
:If A<3
:Output(1,6,A
:If F<3
:Output(2,4,F
:If E<3
:Output(2,5,E
:If D<3
:Output(2,6,D
:If K<3
:Output(3,4,K
:If J<3
:Output(3,5,J
:If I<3
:Output(3,6,I
:Pause
:If X=9
: Goto4
: Goto0
:Lbl3
:EffEcr
:Disp"JOUEUR",U,"A GAGNE"
:Stop
:Lbl4
:EffEcr
:Disp"EGALITE","RECOMMENCEZ..."
:Stop
ca devrait etre bon cette fois..
Erdnuss le 29/01/2012 à 14:58
Code
:Disp"NE PAS APPUYER","2FOIS SUR LA MEME TOUCHE","LES EMPLACEMENTS SONT CEUX DU","PAVE NUMERIQUE"
:Pause
:EffvarX //1octet en -
:For(A,1,9
:A+44->L1(A
:End
:Lbl0
:Menu(">MORPION<","JOUEUR1",1,"JOUEUR2",2)
:Lbl1
:X+1->X
:1->U
:Goto5
:Lbl2
:2->U
:X+1->X
:Goto5
:Lbl5
:EffEcr
:Input " ",O
:U->L1(10-O
:For(A,1,3
:If L1(A)=L1(A+3)=L1(A+6)ou L1(A)=L1(1+A)=L1(A+2)ou L1(1)=L1(5)=L1(9)ou L1(3)=L1(5)=L1(7):Goto3
:End
:Effecr
:For(A,1,9
:If 3>L1(A
:Output(Ent(A/3),3Partdec(A/3),L1(A
:End
:Pause
:If X=9
: Goto4
: Goto0
:Lbl3
:EffEcr
:Disp"JOUEUR",U,"A GAGNE"
:Stop
:Lbl4
:EffEcr
:Disp"EGALITE"
:Stop
Voila avec des listes j espere que ca allege le code, il y a aussi la possibilite de faire un for des deux.
Je ne l ai pas teste
sandro le 29/01/2012 à 15:25
t'es sur de ta série d'égalitées?
je demande car L1(A)=L1(A+3)=L1(A+6) est vérifié que ssi L1(A)=L1(A+3) et L1(A+6)=1 OU L1(A)=!=L1(A+3) et L1(A+6)=0
SandroBeunoit le 29/01/2012 à 18:28
Déjà merci pour avoir pris la peine de faire ça, mais j'aurais voulu savoir comment on fait le "ou" :/Cytropus le 29/01/2012 à 19:10
Le "ou" ce trouve dans [2nde]+[math]+[droite]+[2]aide ! le 19/04/2012 à 15:43
ma calculette ne reconnais pas le signe qui ressemble à celui -> quelqu'un peut-il m'éclairer ?The K le 19/04/2012 à 15:53
"->" correspond à la touche "sto" au dessus de la touche on.aide ! le 21/04/2012 à 10:11
merci

Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.