Sentynel
Messages postés85Date d'inscriptionjeudi 7 janvier 2010StatutMembreDernière intervention13 juillet 2013
-
16 juil. 2011 à 00:23
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
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
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 16 juil. 2011 à 21:47
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.
Sentynel
Messages postés85Date d'inscriptionjeudi 7 janvier 2010StatutMembreDernière intervention13 juillet 2013 16 juil. 2011 à 01:55
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
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 16 juil. 2011 à 15:26
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.
Sentynel
Messages postés85Date d'inscriptionjeudi 7 janvier 2010StatutMembreDernière intervention13 juillet 2013 16 juil. 2011 à 19:05
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.
Sentynel
Messages postés85Date d'inscriptionjeudi 7 janvier 2010StatutMembreDernière intervention13 juillet 2013 18 juil. 2011 à 15:00
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.