Tic tac toe - Probleme avec IA [Résolu]

Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 16 juil. 2011 à 00:23 - Dernière réponse : NHenry 14182 Messages postés vendredi 14 mars 2003Date d'inscription 25 mai 2018 Dernière intervention
- 18 juil. 2011 à 22:33
Bonjour,
J'ai commencer a faire un tic tac toe, le mode multi marche super mais j'ai des problemes pour faire l'IA du mode solo.
Est-ce que quelqu'un pourrai m'aider s'il vous plait ?

Vous ci le code quand ont click sur une case :

   Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer
        Dim Generator As System.Random = New System.Random()
        Return Generator.Next(Min, Max)
    End Function

    Private Sub Buttons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonHG.Click, ButtonHM.Click, ButtonHD.Click, ButtonMG.Click, ButtonMM.Click, ButtonMD.Click, ButtonBG.Click, ButtonBM.Click, ButtonBD.Click
        If ArackionStartup.ThemeComboBox.Text = "Par defaut" Then
            If turn = False Then
                DirectCast(sender, Button).BackgroundImage = My.Resources.Cross_DEFAUT
                DirectCast(sender, Button).Text = "X"
                DirectCast(sender, Button).Enabled = False
                turn = True
            ElseIf turn = True Then
                Dim intrand As Integer = GetRandom(0, 8)
                If (intrand = 0) Then
                    If ButtonHG.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonHG.Enabled = True Then
                        ButtonHG.Text = "O"
                        ButtonHG.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonHG.Enabled = False
                    End If
                ElseIf (intrand = 1) Then
                    If ButtonHM.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonHM.Enabled = True Then
                        ButtonHM.Text = "O"
                        ButtonHM.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonHM.Enabled = False
                    End If
                ElseIf (intrand = 2) Then
                    If ButtonHD.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonHD.Enabled = True Then
                        ButtonHD.Text = "O"
                        ButtonHD.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonHD.Enabled = False
                    End If
                ElseIf (intrand = 3) Then
                    If ButtonMG.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonMG.Enabled = True Then
                        ButtonMG.Text = "O"
                        ButtonMG.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonMG.Enabled = False
                    End If
                ElseIf (intrand = 4) Then
                    If ButtonMM.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonMM.Enabled = True Then
                        ButtonMM.Text = "O"
                        ButtonMM.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonMM.Enabled = False
                    End If
                ElseIf (intrand = 5) Then
                    If ButtonMD.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonMD.Enabled = True Then
                        ButtonMD.Text = "O"
                        ButtonMD.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonMD.Enabled = False
                    End If
                ElseIf (intrand = 6) Then
                    If ButtonBG.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonBG.Enabled = True Then
                        ButtonBG.Text = "O"
                        ButtonBG.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonBG.Enabled = False
                    End If
                ElseIf (intrand = 7) Then
                    If ButtonBM.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonBM.Enabled = True Then
                        ButtonBM.Text = "O"
                        ButtonBM.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonBM.Enabled = False
                    End If
                ElseIf (intrand = 8) Then
                    If ButtonBD.Enabled = False Then
                        GetRandom(0, 8)
                    ElseIf ButtonBD.Enabled = True Then
                        ButtonBD.Text = "O"
                        ButtonBD.BackgroundImage = My.Resources.Circle_DEFAUT
                        ButtonBD.Enabled = False
                    End If
                End If
                    turn = False
            End If
        End If
    End Sub
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
NHenry 14182 Messages postés vendredi 14 mars 2003Date d'inscription 25 mai 2018 Dernière intervention - 16 juil. 2011 à 21:47
3
Merci
Bonjour,

Comment l'as-tu codé mon exemple ?
Quand tu dis que "ça ne marche pas", précises toujours les détails, ce n'est pas assez précis.
Ensuite, si ça te mets un rond, ça veut dire que Enabled=True, donc que ton problème' n'est pas là où tu l'indique.

Mon site

Merci NHenry 3

codes-sources a aidé 81 internautes ce mois-ci

Commenter la réponse de NHenry
NHenry 14182 Messages postés vendredi 14 mars 2003Date d'inscription 25 mai 2018 Dernière intervention - 16 juil. 2011 à 01:14
0
Merci
Bonjour,

Quel est ton pb ?
Ce que ça fait actuellement et ce que tu veux que ça fasse.

Mon site
Commenter la réponse de NHenry
Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 16 juil. 2011 à 01:55
0
Merci
Mon probleme est que le "O" se place n'importe où. je sais que c'est censé etre random mais je voudrai qu'il ne se place pas sur les button desactivé.
Voici le code source complet en cas de besoin :
http://dl.dropbox.com/u/24209719/Arackion.zip

Merci.
Commenter la réponse de Sentynel
NHenry 14182 Messages postés vendredi 14 mars 2003Date d'inscription 25 mai 2018 Dernière intervention - 16 juil. 2011 à 15:26
0
Merci
Bonjour,

As-tu testé en pas à pas pour voir les valeurs des différentes variables ?
If .. then
Elseif .. then
...
End If
Peut se remplacer par un
Select Case ..
Case ...
...
End Select

A quoi servent les
If ButtonBG.Enabled = False Then
GetRandom(0, 8)
ElseIf ButtonBG.Enabled = True Then
?

Autre technique pour la sélection aléatoire de la case :
Dim lLst as list(of Button)=new list(of Button)
If ButtonHG.Enabled Then
    lLst.Add(ButtonHG)
End If
If ButtonBD.Enabled Then
    lLst.Add(ButtonBD)
End If
...

'Récupération du bouton à utiliser
Dim lButtonSelect as Button=lLst(GetRandom(0,lLst.Count-1))


Il s'agit d'une autre manière de voir la chose, et ça te permettra peut être de faire un code plus concis et peut être plus facilement compréhensible.

Mon site
Commenter la réponse de NHenry
Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 16 juil. 2011 à 19:05
0
Merci
Non j'ai pas essayer avec Select Case, à vrai dire j'ai pas appris comment ceux-ci marchaient. (je suis en quelques sortes débutant même si j'ai déjà quelques logiciels bien avancer à mon actifs)

J'ai essayer de remplacer le code par celui que vous m'avez donner mais ca ne marche toujours pas.
Commenter la réponse de Sentynel
Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 18 juil. 2011 à 15:00
0
Merci
Bonjour,

J'ai enfin trouver mon erreur, j'avais au part avant mit dans le mode multijoueur un boolean qui changeait en false ou true suivant le joueur désigné. Il me suffisais de le retirer et d'adapter le code pour que les O s'affichent correctement.

Je vous remercie :)
Commenter la réponse de Sentynel
NHenry 14182 Messages postés vendredi 14 mars 2003Date d'inscription 25 mai 2018 Dernière intervention - 18 juil. 2011 à 22:33
0
Merci
Bonjour,

L'emplacement de l'IA me surprenait aussi :)

Si ton problème est résolu, penses à mettre "Réponse acceptée" sur le ou les messages qui t'ont aidés.

Mon site
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.