REVERSI WINDOWS

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 30 juil. 2003 à 10:17
ornelewis Messages postés 12 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 15 octobre 2003 - 4 août 2003 à 12:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11143-reversi-windows

ornelewis Messages postés 12 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 15 octobre 2003
4 août 2003 à 12:38
meci merci,
1 : Funto66 : normalement il affiche à droite le score ( de la partie en cours et en dessous le nombre de partie gagnées par chaque joueur) mais si ça marche pas confirme, je verrai.
2 : je suis au courant du problème, je l'avais résolu avec une dialogbox proposant de continuer ou arreter après un certain nombre de parties (voir dans les define la constante IA_PL) mais c'est vrai qu'avec la pause c'est de nouveau problématique je vais ça bientot !
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
4 août 2003 à 09:59
Cette version est encore mieux que les précédentes ;)
Les seuls défauts notables sont celui que t'a donné chestern, et le fait qu'on ne puisse plus savoir qui gagne (en tous cas j'ai fait une partie très serrée contre l'IA et je pense avoir encore perdu, mais je suis pas sûr). Donc une MessageBox pour dire "Le gagnant est ...! Le score est de ... contre ..." et c'est tout ce que je pourrais dire...
Bravo ;)
cbestern Messages postés 25 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 17 novembre 2003
4 août 2003 à 07:21
Bon l'IA est passionnant mais moi j'ai eu un petit problème quand j'ai mis IA contre IA, il joue tous seul ce qui est bien mais je n'arrivais plus à l'arrêter (un peu à la Terminator3 quoi)
sinon superbe
ornelewis Messages postés 12 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 15 octobre 2003
3 août 2003 à 23:28
un peu de neuf :
furybond, ta remarque 1 était juste mais faut quand même que je calcule le nombre de pions à retourner puisque je le renvoie mais c'est vrai pas besoin de copie du tableau.
pour les 2 autres, rien de changer encore
funto66 : la pause avec le timer, c'est tout simple... sauf qu'il a falut refaire la gestion de l'IA entièrement ;-)
en effet, si tu regarde l'ancien code et que tu rajoute la pause comme je l'ai fait dans le nouveau tu verra vite le problème : je clique sur la case pour jouer, ensuite l' IA joue (donc pause) et ensuite seulement les deux coups s'affichent !!! la gestion de l'IA était plutot mauvaise mais ça posait pas de problème concretement avant la pause.mais maintenant ça va, enfin j'espère !
Merci à vous !
ornelewis Messages postés 12 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 15 octobre 2003
1 août 2003 à 22:20
merci a vous deux, pas eu le temps en ce moment de m'y remettre, alors pas de nouveauté (pas encore).
pour le timer : ok, je me souviens, je mettrait ça, devrait pas ête compliqué,
furybond :
1 : c très juste t'as remarque, va alloir que j'améliore ça !
2 : j'avais fait une version dos qui fonctionnait avec un tableau 1D donc ça devrait se faire selon le courage ;-)
3 : je vais voir, quand je sais pas, mais je le ferai !
cs_furybond Messages postés 10 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 29 décembre 2003
1 août 2003 à 10:22
J'ai jeté un coup d'oeil rapide sur les sources :

j'ai vu plusieurs points non exaustifs qui pourrait être améliorés :

1: pourquoi quand tu testes si un coup est valable, tu copies la grille completement et retourne reellement les pions, et en plus dans toutes les directions ! Regarde juste si dans au moins une direction, tu as des pions adverses suivi d'un de tes pions, et return vrai dans ce cas directement. Sans dupliquer quoi que ce soit d'ailleur.

