MORPION

cs_raff Messages postés 182 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 5 janvier 2004 - 14 mars 2003 à 06:22
cs_BadNews Messages postés 98 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 10 septembre 2007 - 16 mars 2003 à 00:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/6461-morpion

cs_BadNews Messages postés 98 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 10 septembre 2007 1
16 mars 2003 à 00:45
Au lieu de critiquer , essayez donc de l'aider !!!!!!

Je vais essayer de faire ma part...
Mais tu dois savoir que je suis aussi un débutant .

Premièrement , pour savoir qui a la main (à qui est le tours)
tu aurais pu utilisé un variable Boolean .

Exemple : Dim Joueur1 As Boolean
Utilisation : Joueur1 = True >Indique que le joueur1 a la main
Joueur1 = False >Indique que le joueur1 à joué ,donc
le joueur2 a la main.

Deuxièmement , pour les cases du jeux , tu aurais pu
dupliquer ta commande1 pour en faire des
control array . (je dis commande mais tu aurais pu
mettre les images seulments , sans les commandes ,
le joueur n'aurais qu'a cliquer sur ces images
pour jouer. Donc laissons tomber les commandes.

Exemple : Picture1(0) , Picture1(1) , Picture1(2) ...... ( pour les 9 cases )
Note : Tu aurais pu utiliser des labels étant donné que tout ce que tu
as à y inscrire est un "X" ou un "O" . À toi de décider.

Troisièmenent , pour les images , tu aurais du faire deux images
contenant le "X" et le "O" et les 9 autres (case du jeux) vides.
Donc , 11 images au total. À moin que tu utilise des labels .

En bref , à part l'interface , tu n'a que besoin de 11 images
ou de 9 labels.

C'est sur que l'interface est aussi importante , exemple :
- Tu peux mettre un label qui indique qui a la main.
- Tu dois mettre les ligne du jeux (les 4 lignes # ) ,
avec les images/labels biens centré(e)s.
- Tu pourais mettre 2 autres labels qui calcul le total de
partie gagné par chaque joueur.
- Tu pourais même faire en sorte que l'utilisateur dois
s'identifier . Comme ca , au lieu d'incrire "Joueur 1" ,
dans le label qui indique qui a la main , tu pourais
y inscrire le pseudonyme des deux joueurs.

Finalement , pour savoir si quelqu'un gagne tu dois
faire un vérification à chaque fois que quelqu'un joue.
Pour simplifier la chose , fait toi un Private Sub .
Moi aussi j'ai fait un jeu de Tic tac toe (morphion),
le mien fonctionne en ligne avec Winsock , et c'est
effectivement ici que j'ai eu de la difficulté à faire
un code cour et simple. La seul chose que j'ai
trouvé (surement pas la meilleur) est celle ci.
Dans ce jeu , il n'y a que 8 possibilitées de gagné.
Les 3 lignes de haut en bas , les 3 de gauche à
droite et finalement les 2 diagonnales.Donc mon
code auras maximum 8 lignes. Il sagit de vérifier
chaque ligne une à une.

Voici ce que tu as besoin et comment le faire :


Sur ta form :
1) 4 lignes pour l'interface du jeu ( # )
2) 9 Labels (command array) Label1(0) , Label1(1) , Label1(2) .....
1 Labels que tu auras préalablement dupliquer 9 fois
en répondant Oui à la première question demandée :
You already have a control named "Label1".
Do you want to create a control array ?
Note: Si tu utilises des images , tu en as besoin de 11
Tu dois en dupliquer 9 seulement ,Picture1(0) , Picture1(1) ...
Les 2 autre portent les noms de Picture2 et Picture3.
L'image de la Picture2 est un X et celle de la Picture3
est un O .Tu dois les mettre invisible ( Picture2 et 3 ).
3) Un autre Label , celui ci nommé Label2 (savoir qui a la main)

'Debut du code :

'Déclarations :
Dim Joueur1 As Boolean ' Pour savoir qui a la main
Dim i As Integer ' Utilisé pour représenter les 9 labels/Pictures
' On les utilise pour effacer le jeu si quelqu'un gagne
' ou sur un partie nulle
'Jouer :

