Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 583
Réponses : 7
Type : discussion
Etat : réponses autorisées

Besoin d'aide verification Morpion

saucisson_furtif le 05/04/2012 à 22:41
Hello!
J'ai besoin d'aide pour la suite de mon morpion, il est complètement fonctionnel et extrêmement léger (moins de 400 Octets) mais je na vois pas comment coder un programme qui pourrait reconnaître qui a gagné, pour l'instant faut appuyer sur + ou * pour augmenter les scores manuellement...

Code
: 0=>A
: 0=>B
: Lbl 0
: EffEcr
: Output(2,11,"J1
: Output(2,14,A
: Output(6,11,"J2
: Output(6,14,B
: 1=>M
: Disp "+-+-+-+","! ! ! !","+-+-+-+","! ! ! !","+-+-+-+","! ! ! !","+-+-+-+
: Lbl 1
: M+1=>M
: 0=>K
: While K=0
: codeTouche=>K
: End
: If K[Sup ou egal]92 et K[Inf ou egal]94:6=>Y
: If K[Sup ou egal]82 et K[Inf ou egal]84:4=>y
: If K[Sup ou egal]72 et K[Inf ou egal]74:2=>Y
: If K=72 ou K=82 ou K=92:2=>X
: If K=73 ou K=83 ou K=93:4=>X
: If K=74 ou K=84 ou K=94:6=>X
: (-1)^M=>N
: If N=-1 et K[Different de]75 et K[Different de]95:Output(Y,X,''0
: If N=1 et K[Different de]75 et K≠95:Output(Y,X,''X
: If K=103:Goto 0
: If K=75
: Then
: A+1=>A
: Output(2,14,A
: End
: If K=95
: Then
: B+1=>B
: Output(6,14,B
: End
: Goto 1


Certes c'est pas graphique, mais c'est très léger et quand même agréable à jouer. Par ailleur si quelqu'un trouve comment l'alléger encore plus, je suis preneur!
Merci d'avance clown.gif
Sangohan38 le 06/04/2012 à 10:48
Il te faut stocker la variable N soit dans une liste, soit dans d'autres variables selon la touche et si la somme de celles-ci vaut 3, tu affiche le gagnant.
Concrètement, j'arrive à ceci sur mon programme optimisé:

Code
EffEcr
EffListe L
9ü ( ) dim(L
1ü ( ) A
Disp "+-+-+-+","! ! ! !","+-+-+-+","! ! ! !","+-+-+-+","! ! ! !","+-+-+-+"
Lbl 1
0ü ( ) K
codeTouch(ü ( ) K
partEnt(.1K-6)ü ( ) Y
10partD–c(.1K)-1ü ( ) X
If X<1 ou X>3 ou Y<1 ou Y>3 ou 1=abs(X+L(3(Y-1
Goto 1
If A=1:Output(2Y,2X,"X
If A=ú ( ) 1:Output(2Y,2X,"O
ú ( ) Aü ( ) A
Aü ( ) L(X+3(Y-1
If 1ø(abs(L(1)L(2)L(3))abs(L(4)L(5)L(6))abs(L(7)L(8)L(9))abs(L(1)L(4)L(7))
abs(L(2)L(5)L(8))abs(L(3)L(6)L(9))abs(L(1)L(5)L(9))abs(L(3)L(5)L(7
Goto 1
abs(A)+(A=1->B
Output(8,1,"JOUEUR   GAGNE!"
Output(8,8,B
Pause
EffEcr
Output(1,1,"   


Sangohan38
The K le 06/04/2012 à 15:11
Sango il y a quelques coquilles & caractères spéciaux dans ton code winkle.gif
Persalteas le 06/04/2012 à 16:31
ü c'est sto->
ú c'est le moins de la négativité.
saucisson_furtif le 06/04/2012 à 19:54
Wahou merci beaucoup sangohan! Juste un truc, que signifient abs et ø? Ca me bloque j'arrive pas à comprendre le programme là xD
sandro le 06/04/2012 à 22:50
le rond barré m'a l'air ici d'être le signe différent de.
Sinon abs( est la fonction valeur absolue qui se trouve dans le menu math/num/1
enfin, pour optimiser, je pense que si tu veux rajouter la vérification de victoire, il vaut mieux commencer par créer celle_ci et optimiser ensuite, vu qu'elle risque d'entrainer un certain nombre de modifications.

Sandro
Xemnas le 25/04/2012 à 18:51
Essaie d'ffecter une variable à chaque case pour chaque joueur. variable=0 : aucun symbole dans la case. variable=0 : symbole rond ou croix. Ensuite à toi de faire coincider pour que quand trois même symbole sont alignés le programme le détecte et dise qui est gagnant.
ça te bouffe beaucoup de mémoire comme ça, et beaucoup de variables mais c'est sûrement le mieux.
Sangohan38 le 26/04/2012 à 16:20
A mon avis le mieux reste d'utiliser la liste où la matrice car tu peux faire une boucle de 1 à 3 pour détecter les lignes et colonnes.

Sangohan38