Un Morpion en mode graphique avec à votre disposition quelques "animations" 8) selon si vous gagnez ou perdez.
Vous pouvez jouer au choix contre une ia ou tout simplement en mode deux joueurs.
Je sais l'I.A n'est pas très difficile à battre quand vous savez jouer, bon...
Mais quand vous savez jouer et que vous commencez à jouer, qui peut vous battre???
Pour un peu plus de défi (je dis vraiment un peu) vous pouvez choisir de la laisser commencer à jouer (c'est pour ça que j'ai ajouté cette option d'ailleurs).
Le fichier est assez lourd car je ne programme pas très proprement, veuillez m'en excuser.
Je n'ai qu'un .g1m et un .txt à ma disposition car je ne sais pas comment convertir en .fxi, aussi je vous serai reconnaissant d'en mettre un à disposition.
Je suis désolé Totoyo, j'ai revérifié tout mon code ( et ça fait beaucoup ), c'est bien un "=>". la citation de eyeron est au milieu d'une condition. De plus, je ne donne comme valeur à Mat A que 1 si c'est une croix et 2 si c'est un rond.
@Nitrosax.
Quoi qu'est-ce qu'il y a?
Un peu d'humilté ne fait jamais de mal a personne.
Là, pour moi, c'est plus cohérent que 72=>Mat A[3,1]
Bref, passons
Sinon, j'ai regardé ton code vite fait, mais il peut être optimisé grandement. Il y a de gros bloc de codes qui se ressemble tous, mais il y a juste un chiffre qui change. Utilise la fonction For qui t'allègera ton code ! Tu peux réduire la taille de ton programme de 50% facilement
Sinon, j'ai regardé ton code vite fait, mais il peut être optimisé grandement. Il y a de gros bloc de codes qui se ressemble tous, mais il y a juste un chiffre qui change. Utilise la fonction For qui t'allègera ton code ! Tu peux réduire la taille de ton programme de 50% facilement
En fait j'y ai repensé au calme et je me suis rendu compte que ce n'était pas si simple que ça car contrairement à ce que l'on peut croire, il y a pas mal de choses qui changent. pour moi le seul moyen d'y remédier serait de mettre de If partout mais cela augmenterait encore le poids du prog.
Pourrais tu me dire comment optimiser, par exemple, la série de conditions ci-jointes stp?
Merci d'avance
Tu vérifies 4 fois de suite des conditions identiques.
If C=72 And 0=Mat A[3,1
Then F-Line 5,5,18,18
F-Line 5,18,18,5
J-1->J
1->Mat A[3,1
IfEnd
Petite précision : tu n'es pas obligé de fermer les parenthèses et les accolades à la fin d'une ligne, comme c'est le cas pour Mat A[3,1 dans cette exemple.
De même, si on regarde le bloc dans son ensemble (ce qui suit), on voit que tout se répète. Il faut trouver quelques variables, beaucoup de formules sont redondantes.
On va donc optimiser ce gros tas de bloc tout moche. Pas besoin de For dans ce cas là :
3(7-Int (.1C))+10Frac (.1C)-1->Z [green]// On convertit le Getkey par une valeur entre 1 et 9, plus facile à manipuler.[/green]
If Z>=1 And Z<=9 [green]// On vérifie que le joueur a appuyé sur une bonne touche[/green]
Then Int ((Z-1)/3->X
Z-3X-1->Y [green]// X et Y faut permettre d'adapter les F-Line à n'importe quelle valeur de ton Getkey (ou de Z)[/green]
If 0=Mat A[Y+1,3-X [green]// On vérifie que la case n'a pas encore été jouée[/green]
Then F-Line 5+21X,5+21Y,18+21X,18+21Y
F-Line 5+21X,18+21Y,18+21X,5+21Y [green]// On trace la croix[/green]
J-1->J
1->Mat A[Y+1,3-X
IfEnd
IfEnd
Normalement, le code marche correctement, je l'ai testé sur ma casio. Après, il ne te reste qu'à l'adapter à ton programme, vu que j'ai employé les variables X,Y et Z par défaut. De même, ce code n'est pas 100% optimisé, il est toujours possible de faire mieux !
Voilà un exemple de simplification. Il devrait faire la même chose que le tien, mais avec une vitesse d'exécution bien plus rapide et moins de mémoire est consommée.
If 72=C(0=Mat A[3,1
Then 18
F-Line 5,5,Ans,Ans
F-Line 5,Ans,Ans,5
Dsz J
1->Mat A[3,1
Pas besoin de Ifend si c'est en fin de programme, mais ça m'étonnerait
3(7-Int .1C)-1+10Frac .1C->Z
If Z>=1 And Z<=9
Then Int 3^-1(Z-1->X
Z-3X-1->Y
If 0=Mat A[Y+1,3-X
Then 21
F-Line 5+AnsX,5+AnsY,18+AnsX,18+AnsY
F-Line 5+AnsX,18+AnsY,18+AnsX,5+AnsY
Dsz J
1->Mat A[Y+1,3-X
Int : Rend la valeur entière. Cette commande enlève simplement tous les chiffres derrière la virgule et n’arrondit pas.
exemple: Int(2.7)= 2
Int (256.4)=256
frac : Donne la valeur décimale d’un nombre. Cette commande garde juste ce qu’il y a après la virgule et met un 0 avant, enlevant le nombre qui s’y trouvait.
exemple: Frac(2.7)= 0.7
Frac (256.4)=0.4
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd