VBA programme
Résolu
palban
-
palban -
palban -
Bonsoir, j'ai un exo en VBA qui me demande d'afficher toutes les possibilités pour les pions blanc et noir dans le jeu othello.
Mon code arrive a afficher quelque chose mais c'est pas les bons résultats et ça le fait que sur une partie du tableau.
Merci de votre réponse
Voici mon travail :
Sub evaluer_une_case(ByVal ligne As Integer, ByVal colonne As Integer, ByVal num_joueur As String)
If num_joueur = 1 Then
monpion = ChrW(&H24FF)
Else
monpion = ChrW(&H24EA)
End If
Set plateau = Sheets("feuil1").Range("B2:I9")
For j = colonne + 1 To 8 'vers la droite
If plateau.Cells(ligne, j).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, j).Value = monpion Then
nb_pion_cap = nb_pion_cap + (j - colonne - 1)
Exit For
End If
Next j
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For j = colonne - 1 To 8 'vers la gauche
If plateau.Cells(ligne, j).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, j).Value = monpion Then
nb_pion_cap = nb_pion_cap + (j - colonne + 1)
Exit For
End If
Next j
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne - 1 To 8 'vers le haut
If plateau.Cells(i, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(i, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + (i - ligne + 1)
Exit For
End If
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne + 1 To 8 'vers le bas
If plateau.Cells(i, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(i, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + (i + ligne - 1)
Exit For
End If
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne - 1 To 8 'vers la diagonale haut gauche
For j = colonne - 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i - ligne + 1) + (j - colonne + 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap_total
Exit Sub
For i = ligne + 1 To 8 'vers la diagonale bas gauche
For j = colonne - 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i + ligne - 1) + (j - colonne + 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne - 1 To 8 'vers la diagonale haut droite
For j = colonne + 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i - ligne + 1) + (j - colonne - 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne + 1 To 8 'vers la diagonale bas droite
For j = colonne + 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i + ligne - 1) + (j - colonne - 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
End Sub
Sub evaluer_les_cases()
num_joueur = InputBox("Saisir le numéro du joueur (1: noir, 2 : blanc)")
Set maplage = Sheets("feuil1").Range("B2:I9")
For ligne = 1 To 8
For colonne = 1 To 8
If maplage.Cells(ligne, colonne).Value = "" Then
Call evaluer_une_case(ligne, colonne, num_joueur)
End If
Next colonne
Next ligne
End Sub
Mon code arrive a afficher quelque chose mais c'est pas les bons résultats et ça le fait que sur une partie du tableau.
Merci de votre réponse
Voici mon travail :
Sub evaluer_une_case(ByVal ligne As Integer, ByVal colonne As Integer, ByVal num_joueur As String)
If num_joueur = 1 Then
monpion = ChrW(&H24FF)
Else
monpion = ChrW(&H24EA)
End If
Set plateau = Sheets("feuil1").Range("B2:I9")
For j = colonne + 1 To 8 'vers la droite
If plateau.Cells(ligne, j).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, j).Value = monpion Then
nb_pion_cap = nb_pion_cap + (j - colonne - 1)
Exit For
End If
Next j
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For j = colonne - 1 To 8 'vers la gauche
If plateau.Cells(ligne, j).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, j).Value = monpion Then
nb_pion_cap = nb_pion_cap + (j - colonne + 1)
Exit For
End If
Next j
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne - 1 To 8 'vers le haut
If plateau.Cells(i, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(i, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + (i - ligne + 1)
Exit For
End If
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne + 1 To 8 'vers le bas
If plateau.Cells(i, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(i, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + (i + ligne - 1)
Exit For
End If
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne - 1 To 8 'vers la diagonale haut gauche
For j = colonne - 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i - ligne + 1) + (j - colonne + 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap_total
Exit Sub
For i = ligne + 1 To 8 'vers la diagonale bas gauche
For j = colonne - 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i + ligne - 1) + (j - colonne + 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne - 1 To 8 'vers la diagonale haut droite
For j = colonne + 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i - ligne + 1) + (j - colonne - 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
For i = ligne + 1 To 8 'vers la diagonale bas droite
For j = colonne + 1 To 8
If plateau.Cells(ligne, colonne).Value = "" Then
Exit For
End If
If plateau.Cells(ligne, colonne).Value = monpion Then
nb_pion_cap = nb_pion_cap + ((i + ligne - 1) + (j - colonne - 1))
Exit For
End If
Next j
Next i
plateau.Cells(ligne, colonne).Value = nb_pion_cap
Exit Sub
End Sub
Sub evaluer_les_cases()
num_joueur = InputBox("Saisir le numéro du joueur (1: noir, 2 : blanc)")
Set maplage = Sheets("feuil1").Range("B2:I9")
For ligne = 1 To 8
For colonne = 1 To 8
If maplage.Cells(ligne, colonne).Value = "" Then
Call evaluer_une_case(ligne, colonne, num_joueur)
End If
Next colonne
Next ligne
End Sub
A voir également:
- VBA programme
- Programme demarrage windows - Guide
- Programme word gratuit - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
Bonjour,
Si tu nous avais mis ton classeur cela aurait été plus profitable.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
Si tu nous avais mis ton classeur cela aurait été plus profitable.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
Bonjour,
Affichage des possibilités selon choix du bouton de commande (Po……noir ou Pos…..blanc) et vous recevez les cases possibles avec le nombre de capture possible (le 0 n’est pas affiché).
Note : votre bouton de commande est désactivé.
A vous de contrôler dans le détail si tout est correct.
Ma proposition : https://www.cjoint.com/c/FBim5ZZ7iSs
Affichage des possibilités selon choix du bouton de commande (Po……noir ou Pos…..blanc) et vous recevez les cases possibles avec le nombre de capture possible (le 0 n’est pas affiché).
Note : votre bouton de commande est désactivé.
A vous de contrôler dans le détail si tout est correct.
Ma proposition : https://www.cjoint.com/c/FBim5ZZ7iSs
Merci pour l'information :) et merci de votre aide
Merci pour l'information :)
Le temps de découvrir les règles du jeu Othello.......dès lundi...!
Salutations
Le Pingou
Après le programme a pour but de savoir l'ensemble des possibilités qu'a chaque couleur autour de lui. par exemple 1, 2, 3, sachant que c'est comme au dame les blancs peuvent manger les noires tout autour de lui (devant, derrière, sur les diagnales et à droite et à gauche)
Cordialement