Master mind en visual basic.net

j’ai commencer a faire un master mind, le code génère une combinaison aléatoire, j’ai déjà fais quelques autres fonctions, n’y faite pas attention il ne servent pas au niveau de mon problème ;
j’ai fait des carrés de couleur différente correspondant au couleur existante dans le jeu bien sur , à chaque essais, on créé X instance de boutons, avec X= nombre de “pion” par combinaison. je pensais utiliser le glisse déplacer des carrés de couleur (picturesbox) sur les boutons pour leur attribuer la couleur des picturesbox en “backgroundcolor”
le problème c’est que mes picturesbox restent fixe, impossible de les bouger :s
je ne sais pas comment m’y prendre



Public Class MasterMind
    Public couleur(8) As Color  'tableau contenant les couleurs des "pions"
    Public inconnu As New Integer  'nombre représentant la longueur de la combinaison a trouver
    Public colors As New Integer  ' nombre de couleur disponible pour generer la solution
    Public unique As New Boolean  'indique si on peut avoir plusieur fois la meme couleur dans une combinaison
    Public alea As New Integer  'entier qu'on utilisera en temps que nombre aléatoire
    Public couleuruse(8) As Boolean  ' indique si une couleur a deja été utilisé pour generer la solution
    Public sol(8) As Color   ' tableau de couleur contenant la solution
    Public soluce(8) As Button  'bouton dans les quels on placera les couleur de la solution a l'affichage de la solution
    Public ligne(8) As Button   'bouton sur les quels l'utilisateur placera les couleurs qu'il veut proposer
    Dim premier As Boolean = True  'vrai si c'est la premiere fois que l'on affiche la solution
    Dim j As Integer  ' compteur de tentative





    Public Sub validerDiff()
        If colors < inconnu Then
            colors = inconnu
            MsgBox("pas assez de couleur pour ne pas avoir de doublons, " & Chr(13) & "le nombre de couleur à été ajusté au nombre d'inconnues")
        End If
    End Sub

    Public Sub initialiserSol()    'generateur de combinaison aleatoire
        If unique Then
            For i = 1 To inconnu
                Do
                    Randomize()
                    alea = CInt(Rnd() * colors + 1)
                Loop While (couleuruse(alea) = True)
                sol(i) = couleur(alea)
                couleuruse(alea) = True
            Next
        Else
            For i = 0 To inconnu
                sol(i) = couleur(alea)
                couleuruse(alea) = True
            Next
        End If
        For i = 1 To 8
            couleuruse(i) = False
        Next
        alea = 0
    End Sub


    Public Sub nouvelleligne()
        For i = 1 To inconnu
            ligne(i) = New Button
            ligne(i).Parent = panel1
            ligne(i).Left = (i * 5) + (i - 1) * 50
            ligne(i).Width = 50
            ligne(i).Top = 450 - ((j * 5) + (j - 1) * 50)
            ligne(i).Height = 50
            ligne(i).Visible = True

        Next

    End Sub


    Private Sub NouveauJeu_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles NouveauJeu.Click


        validerDiff()   ' si la combinaison ne peut pas avoir de doublons et que le nombre de couleurs utilisable est inferieur au nombre d'inconnu,
        initialiserSol()  'il vas y avoir un probleme ^^
        j = 1     ' compteur de tentatives
        nouvelleligne() 'on creer une nouvelle ligne
        Label2.Text = j




    End Sub



   

    Private Sub MasterMind_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        couleur(1) = Color.Maroon
        couleur(2) = Color.White
        couleur(3) = Color.Blue                       ' initialisation du tableau de couleur
        couleur(4) = Color.Red
        couleur(5) = Color.Yellow
        couleur(6) = Color.Green
        couleur(7) = Color.Orange
        couleur(8) = Color.Black
        inconnu = 5                                        'valeur par default (enregistrée dans un fichier de configuration pour que l'uttilisateur puisse modifier
        colors = 7                                          ' les valeurs)
        unique = True
        For i = 1 To colors
            couleuruse(i) = False
            If colors < 5 Then
                PictureBox5.Visible = False    'suivant le nombre de couleur utilisable pour generer la solution on cache celle qui sont inutiles
                PictureBox6.Visible = False
                PictureBox7.Visible = False
                PictureBox8.Visible = False
            ElseIf colors < 6 Then
                PictureBox6.Visible = False
                PictureBox7.Visible = False
                PictureBox8.Visible = False
            ElseIf colors < 7 Then
                PictureBox7.Visible = False
                PictureBox8.Visible = False
            ElseIf colors < 8 Then
                PictureBox8.Visible = False
            End If
        Next




    End Sub


'affichage de la solution

    Private Sub Solution_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Solution.Click
        Dim pannel As New Panel()


        If premier Then
            For i = 1 To inconnu
                soluce(i) = New Button()
                soluce(i).BackColor = sol(i)
                soluce(i).Parent = Panel
                soluce(i).Left = (i * 5) + (i - 1) * 50
                soluce(i).Width = 50
                soluce(i).Top = 5
                soluce(i).Height = 50
                soluce(i).Visible = True
                premier = False
            Next
        Else
            For i = 1 To inconnu
                soluce(i).BackColor = sol(i)
            Next
        End If
    End Sub
End Class

les couleurs à faire glisser sur les boutons son les picturebox1 a 8, l’ordre des couleur correspond a celui dans le tableau de couleur

merci


erf, j'ai désactiver les smiley mais il les affiches quand même les têtes a lunette sont a remplacer par " 8 )"
si le souhaitez je peux upper mon code Edité le 08/02/2009 à 22:32

Pour ne pas avoir les smileys ou autres dans ton code, entoure le avec les balises [code] [/ code]

voila mais ca résoud pas mon probleme ^^ :stuck_out_tongue:

Tu dis que tes picturebox refusent de bouger. En même temps, si tu n’écris pas un bout de code pour les faire bouger, elle ne le feront pas toutes seules :paf:

justement j’aimerai connaitre la méthode a utiliser pour les faire bouger (j’ai trouver entre temps : on déclenche un drag sur moussedown) mais après je ne sais pas sur quel événement placer la couleur des boutons, j’ai penser a une alternative : le même système que le remplisseur de paint ^^

L’évenement DragDrop à tout hasard ? :slight_smile:

http://msdn.microsoft.com/fr-fr/library/system.windows.forms.control.dragdrop.aspx

merci, fort intéressant dans que mon master mind fonctionne j’essaye avec cette méthode :slight_smile:

pour l’instant j’ai une autre question ^^ :


 Public Sub nouvelleligne()
 For i = 1 To inconnu
 ligne(i) = New Button
 ligne(i).Parent = panel1
 ligne(i).Left = (i * 5) + (i - 1) * 50
 ligne(i).Width = 50
 ligne(i).Top = 450 - ((j * 5) + (j - 1) * 50)
 ligne(i).Height = 50
 ligne(i).Visible = True

 Next

 End Sub

comment on fait pour dire “sur clique sur ligne(5), fait telle chose” ??
au pire pour savoir sur quel bouton de la ligne l’utilisateur à cliqué je sais le faire j’ai une technique grâce à la position du curseur au moment du clique
mais la question reste toujours : “sur clique sur ligne(), fait telle chose”
Edité le 09/02/2009 à 21:37


AddHandler ligne(i).Click, AddressOf taFonction

merci :slight_smile: t’es génial ^^