[C++] Défi/Performance sur un petit jeu

Défi/Performance sur un petit jeu [C++] - C++ - Programmation

Marsh Posté le 15-01-2004 à 18:50:22    

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.
 
@+

Reply

Marsh Posté le 15-01-2004 à 18:50:22   

Reply

Marsh Posté le 15-01-2004 à 18:55:14    

tip of the day : t'en as pas marre de préfixé strictement tout en C ?

Reply

Marsh Posté le 15-01-2004 à 18:56:09    

et si tu commancais d'abord par profiler ?
t'as essayé de dérouler tes boucles un peu ? sinon les vector c'est bien, mais des fois un pauvre tableau c'est bien quand la taille est connu à la compilation que t'as un usage bête ...
 
et d'autres par, ton Chrono a une granularité trop faible pour être vraiment efficace et fiable


Message édité par Taz le 15-01-2004 à 19:09:51
Reply

Marsh Posté le 16-01-2004 à 02:05:06    

Merci pour tes précieuses remarques ! C'est vrai que je n'ai même pas penser à gprof, alors que je l'avais déja utilisé :/ Pour le chrono, je suis conscient de tes remarques, mais j'ai fait ca rapidement dans le but d'avoir un ordre de grandeur plutot qu'une mesure fiable.
 
Sinon, je ne comprends pas ce que tu entends par "préfixé strictement tout en C"
 
Merci !

Reply

Marsh Posté le 16-01-2004 à 09:04:08    

ben tous tes bordel commencent par la lettre C

Reply

Marsh Posté le 16-01-2004 à 15:27:17    

[:ddr555] Mdr ok ! Je n'arrive pas à me fixer sur des règles de nommage particulière, je fais des essais.

Reply

Marsh Posté le 16-01-2004 à 15:32:06    

ben tu évacue tout ce qui prends la tête, ça sera déjà pas mal

Reply

Marsh Posté le 27-08-2004 à 15:50:42    

alors ?

Reply

Marsh Posté le 27-08-2004 à 16:04:29    

C'est quoi ce déterrage ? :D

Reply

Marsh Posté le 28-08-2004 à 13:38:44    

j'assure le suivi des projets bidons [:joce]

Reply

Marsh Posté le 28-08-2004 à 13:38:44   

Reply

Marsh Posté le 29-08-2004 à 13:14:06    

;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed