Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 6568
Réponses : 67
Type : discussion
Etat : réponses autorisées

Morpion, by The K ! - Page 1 / 4

The K le 17/11/2011 à 19:21
Bonsoir !
je vous présente mon premier programme que je poste sur le site : un morpion ! Je sais, c'est très original, mais il est certifié débuggé, et, dans l'ensemble, plutot rapide, et avec interface graphique !

Il fait entre 1000 et 1100 octets voila happy.gif

Voila ... si vous avez donc, une question, une remarque, une suggestion ... n'hésitez pas winkle.gif

Voici le programme : KMORPION :
Code
SauveBDG 1
Fonct
AxesOff
FnOff
0ü ( ) Xmin
94ü ( ) Xmax
0ü ( ) Ymin
62ü ( ) Ymax
Lbl M
Menu("    KMORPION    ","JOUER !",J,"QUITTER",Q
Lbl J
39ü ( ) A:23ü ( ) B:1ü ( ) C:EffVar KEffVar F:1ü ( ) G
EffVar [E]
{3,3ü ( ) dim([E]
EffDessin
Ligne(17,1,17,61
Ligne(37,1,37,61
Ligne(57,1,57,61
Ligne(77,1,77,61
Ligne(17,1,77,1
Ligne(17,21,77,21
Ligne(17,41,77,41
Ligne(17,61,77,61
While G
EffVar D
If C=3:1ü ( ) C
Texte(28,5,"J",C
Ligne(A,B,A+16,B
Ligne(A,B,A,B+16
Ligne(A,B+16,A+16,B+16
Ligne(A+16,B,A+16,B+16
Repeat K
CodeToucheü ( ) K
If K=45:Goto Q
If K=24 ou K=25 ou K=26 ou K=34:Then
Ligne(A,B,A,B+16,0
Ligne(A,B,A+16,B,0
Ligne(A,B+16,A+16,B+16,0
Ligne(A+16,B,A+16,B+16,0
If K=24:Then
A-20ü ( ) A
If A=ú ( ) 1:59ü ( ) A
End
If K=25:Then
B+20ü ( ) B
If B=63:3ü ( ) B
End
If K=26:Then
A+20ü ( ) A
If A=79:19ü ( ) A
End
If K=34:Then
B-20ü ( ) B
If B=ú ( ) 17:43ü ( ) B
End
End
If K=105:Then
If A=19:1ü ( ) J
If A=39:2ü ( ) J
If A=59:3ü ( ) J
If B=43:1ü ( ) H
If B=23:2ü ( ) H
If B=3:3ü ( ) H
If non([E](H,J
Cü ( ) [E](H,J
If C=1:Cercle(A+8,B+8,7
If C=2:Then
Ligne(A+1,B+1,A+15,B+15
Ligne(A+1,B+15,A+15,B+1
End
1ü ( ) D
End
For(E,1,2
For(J,1,3
If [E](J,1)=E et [E](J,2)=E et [E](J,3)=E ou [E](1,J)=E et [E](2,J)=E et [E](3,J)=E ou [E](1,1)=E et [E](2,2)=E et [E](3,3)=E ou [E](1,3)=E et [E](2,2)=E et [E](3,1)=E:Then
Ombre(0,94
69!:69!
EffDessin
Texte(28,20,"JOUEUR ",C," A GAGNE !
Pause
EffVar G
End
End
End
If D:C+1ü ( ) C
If D:F+1ü ( ) F
If F=9 et G:Then
Ombre(0,94
69!:69!
EffDessin
Texte(28,30,"EGALITE ...
Pause
EffVar G
End
End
End
End
Goto M
Lbl Q
EffDessin
Text(28,24,"MADE BY THE K :)
Pause
RappelBDG 1
EffVar BDG1EffVar [E]
EffEcr
Output(1,1,"


Et voila ... bon recopiage à présent winkle.gif

EDIT : plus de routine et un pgrm allégé après le K=105 ^^

Voici les liens de download :
TI/83+ et supérieur : http://www.mediafire.com/?y7jx6y8dzwnhe1e
Familles des TI-82 : http://www.mediafire.com/?oc8ykici4114bbb
tapenad le 17/11/2011 à 20:14
il a l'air bien mais je prefere le mien (+ court mais pas en graphique,un bien pur un mal...)
The K le 17/11/2011 à 22:45
C'est sur que le tien est bien moins compliqué a recopier ... Le mien parait lourd en comparaison crazy.gif

Mais honnêtement je pense qu'il y a moyen de simplifier les 9 boucles qui présentent la routine ! Mais je ne bois pas comment ... Une liste peut être ? Avec une boucle for ? karate.gif
ashtrail le 18/11/2011 à 18:07
Bon bin tu l'as posté je l'essaierai mais la j'ai pas le temps de l'ecrire...
The Werty le 03/01/2012 à 23:37
Bonjour a tous
J'ai un petit problème, je ne trouve pas la fonction Func.
J'ai une TI 82 stat fr cupsmiley.gif
linkakro le 04/01/2012 à 12:27
Func se traduit par Fonct et se trouve dans le menu mode et dans le catalogue.
Ma signature contient un lien vers un article pour trouver des traductions et des fonctions.
The K le 04/01/2012 à 13:44
Woops merci de signaler ça je corrige ^^ et j'en profite pour voir si je n'avais pas laissé autre chose de british ^^
The Werty le 04/01/2012 à 14:46
Je me suis inscris!! crazy.gif
Merci beaucoup je vais commencer à le recopier happy.gif
Bon boulot en tout cas laugh.gif
calcugeek le 04/01/2012 à 16:12
Personnellement j'ai fait un morpion en graphique (avec vérification de victoire) de moins de 400 octets glasses.gif glasses.gif donc c'est possible de faire un morpion léger en graphique! Bon il n'est peut être pas super beau mais je l'ai fait en 5-10 min alors...
Petite astuce, pour les tests de cases, j'utilise une matrice et des boucles for( avec les coordonnées. Je le poste si vous voulez même si j'ai pas beaucoup de temps crazy.gif crazy.gif
The K le 04/01/2012 à 17:39
J'édite mon morpion et simplifie une grosse partie avec la routine - que je supprime.

Ne t'inquiète pas je me charge de simplifier les conditions de win winkle.gif

Voila c'est un peu mieux non ? winkle.gif
calcugeek le 04/01/2012 à 18:50
c'est pas mal du tout beer.gif je posterai le mien pour que tu compares car la structure n'est pas tout à fait la même cupsmiley.gif sinon ça me paraît bien quoiqu'un peu long pour un morpion crazy.gif crazy.gif
The Werty le 04/01/2012 à 18:53
Bien joué winkle.gif
j'avais copié/collé le code, pour ensuite tout recopier, ça marchait et maintenant que vois-je? Qu'il y a une version améliorée... Ô malheur! Bon je mange et je recopie tout ça happy.gif
sandro le 04/01/2012 à 19:45
Tu pourrais m'expliquer s'il te plait à quoi sert la ligne {1,1 -> dim([E] presque tout à la fin?

Sandro
The K le 04/01/2012 à 19:47
Il n'y a que deux passages modifiés winkle.gif Après le "If K=105" et "For(E,1,2" ne recommence pas tout winkle.gif

Citation
sinon ça me paraît bien quoiqu'un peu long pour un morpion


T'as pas vu le vieux morpion de Sango toi xD

Citation
Tu pourrais m'expliquer s'il te plait à quoi sert la ligne {1,1 -> dim([E] presque tout à la fin?


A susciter des commentaires *sifflote* (bon ok j'édite xD)
Na en réalité j'ai rajouté le EffVar [E] après et j'ai du oublier d'effacer la ligne ... enfin un truc du genre merci de me le signaler ^^
sandro le 04/01/2012 à 21:12
De rien,
d'ailleurs, ne pourrait-on pas remplacer
Code
If [E](J,1)=E et [E](J,2)=E et [E](J,3)=E ou [E](1,J)=E et [E](2,J)=E et [3,J]=E ou [E](1,1)=E et [E](2,2)=E et [E](3,3)=E ou [E](1,3)=E et [E](2,2)=E et [E](3,1)=E


Par
Code
If [E](J,1)[E](J,2)[E](J,3)=E [^3] ou [E](1,J[E](2,J)[3,J]=E [^3] ou [E](1,1)[E](2,2)[E](3,3)=E [^3] ou [E](1,3)[E](2,2)[E](3,1)=E [^3]

avec [^3] étant le symbôle cube.

Sandro
The K le 05/01/2012 à 22:29
Les booléens n'ont jamais été ma spécialité ... Vu comme je le comprend la il n'y aurait même pas besoin du cube ... (si les trois conditions sont vraies alors 1*1*1=1)

Peux-tu m'expliquer comment ce petit bout de code marcherait-il ? Micii winkle.gif
linkakro le 06/01/2012 à 01:06
E représente le joueur par 1 ou 2. [E] contient des triplets de 0,1 ou 2.
Quand trois variables vallent E alors le produit de ces variable vaut E^3.
De plus :
0*x*x=0
1*1*1=1=1^3
1*1*2=2
1*2*2=4
2*2*2=8=2^3
Donc réciproquement le produit de ces variables vaut E^3 si chacune vaut E, ce qui est recherché.

==

Ce programme est joli pour un poids raisonnable. C'est sympa. bigmouth.gif

==

HS:
Mon morpion ne possède aucun graphisme mais est probablement le plus léger de tous les morpions avec tests. Téléchargez le via ma signature s'il vous intéresse. (pour ne pas trop encombrer ici)
Je l'ai écrit pour un concours d'optimisation dans lequel je me suis surpassé.
EDIT : 445 octets
Sangohan38 le 06/01/2012 à 06:41
Combien d'octets ton morpion le plus optimisé?
J'arrive à 450 pour mon plus optimisé avec pour seul inconvénient de pouvoir remplacer une croix par un rond.
Et mon premier morpion ... no comment, on a tous fait des premiers programmes hyper lourds.

Sangohan38
linkakro le 06/01/2012 à 09:02
Il occupe 445 octets avec des tests mais aucun graphisme digne de ce nom. (sans blague, on a pratiquement le même poids ahh.gif )
Sangohan38 a écrit :
Et mon premier morpion ... no comment, on a tous fait des premiers programmes hyper lourds.
Je confirme !!! plusieurs milliers pour mon premier.
Sangohan38 le 06/01/2012 à 10:35
Poste ton programme, moi le miens et on vois si on peut pas faire encore plus léger.

Sangohan38
phpMyVisites