Salut Charly, salut les autres,
Il nous faudrait en quelques sortes un matrice de 0 et de 1. Ainsi pour chaque boulei (i de 1 à n) et pour chaque troui (i de 1 à n), si on a un 1, alors la boulei peut aller dans le troui, elle ne pourra pas y aller dans le cas où on a un zero.
Admettons, que nous l'ayons cette matrice, et que nous n'avons aucun problème pour la déterminer automatiquement en fonction de n.
Tu n'as pas l'impression qu'il peut y avoir un carambolage. En fait, si les restrictions sont trop nombreuses, il se peut que chaque boule ne trouve pas sa place. Une sorte de chaîse musicale quoi ;-)
Attribuer les restrictions est du domaine du créateur de mots croisés, ou des grilles de SUDOKU. Jeu à la mode que j'ai découvert il y a 2 jours seulement. C'est pas mal, surtout pour ceux qui ne sont pas à l'aise avec les chiffres. Mais ce n'est pas mon cas et ce jeu m'a vite énervé. Je préfère jouer aux échecs, ou même tenter de résoudre des problèmes sur ExcelDownload.
D'ailleurs, pour revenir à notre sujet. La fameuse Matrice pourrait être constitué de 32 lignes et 64 colonnes. Remplit de 0 et de 1, elle nous renseignerait sur les possibilités de chaque pièce du jeu d'échecs, d'aller dans une des 64 cases lors de son déplacement. C'est pas si compliqué. Il s'agit de programmer le calcul des conditions d'avancement (et de prise, pour le pion) de chaque pièce.
Condition d'avancement d'un pion :
La case devant lui est libre (les deux cases devant lui s'il est encore à la case départ.)
Condition de prise d'un pion :
Une pièce de couleur opposée se trouve une case devant le pion, et sur une des deux rangés adjacente.
Condition de déplacement et de prise d'un cavalier :
Soit (a, b) les coordonnées du cavalier. Si il est en C4, ses coordonnées sont (3, 4).
Soit (x, y) les coordonnées de chacunes des 64 cases. Numérotées de 1 à 64 dans notre matrice, cacunes des cases à sa place propre sur l'échiquier, définie pas ses coordonnées (x, y).
x et y allant de 1 à 8
Le cqvqlier peut se rendre en x, y à condition que (a - x) = dx et (b - y) = dy nous donne l'un des résultats ci-dessous :
(1, -2)
(-1, -2)
(-2, -1)
(-2, -1)
(-1, 2)
(1, 2)
(2, 1)
(2, -1)
Je vois bien mon Select Case pour calculer cela !
Si je rentre dans l'un de ces cas, alors je met un 1 dans ma Matrice. Sinon dans Case / Else, je met un zero.
Pas si simple quand même !
Enfin beaucoup plus intéressant que le problème du nombre de combinaison avec les boules et les trous. A croire que les boules ont été créé pour finir dans un trou.
Ca te dit, Charly, de créér un jeu d'échecs ?
On pourrait se partager les fonctions de remplissage de la matrice. Celle ci serait appeler à chaque déplacement autorisé. C'est à dire que le joueur souhaite déplacer une pièce pour laquelle on a bien un 1 dans la Matrice. Donc le déplacement etpermis et on appelle successivement toutes les fonctions de calcul de la nouvelle matricede 0 et de 1.
On ne commence par gérer que les déplacements autorisés ou non, sans se soucier des tas de règles, comme l'interdiction de se mettre en échecs, l'obligation de se sortir d'un échec lorsque l'on s'y trouve. Ca on verra plus tard, mais ce n'est pas le plus difficile.
Peut-être que d'autres sont prêts à s'associer au projet d'ailleurs ? Si en plus on pouvait y jouer plus tard sur ExcelDownload, ca serait bien non ?
A bientôt,
David