' Au départ , il faut indiquer que la variable Joueur1 est
' Negative ou Positive (True/False).Dans ce cas , elle
' dois etre positive au départ , pour indiquer que le joueur1
' commence la partie.

Private Sub Form_Load()
Joueur1 = True
End Sub

'Lorsqu'un joueur click sur 1 des 9 labels ( 0 à 8 )

' Dans ce sub , la variable "Index" indique
' le label cliqué entre les 9 labels du jeu. ( 0 à 8 )
' Voisi le code :
' Si tu utilises les image , change le Label1_Click par
' Picture1_Click , à toi de faire le choix .

Private Sub Label1_Click(Index As Integer)
If Joueur1 = True Then ' Si c'est le tour de joueur 1 à jouer ...
' Pour les Labels seulement ....
Label1(Index).Caption = "x" ' On met un "x" dans le bon label
' Pour les Images seulement ....
'Picture1(Index) = Picture2.Picture ' On met la bonne image dans la bonne case
Label2.Caption = "Joueur 2" ' Indique que le joueur 2 à la main
Joueur1 = False ' Indique que le joueur 1 à joué
Verification ' Sub qui détermine le gagnant , vérifié à chaque tour
Exit Sub ' On sort du Sub
Else 'Si c'est le tour de joueur 2 à jouer ...
' Pour les Labels seulement ....
Label1(Index).Caption = "o" ' On met un "o" dans le bon label
' Pour les Images seulement ....
'Picture1(Index) = Picture3.Picture ' On met la bonne image dans la bonne case
Label2.Caption = "Joueur 1" ' Indique que le joueur 1 à la main
Joueur1 = True ' Indique que le joueur 2 à joué
Verification ' Sub qui détermine le gagnant , vérifié à chaque tour
End If ' Fin de la fonction "IF"
End Sub

'Déterminer le gagnant

' Comme je l'ai mentionné plus haut , il y a surement un facon
' beaucoup plus simple de déterminer le gagnant , mais
' je ne l'ai pas trouvé. De tout facon ,comme il n'y a que
' 8 possibilitées , le code ne seras pas pas trop long.
' Tu te fais donc un Private Sub nommé "Verification"
' Cette exemple ne fonctionne qu'avec les Labels
' Pour les image , change les "x" et les "o" pour Picture2.Picture ou Picture3.Picture
' et Label1 par Picture1 Ex: If (Picture1(0).Picture = Picture2.Picture) And ....