2: Utilises plutot un tableau à une dimension (rapidité d'accès) pour stocker ton plateau de jeu. Ensuite, pour te déplacer dans une direction, additionne seulement la valeur de la direction. Entoure ton plateau d'une case supplementaire que tu initialisera à -1 pour indiquer que tu as atteint le bord. Tu peux même encore optimiser en utilisant un tableau de 91 case comme ci-dessous (x=-1, o=0 case vide):
xxxxxxxxx indices 0,1,2,3,4,...8
xoooooooo indices 9,10,11,...
xoooooooo
xoooooooo
xoooooooo
xoooooooo
xoooooooo
xoooooooo
xoooooooo
xxxxxxxxxx indices ...90,91

ensuite tu peux avoir un tableau de DIRECTIONS = {1,-1,8,9,10,-8,-9,-10}

void deplace(Pos& pos,int direction) // devient alors :
{ Pos+=DIRECTIONS[direction]; }

3: une dernière chose : à Othello le critère principal d'une fonction d'évaluation du jeu, en début et milieu de partie, c'est la mobilité (nombre de coups jouables), et faire en sorte d'éviter de donner un coin (le pgm ne voit pas assez loin pour savoir que c'est vraiment pas bon.). La mobilité et souvent inversement proportionnel au nombre de pions : moins tu as de pions mieux c'est ! ce n'est que quand il rest une vingtaine de coups à jouer qu'il faut optimiser son nombre de pions.
Si tu veux que ton programme soit vraiment bon, il faut utiliser l'algorithme minimax/alpha-bêta avec d'autres optimisation comme a recherche incrémental, la poursuite heuristique, les coups meurtriers, jouer sur les bornes alpha et bêta en utilisant des heuristiques... etc etc la littérature informatique foisonne d'exemples.
Déjà renseigne toi sur minimax et alpha bêta : et ton programme jouera comme un dieux : il sera imbatable par 99% des joueurs d'othello.
Il est vrai qu'utiliser un tableau à une dimension pour optimiser, n'a d'intérêt que dans le cas d'une recherche arborescente de type minimax. Cela permet de voir encore plus loin ! mais dans ton cas aujourd'hui, c'est inutile :) Bonne continuation.
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
31 juil. 2003 à 12:51
Oah ! tu m'as cité dans la boîte "A propos !" Fallait pas...... :) merci :)
Pour attendre, il faut faire une boucle mais il faut utiliser GetTickCount(), qui, je crois (pas sûr), renvoie le nombres de millisecondes passées depuis je sais plus quand.
Pour ce qui est de l'IA, je ne m'y connais pas dutout, mais alors vraiment pas du tout :), mais je sais qu'il y a des articles dessus sur http://glinfrench.apinc.org .
Et fait une partie, mais comme cette fois je connaissais les règles.............. je me suis fait écraser quand même :D
Sinon, c'est vrai que c'est beaucoup plus clair avec le "New look".
Effectivement, j'ai compilé en Release et ça bugue... ??
Pour la mise en forme, tu peux aussi créer carrément un dialogue avec l'éditeur d resources de Visual C++ et montrer ce dialogue à la place d'une MessageBox() si tu veux ;)
ornelewis Messages postés 12 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 15 octobre 2003
31 juil. 2003 à 11:54
la nouvelle arrive, juste rajouter la boite APropos et modifier celle des règles, mais j'ai des problèmes pour la mise en forme, donc help please, merci ;-)
ornelewis Messages postés 12 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 15 octobre 2003
30 juil. 2003 à 23:36
nouvelle version :
j'ai amélioré (un peu) les textures du plateau, c'est plus visible maintenant et rajouter les règles,
merci pour tes commentaires Funto66, je penserais au "a propos de" pour la prochaine. Pour la pause, je la fait comment, je suppose que c'est pas une boucle qui fait rien au temps du qbasic ? ;-)
et si jamais quelqu'un a des conseils ou un bon site pour l'IA, je suis preneur !
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
30 juil. 2003 à 15:27
J'ai téléchargé la nouvelle version.
Tu devrais attendre un temps avant que l'IA ne joue, même si elle est très rapide, histoire qu'on sache ce qui se passe ;)
Je me suis fait mettre une pâtée... :D
Continue comme ça ;) Tu pourrais rajouter un menu "?" avec "Les règles" et un "A propos de..." qui renvoie vers un MessageBox() ou une boîte de dialogue ;)
ornelewis Messages postés 12 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 15 octobre 2003
30 juil. 2003 à 14:22
voila le nouveau zip avec l'exe en debug.
Nouveauté : un menu et une IA, plus symbolique qu'autre chose mais c'est un début.
Pour les règles, ok, je mettrais ça la prochaine fois mais c'est les règles classiques du reversi/othello
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
30 juil. 2003 à 10:17
Pas mal ;)
mais il faudrait que tu expliques quelque part les règles, j'ai pas encore tout compris, et tu devrais mettre un exe dans le zip, même si c'est une version Debug (872 Ko chez moi) (ceux qui ne tournent pas sous Visual C++ ne pourront pas compiler à cause du système de resources de Visual C++).
J'ai pas essayé de compiler en Release, donc je sais pas si ça plante.

Bonne chance pour la suite ;)
Rejoignez-nous