Forum

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

Jeu de morpion multijoueur

nanoseb le 29/08/2008 à 13:57
bonjour
je poste ici deux nouvelles versions de mon morpion
- une a deux joueurs sur une ti et l'autre à deux joueurs sur deux ti
( les touches sont celles de 1 à 9, elles représentes les cases)

et voici pour les .83p
la première version (629o)
Code
2ü ( ) D
0ü ( ) T
0ü ( ) U
{3,3}ü ( ) dim([A]
Lbl Á
0ü ( ) G
0ü ( ) C
0ü ( ) A
0ü ( ) B
0ü ( ) H
0ü ( ) L
ClrHome
Fill(0,[A]
Output(1,1,">< +--+--+--+()    !  !  !  !      +--+--+--+      !  !  !  !      +--+--+--+      !  !  !  !      +--+--+--+
Output(2,1,T
Output(2,15,U
Lbl 2
abs(D-3)ü ( ) D
Output(8,8,"><
If D=2
Output(8,8,"()
0ü ( ) A
Lbl 1
getKeyü ( ) C
round(C/10,0)-6ü ( ) A
C-61-A10ü ( ) B
If B÷ ( ) 0 or A÷ ( ) 0 or Cù ( ) 95
Goto 1
If [A](A,B)=0
Then
Dü ( ) [A](A,B)
Else
Goto 1
End
3B+2ü ( ) B
2Aü ( ) A
If D=2
Output(A,B,"()
If D=1
Output(A,B,"><
H+1ü ( ) H
If Hù ( ) 5
Then
If H=9
3ü ( ) G
For(R,1,3
If ([A](R,1)=D and [A](R,2)=D and [A](R,3)=D) or ([A](1,R)=D and [A](2,R)=D and [A](3,R)=D) or ([A](1,1)=D and [A](2,2)=D and [A](3,3)=D) or ([A](1,3)=D and [A](2,2)=D and [A](3,1)=D)
Dü ( ) G
End
End
If Gø0
Goto 3
Goto 2
Lbl 3
ClrHome
If G=1
Then
Output(4,5,">< A GAGNE
T+1ü ( ) T
End
If G=2
Then
Output(4,5,"() A GAGNE
U+1ü ( ) U
End
If G=3
Output(4,5,"MATCH NUL
Pause
Goto Á



2ème version (785o)
Code
2ü ( ) D
2ü ( ) Á
Menu(">MORPION V 2.0< ","><",A,"()",B
Lbl A
1ü ( ) Á
Lbl B
0ü ( ) T
0ü ( ) U
Lbl Á
0ü ( ) G
0ü ( ) C
0ü ( ) A
0ü ( ) B
0ü ( ) H
ClrHome
{3,3}ü ( ) dim([A]
Fill(0,[A]
Output(1,1,">< +--+--+--+()    !  !  !  !      +--+--+--+      !  !  !  !      +--+--+--+      !  !  !  !      +--+--+--+
Output(2,1,T
Output(2,15,U
Lbl 2
0ü ( ) X
0ü ( ) Y
abs(D-3)ü ( ) D
Output(8,8,"><
If D=2
Output(8,8,"()
If Á=D
Then
Lbl 1
getKeyü ( ) C
round(C/10,0)-6ü ( ) A
C-61-A10ü ( ) B
If B÷ ( ) 0 or A÷ ( ) 0 or Cù ( ) 95
Goto 1
If [A](A,B)=0
Then
Dü ( ) [A](A,B)
Else
Goto 1
End
1ü ( ) X
Pause
Pause
End
If ÁøD
Then
While Xø1
Get(X
End
Get([A]
End
H+1ü ( ) H
0ü ( ) X
For(N,1,3
For(I,1,3
2Iü ( ) A
3N+2ü ( ) B
If [A](I,N)=1
Output(A,B,"><
If [A](I,N)=2
Output(A,B,"()
End
End
If Á=1 and Hù ( ) 5
Then
If H=9
3ü ( ) G
For(R,1,3
If ([A](R,1)=D and [A](R,2)=D and [A](R,3)=D) or ([A](1,R)=D and [A](2,R)=D and [A](3,R)=D) or ([A](1,1)=D and [A](2,2)=D and [A](3,3)=D) or ([A](1,3)=D and [A](2,2)=D and [A](3,1)=D)
Dü ( ) G
End
1ü ( ) Y
Pause
Pause
End
If Á=2
Then
While Yø0
Get(Y
End
Get(G
End
If Gø0
Goto 3
Goto 2
Lbl 3
ClrHome
If G=1
Then
Output(4,5,">< A GAGNE
T+1ü ( ) T
End
If G=2
Then
Output(4,5,"() A GAGNE
U+1ü ( ) U
End
If G=3
Output(4,5,"MATCH NUL
Pause
Goto Á


EDIT : mise a jour des codes (30/08/08 )
Sangohan38 le 29/08/2008 à 19:06
A mon avis, il serait plus imple et plus économique en octets d'utiliser des listes au lieu des matrices.
De plus, évite d'utiliser les then/end car ils ralentissent le programme.

Dans ton cas, au lieu de mettre:
Code
If Cù ( ) 72 and C÷ ( ) 74
Then
1ü ( ) A
C-71ü ( ) B
End
If Cù ( ) 82 and C÷ ( ) 84
Then
2ü ( ) A
C-81ü ( ) B
End
If Cù ( ) 92 and C÷ ( ) 94
Then
3ü ( ) A
C-91ü ( ) B
End


Met plutôt:
Code
If Cù ( ) 72 and C÷ ( ) 74
1ü ( ) A
If Cù ( ) 82 and C÷ ( ) 84
2ü ( ) B
End
If Cù ( ) 92 and C÷ ( ) 94
3ü ( ) A
C-61-A10ü ( ) B


Sangohan38
nanoseb le 29/08/2008 à 19:13
merci bonne idée je vais faire çà et mettre a jour le 1er post
webmaster le 30/08/2008 à 12:35
Premier sujet de l'année scolaire 2008-2009 ! Ca sent la rentrée...

@+ Le Webmaster beer.gif
mad67 le 30/08/2008 à 13:37
dire que j'ai failli parier que le forum était mort

sinon bon programme malgré quelques ralonges
nanoseb le 30/08/2008 à 18:20
j'ai un peu amélioré mon code et je suis en train de faire un avec une "intelligence artificiel" je posterai le code une fois fini
Sangohan38 le 30/08/2008 à 20:13
Pendant les vacances scolaires, les forums sont en générale moins actifs.
Sinon, pour le code, on peut encore le réduire:
Code
If [A](A,B)=0
Then
Dü ( ) [A](A,B)
Else
Goto 1


Devient:
Code
If [A](A,B)=0
Dü ( ) [A](A,B)
If [A](A,B)[différent de]0
Goto 1


De plus:
Code
Lbl 3
ClrHome
If G=1
Then
Output(4,5,">< A GAGNE
T+1ü ( ) T
End
If G=2
Then
Output(4,5,"() A GAGNE
U+1ü ( ) U
End
If G=3
Output(4,5,"MATCH NUL
Pause
Goto Á


Peut devenir:
Code
Lbl 3
ClrHome
Output(4,8,"A GAGNE
If G=1
Output(4,5,"><
If G=1
T+1ü ( ) T
If G=2
Output(4,5,"()
If G=2
U+1ü ( ) U
If G=3
Output(4,5,"MATCH NUL
Pause
Goto Á


Sangohan38
mad67 le 31/08/2008 à 10:03
après il fau t arreter de descendre le programme.
d'ailleur pour la nouvelle version de pes sans lag j'ai besoin d'aide pour raccourcir et atteindre l'objectif de 1 match = 1 minute je montrerais le code bientot.
Sangohan38 le 31/08/2008 à 11:55
Je ne descend pas le programme mais je chercche à montrer comment l'améliorer.
Pour ton programme, ce n'est pas le bon sujet.

Sangohan38
ratuss le 31/08/2008 à 11:59
Code
If [A](A,B)[différent de]0
Goto 1
Dü ( ) [A](A,B)


ca revient au même que :

Code
If [A](A,B)
Goto 1
Dü ( ) [A](A,B)


:p
Chwood le 23/09/2008 à 17:00
Bah pour l'instant ça a l'air de marcher ... et du premier coup en plus !!!

Merci beaucoup

Chwood eyeonly.gif