Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Dim 22 Mai 2011, 12:55
Bonjour/bonsoir
Voici un puissance4 que j'avais fait en février mais pas encore posté.
Il ce joue à 2 joueurs sur écran de calcul et l'on à la possibilité de demander à ce que la TI vérifie si un joueur à gagner mais ça ralentit un peut, c'est pourquoi on peut l'enlever.
Voici le code:
Code
:Menu("VERIF DE VICT","ACTIVE",1,"DESACTIVE",2
:Lbl 1
:1 -> S
:Goto 3
:Lbl 2
:0 -> S
:Lbl 3
:ClrHome
:{8,7 -> dim([A]
:Fill(1,[A]
:For(E,1,7
:5 -> [A](8,E
:5 -> [A](1,E
:Output(2,2E,E
:End
:For(E,3,8
:For(F,1,15,2
:Output(E,F,"!
:End
:End
:For(A,1,42
:If not(fPart(A/2
:Then
:3 -> B
:Else
:2 -> B
:End
:Repeat sum(K={92,93,94,82,83,84,72
:getKey -> K
:End
:If K=92
:1 -> G
:If K=93
:2 -> G
:If K=94
:3 -> G
:If K=82
:4 -> G
:If K=83
:5 -> G
:If K=84
:6 -> G
:If K=72
:7 -> G
:If 1=!=[A](7,G
:Then
:EffVar KEffVar GA-1 -> A
:Else
:For(I,1,6
:If 1=[A](8-I,G) and 1=!=[A](7-I,G
:Then
:B -> [A](8-I,G
:If B=2
:Output(I+2,2G,"O
:If B=3
:Output(I+2,2G,"X
:End
:End
:End
:If S
:Then
:For(E,1,4
:For(F,2,7
:[A](F,E)[A](F,E+1)[A](F,E+2)[A](F,E+3 -> W
:If W=16
:Goto W
:If W=81
:Goto W
:End
:End
:For(E,1,7
:For(F,2,4
:[A](F,E)[A](F+1,E)[A](F+2,E)[A](F+3,E -> W
:If W=16
:Goto W
:If W=81
:Goto W
:End
:End
:For(E,5,7
:For(F,1,4
:[A](E,F)[A](E-1,F+1)[A](E-2,F+2)[A](E-3,F+3 -> W
:If W=16 or W=81
:Goto W
:End
:End
:For(E,2,4
:For(F,1,4
:[A](E,F)[A](E+1,F+1)[A](E+2,F+2)[A](E+3,F+3 -> W
:If W=16
:Goto W
:If W=81
:Goto W
:End
:End
:End
:End
:Lbl W
:If S
:Then
:Output(2,1,"
:If W=81
:Then
:Disp "CROIX GAGNE
:Pause
:Else
:If W=16
:Then
:Disp "ROND GAGNE
:Pause
:Else
:Disp "MATCH NUL
:Pause
---------------------- 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 : Dim 22 Mai 2011, 15:16
L'option pour verrifier ou non est une très bonne idée
La verrif semble légèrement astucieuse.
Toutefois c'est une méthode de crible long.
J'ai testé et ça marche bien.
Je n'ai pas pris le temps de tester une victoire car c'est plutôt long.
---------------------- 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 : Lun 23 Mai 2011, 9:40
ça me semblait plus facile de vérifier toute les possibilitées plutôt que que autour du nouveau jeton, surtout que les coordonnées dans la matrice ne correspondent pas du tout à celles sur le plateau
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 08 Jui 2011, 17:59
Ce n'est pas "KEffvar" en un seul caractère mais la letre K suivie de Effvar ([prgm] [alpha] [tan] ). Effvar à la particularité que l'instruction suivante ne doit pas être séparée par ":" sauf quelques exeptions (ex : "End" )
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
guoh7 Invité
Posté le : Lun 13 Jui 2011, 19:24
slt tout le monde, j'ai essayé le programme mais il m'indique une erreur de syntaxe sur la ligne "If 1=!=[A](7,G" au niveau du "!" pourrais-je savoir pourquoi et comment corriger cette erreur s'ils vous plait merci d'avance
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Lun 13 Jui 2011, 19:32
Désolé, j'ai utilisé =!= pour parler de la touche 'différend de' qui est dans le menu test, je n'ai malheureusement pas pensé a ce moment là qu'il risquait d'y avoir des gens qui ne remarquerrais pas que =!= en trois carractères n'a pas de sens.
Sandro
PS : si tu as d'autres erreures, commence par vérifier ça.
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
jjmichou Invité
Posté le : Dim 04 Déc 2011, 13:51
j'ai un probleme a la 9eme ligne il me met qu'il ya une erreur mais je comprend pas c'est au niveau de "dim([A]" le premier crochet !
peut tu me dire pourquoi ??
Merci d'avance
Autorisation : Membre
Nb de messages : 468
Inscrit le : Dim 12 Déc 2010, 20:44
Posté le : Dim 04 Déc 2011, 14:13
Cherche un peu, c'est un probleme fréquent... [A] ne s'écrit pas [ + A + ], c'est la matrice A pour écrire ça,rends toi dans le menu matrice, touche au dessus de sin.
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Dim 04 Déc 2011, 18:32
Je ne sais pas trop, mais en tout cas je pense pas que ce soit beaucoup plus rapide, et surtout, quand j'ai consu le programme, c'était bien plus facile d'utiliser les matrices pour représenter le plan (surtout qu'à l'époque je ne connaissais pas ecore la formule [?](Y;X) <=> l?(X+(Y-1)*largeur avec largeur la largeur de la matrice, et la première ligne numérautée 1 de même que la 1er collone).
Sandro
PS : ça m'étonne que tu ne façe ce commentaire que maintenant, ce programme date de mai
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Mar 06 Déc 2011, 12:47
Cela ferai surtout une économie de place donc de rapidité.
Et si je ne répond que maintenant, c'est que j'ai pas du le voir à l'époque (oui, je suis pas comme Persi à consulter TOUS les sujets ).
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mar 06 Déc 2011, 20:40
ça fait rien. en plus, une matrice ou une liste, ça prend la même place pour le même nombre d'élements. la matrice est même plus légère de 1 octé! Liste=12+p*dim et matrice=11+9*colones*lignes. après, pour les tests, peut-être pas, mais je pense pas que ça change beaucoup, vu que pour l'affichage, ça complexifiera en tout cas, peut-être même pour les tests. après, coté vitesse, c'est peut-être mieux, je ne sais pas trop.
Sandro
---------------------- 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 07 Déc 2011, 12:51
Sandro et moi avons échangé nos textes concernant les matrices.
Il combinera les deux (lui c'était la manipulation, moi c'était l'aspect mathématique)
Et je ne sais pas pour tilo.
J'espère terminer pendant les vacances un article vaste sur les cycles et quelques algos.
---------------------- 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 : 661
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Mar 12 Jui 2012, 21:55
Je ne sais pas trop si ça se fait de remonter un vieux sujet pour si peu, mais j'ai découvert les chaînes il y a quelques mois et je voulais vous faire partager mes améliorations qui permettent, avec la vérif de victoire, d'entrer le nom des joueurs puis d'afficher celui du vainqueur, au lieu de "rond gagne" ou "croix gagne". J'espère que ça va être utile, au moins aux débutants.
Code
:Menu("VERIF DE VICT","ACTIVE",1,"DESACTIVE",2
:Lbl 1
:Input"RONDS:",Chaîne0 /// AJOUTS
:Input"CROIX:",Chaîne9 /// AJOUTS
:1 -> S
:Goto 3
:Lbl 2
:0 -> S
:Lbl 3
:ClrHome
:{8,7 -> dim([A]
:Fill(1,[A]
:For(E,1,7
:5 -> [A](8,E
:5 -> [A](1,E
:Output(2,2E,E
:End
:For(E,3,8
:For(F,1,15,2
:Output(E,F,"!
:End
:End
:For(A,1,42
:If not(fPart(A/2
:Then
:3 -> B
:Else
:2 -> B
:End
:Repeat sum(K={92,93,94,82,83,84,72
:getKey -> K
:End
:If K=92
:1 -> G
:If K=93
:2 -> G
:If K=94
:3 -> G
:If K=82
:4 -> G
:If K=83
:5 -> G
:If K=84
:6 -> G
:If K=72
:7 -> G
:If 1=!=[A](7,G
:Then
:EffVar KEffVar GA-1 -> A
:Else
:For(I,1,6
:If 1=[A](8-I,G) and 1=!=[A](7-I,G
:Then
:B -> [A](8-I,G
:If B=2
:Output(I+2,2G,"O
:If B=3
:Output(I+2,2G,"X
:End
:End
:End
:If S
:Then
:For(E,1,4
:For(F,2,7
:[A](F,E)[A](F,E+1)[A](F,E+2)[A](F,E+3 -> W
:If W=16
:Goto W
:If W=81
:Goto W
:End
:End
:For(E,1,7
:For(F,2,4
:[A](F,E)[A](F+1,E)[A](F+2,E)[A](F+3,E -> W
:If W=16
:Goto W
:If W=81
:Goto W
:End
:End
:For(E,5,7
:For(F,1,4
:[A](E,F)[A](E-1,F+1)[A](E-2,F+2)[A](E-3,F+3 -> W
:If W=16 or W=81
:Goto W
:End
:End
:For(E,2,4
:For(F,1,4
:[A](E,F)[A](E+1,F+1)[A](E+2,F+2)[A](E+3,F+3 -> W
:If W=16
:Goto W
:If W=81
:Goto W
:End
:End
:End
:End
:Lbl W
:If S
:Then
:Output(2,1,"
:If W=81
:Then
:Output(1,11,"GAGNE /// MODIFS
:Output(1,1,Chaîne9 /// AJOUTS
:Pause
:Else
:If W=16
:Then
:Output(1,11,"GAGNE /// MODIFS
:Output(1,1,Chaîne0 /// AJOUTS
:Pause
:Else
:Disp "MATCH NUL
:Pause
PS : je vous épargne mes ajouts perso, du style "BY LE GREC"... Désolé Sandro.
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 13 Jui 2012, 7:24
Pourquoi "désolé"?
Si comme c'est le cas, tu trouve une idée pour améliorer un de mes programmes, il faut jamais hésiter : c'est bien pour qu'on les commente/améliore et utilise que je les poste ici.
Et puis sauf erreur de ma part, et sauf mention contraire, il me semble que tous les programmes postés ici sont libre de droits.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes