Programmer Othello/Reversi sur VBA
Bonjour à tous,
Pour un exercice je dois programmer Othello sur VBA. J'ai actuellement commencé à faire le plateau, le changement de joueur, la placement des pions et le Restart.
Par contre je n'arrive pas à trouver la logique de programmation pour faire la recherche des possibilités autorisées pour poser un pion, pour changer la couleur d'un pion lorsqu'il se trouve entre 2 pions d'une même couleur.
Merci d'avance pour vos pistes de réflexion.
Bonjour,
Comme c'est pour un exercice, je ne vous donnerai pas la solution, mais je peux vous aiguiller sur la procédure.
A partir de la cellule où le pion à été placé, il faut se diriger successivement dans toutes les directions, Nord, Nord Est, Est, Sud Est, Sud, Sud Ouest, Ouest, Nord Ouest et faire les tests sur chacune de ces directions
A chaque déplacement dans la recherche, il faut insérer un décalage
Si vous partez vers:
-le Nord, le décalage ligne -1 colonne 0
-le Nord Est, le décalage ligne -1 colonne +1
- l'Est, le décalage ligne 0 colonne +1
-le Sud Est, le décalage ligne +1 colonne +1
-le Sud, le décalage ligne +1 colonne 0
-le Sud Ouest, le décalage ligne +1 colonne -1
-l'Ouest, le décalage ligne colonne -1
-le Nord Ouest, le décalage ligne -1 colonne -1
A chaque décalage il faut tester:
-d'une part si la cellule testée est toujours comprise dans le damier, sinon on sort ou on passe au test suivant.
-on de déplace dans une direction à la recherche du pion de la même couleur que celui qui vient d'être placé, si ce pion n'existe pas on sort ou on passe au test suivant, par contre si ce pion de la même couleur existe, alors 2 possibilités:
-s'il se trouve à dans une des cellules qui touche celle où le pion vient d'être placé, alors on sort ou on passe au test suivant.
-sinon, on refait le même cheminement et on inverse la couleur de tous les pions intermédiaires.
Et refait ce cycle pour toutes les directions.
Et bien sûr, à chaque fois, il faut vérifier qu'on est bien dans les limites du damier.
En espérant que cela puisse vous aider.
Cdlt
Bonjour,
Je ne répond pas directement à la question, mais comme le sujet est abordé, je ne résiste pas à vous présenter cette "pépite" (origine inconnue) à peine lifté par mes soins (dans la partie Workbook) c'est à dire juste pour la remettre un petit au gout du jour.
Les anciens retrouverons sans peine la prog sous W3...
A+
Bonjour,
Merci pour vos réponses,
j'ai bien compris le principe et ai fait une partie du programme, mais je ne trouve pas la commande pour enregistrer la place du pion posé : j'ai essayé en créant une fonction coordonnes (X as Long, Y as Long) as Long
coordonnes = ActiveCell.Adress(X, Y)
Bonjour,
Je me permets de vous renvoyer un message, après avoir passer beaucoup de temps et de tentative, je n'arrive toujours pas à le programmer.
Les examens approchant à grand pas avec beaucoup de stress, étant sans réponse de mon prof et n'ayant toujours pas réussi à faire l'exercice d'entrainement je sollicite de nouveau votre aide.
Serait-il possible de m'aiguiller, de me donner une partie de code juste sur une direction ?
merci d'avance
bonjour,
essaie ceci
coordonnéeligne=activecell.row
coordonnéecolonne=activecell.columnPardon j'ai oublié de mettre ma fonction :
Private Function LesVoisins()
coordonnee_ligne = ActiveCell.Row
coordonnee_colonne = ActiveCell.Column
'Nord'
compteur = 0
For k = coordonnee_ligne - 1 To 1
If Intersect([Damier], Target) = False Then
Exit For
Else
If Cells(k, coordonnee_colonne) = [joueur] * -1 And Intersect([Damier], Target) = True Then
compteur = compteur + 1
Else
Exit For
End If
End If
Next
For i = coordonnee_ligne - 1 To coordonnee_ligne - 1 - compteur
Target = [joueur]
Next
End Function
bonjour,
qu'est censée faire cette fonction ?
c'est par rapport à mon fichier en tout début,
elle doit tester (à terme) si un pion est posé à coté de celui que je viens de poser et savoir si il est de la meme "couleur", puis passer au rang suivant et tester la meme chose jusqu'à ce qu'il y ait de nouveau un pion d'une couleur différente ou alors qu'on sorte du damier. ici il y a uniquement pour le test au nord mais le reste est basé sur la même modèle.