Private Sub Verification()
' Vérification pour chaques possibilitées ( 16 au total ;pour les "x" et les "o") & Appelle le Sub qui indique le gagnant
'Si un joueur gagne , on ne change pas la variable Joueur1 de sorte à ce que l'autre joueur (le perdant) commence l'autre partie
' Même chose pour les partie nulle
If (Label1(0).Caption "x") And (Label1(1).Caption "x") And (Label1(2).Caption = "x") Then Gagner "1" ' Pour les "x" , le joueur 1 est le gagnant
If (Label1(0).Caption "o") And (Label1(1).Caption "o") And (Label1(2).Caption = "o") Then Gagner "2" ' Pour les "o" , le joueur 2 est le gagnant
If (Label1(3).Caption "x") And (Label1(4).Caption "x") And (Label1(5).Caption = "x") Then Gagner "1"
If (Label1(3).Caption "o") And (Label1(4).Caption "o") And (Label1(5).Caption = "o") Then Gagner "2"
If (Label1(6).Caption "x") And (Label1(7).Caption "x") And (Label1(8).Caption = "x") Then Gagner "1"
If (Label1(6).Caption "o") And (Label1(7).Caption "o") And (Label1(8).Caption = "o") Then Gagner "2"
If (Label1(0).Caption "x") And (Label1(3).Caption "x") And (Label1(6).Caption = "x") Then Gagner "1"
If (Label1(0).Caption "o") And (Label1(3).Caption "o") And (Label1(6).Caption = "o") Then Gagner "2"
If (Label1(1).Caption "x") And (Label1(4).Caption "x") And (Label1(7).Caption = "x") Then Gagner "1"
If (Label1(1).Caption "o") And (Label1(4).Caption "o") And (Label1(7).Caption = "o") Then Gagner "2"
If (Label1(2).Caption "x") And (Label1(5).Caption "x") And (Label1(8).Caption = "x") Then Gagner "1"
If (Label1(2).Caption "o") And (Label1(5).Caption "o") And (Label1(8).Caption = "o") Then Gagner "2"
If (Label1(0).Caption "x") And (Label1(4).Caption "x") And (Label1(8).Caption = "x") Then Gagner "1"
If (Label1(0).Caption "o") And (Label1(4).Caption "o") And (Label1(8).Caption = "o") Then Gagner "2"
If (Label1(2).Caption "x") And (Label1(4).Caption "x") And (Label1(6).Caption = "x") Then Gagner "1"
If (Label1(2).Caption "o") And (Label1(4).Caption "o") And (Label1(6).Caption = "o") Then Gagner "2"
' Partie Nulle ....
If (Label1(0).Caption <> "") And (Label1(1).Caption <> "") And (Label1(2).Caption <> "") And (Label1(3).Caption <> "") And (Label1(4).Caption <> "") And (Label1(5).Caption <> "") And (Label1(6).Caption <> "") And (Label1(7).Caption <> "") And (Label1(8).Caption <> "") Then
MsgBox " Partie Nulle !! ", , " :) " ' Message qui indique que la partie est nulle
' On efface tout les cases
For i = 0 To 8
Label1(i).Caption = ""
' Pour les Images seulment
'Picture(i).Picture = Nothing
Next
End If
End Sub

' Le gagnant

' Fait toi un autre Private Sub nommé Gagner et met une
' variable String.

Private Sub Gagner(Joueur As String) ' Message pour le gagnant
If Joueur = "1" Then
MsgBox "Le joueur 1 a gagné"
Else
MsgBox "Le joueur 2 a gagné"
End If
' On efface tout les cases
For i = 0 To 8
Label1(i).Caption = ""
' Pour les PictureBox
'Picture(i).Picture = Nothing
Next
End Sub

' Fin du code


Et voila !! ..... Suite à ce commentaire , je suis certain que d'autre
personne vont venir tout de suite donner plusieur facons
beaucoup plus simple , à quelque part , c'est ce que je souhaite ,
moi aussi je suis débutant et je veux apprendre .. = )

Si tu as d'autre question , envoie moi un message ..!.!
J'espère t'avoir aider ... )
Bad*News=
cs_raff Messages postés 182 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 5 janvier 2004 3
15 mars 2003 à 23:58
bon moi je suis désolé mais franchement y a pas d'offense....après tout, on a vu pire même après 2 semaines....

eh guidelor putain mais t'as vraiment une belle tronche pour un Français !!! hehe...
Guidelor Messages postés 236 Date d'inscription jeudi 31 octobre 2002 Statut Membre Dernière intervention 18 août 2006
15 mars 2003 à 22:01
Tu sais bien que ce sont les reproches et les erreurs qui construisent l'homme !
(Voltaire , 1956)
cs_Belgium Messages postés 1 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 15 mars 2003
15 mars 2003 à 20:08
bande de conard moi g mis cette source pour avoir de l'aide pq sa fé seulement 2 semaines que g commencé le VB
Guidelor Messages postés 236 Date d'inscription jeudi 31 octobre 2002 Statut Membre Dernière intervention 18 août 2006
15 mars 2003 à 17:35
Quelle horreur !!!
je ne peux que t'encourager à progresser , ca ne va pas être difficile , et encore
tu pe simplifier 100 fois ton code, genre avec des boucles
Stp, pense à supprimer cette source ;)

C'est un bien un jeu de belge , ca !
cs_raff Messages postés 182 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 5 janvier 2004 3
14 mars 2003 à 06:22
c'est vraiment de la grosse merde ton jeu de morpion !!!! Vraiment c'est pas pour être méchant, mais t'as pas honte non ?
Rejoignez-nous