Bonjour tout le monde !
Dans le cadre d'un petit projet, j'ai implément" un petit jeu de
plateau avec un joueur contrôler par l'ordinateur en se basant sur une méthode de type monte carlo. Cette méthode se base sur le résultat de plusieurs parties aléatoire pour déterminer le meilleur coup à jouer.
Ne partez pas ! Je vais pas vous demandez de m'aider à faire quoi ce soit, le projet étant déja rendu.
Le point important se situe donc essentiellement dans la rapidité avec laquelle s'effectue une partie aléatoire et ainsi le nombre de parties possibles en un temps donné (par exemple 1 seconde).
Je suis pas un cador en C++, et ce qui m'intéresse ici, c'est de voir, si ca vous tente, les différentes possibilitées d'une implémentation efficace de parties aléatoires, tout en
codant "proprement".
Les règles :
La partie se déroule sur un plateau n*n, avec deux joueurs. Chaque joueur possède 4 amazones et peuvent se déplacer comme des reines sur un échiquier. Une amazone peut tirer une fleche dans n'importe quelle direction (une fleche se comporte donc comme une reine aussi). Le but du jeu est de bloquer les amazones adverses.
Il y a une page très bien faite ici : http://web2.whosting.ch:1412/jensl [...] azong.html qui montre aussi comment les amazones sont disposées au départ.
La partie du programme des parties aléatoires que j'ai fait se trouve ici http://evadream.free.fr/files/Code/CC++/amazones/ .
C'est pas forcément très propre justement , je suis ouvert aux critiques
J'ai fait en sorte de pouvoir choisir la taille de l'échiquier.
Je fais environ 14000 parties sur un plateau 8*8 en une seconde sur un athlon 2400, compilé en -Wall -pedantic -O3.
En remplacement certain vector temporaire par des tableaux de base, je gagne pret de 6000 parties. Il s'agit de vector de pointeur d'entier que je déclare avec une bonne taille afin qu'il n'y est pas de resize pourtant. On pourra en discuter tout au long de ce topic si il y a des motivés !
Voilà voilou, si ca vous tente on peut se fixer comme taille 8*8, mais il faut que cette taille soit modifiable facilement.
@+