IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

pyReversi

pyReversi


précédentsommairesuivant

I. Prérequis

Voici les langages et bibliothèques que j'ai utilisés pour développer pyReversi:

Système d'exploitation: Windows XP
Langage: Python 2.5.1
Bibliothèque: wxPython 2.8.7.1

Le jeu a été testé sous Linux (merci hiko-seijuro) et devrait également tourner sur Mac ainsi qu'avec d'autres versions de Python ou de wxPython mais je n'ai pas toutes les ressources matérielles pour faire les tests.

II. Introduction

Le jeu Reversi avait été le premier projet sur lequel j'avais travaillé pour apprendre le langage Delphi en 2003. En remettant un oeil dans les sources, je me suis aperçu qu'il était très difficile de se replonger dans le code. C'est pourquoi, j'ai voulu refaire une version en Python en profitant de mon expérience acquise depuis ces 4 années mais sans chercher à tout redévelopper. Ainsi, je me suis contenté de redévelopper le jeu avec le même algorithme (alpha-beta) pour la réflexion de l'ordinateur. Par contre, je n'ai pas réécrit l'apprentissage ni la création d'une liste de coups pour l'ouverture d'une partie. J'ai aussi omis quelques animations présentes dans la version Delphi. Si je trouve un peu de temps pour me replonger entièrement dans mon code Delphi et remettre un peu d'ordre, peut-être que je ferai une page pour présenter ce que j'avais codé.

L'interface graphique du jeu a été développée avec la bibliothèque wxPython. Vous pourrez ainsi vous servir de ce code comme exemple d'application manipulant cette bibliothèque.

La réflexion de l'ordinateur est quant à elle beaucoup plus lente que celle de la version de Delphi (un facteur 100 quand même), alors qu'il peut jouer très rapidement avec une profondeur de réflexion de 6 coups voire 8 sur des machines récentes sur ma version Delphi, il faudra se contenter ici d'une profondeur de 4 coups (peut-être 6 avec une machine récente).
Dans tous les cas, ma version reste très très loin derrière WZebra qui est capable d'aller jusqu'à une profondeur de 26 coups en un temps raisonnable, la version la plus complète à ma connaissance.
A partir de la version 1.0.0, j'ai commencé à optimiser légèrement la réflexion de l'ordinateur (un facteur 3 de récupérer avec la version 1.0.2).

Image non disponible

III. Le jeu

Ce jeu est aussi connu sous le nom d'Othello. je vous renvoi sur le site de yahoo pour une explication détaillée des règles.

IV. Le code source

Le code source est composé de 5 fichiers. Cette structure peut s'adapter à beaucoup de jeux possédant un plateau et se jouant à 2 joueurs (échec, puissance4, morpion, ...).

  • Global.py : module contenant les constantes et variables globales du jeu
  • Plate.py : module contenant la gestion interne du plateau de jeu (fonctions permettant le calcul du score d'une position)
  • Player.py : module gérant les joueurs et la réflexion de l'ordinateur (présence de l'agorithme alpha-beta)
  • Reversi.py : module principale gérant la création du jeu et le déroulement d'une partie
  • wxReversi.py : module gérant l'interface graphique du jeu en wxPython et notamment le plateau du jeu

Nous allons étudier dans la suite chaque module un à un. Le code source est relativement court. Il doit contenir un millier de lignes dont presque la moitié sert à la gestion de l'interface graphique. En relisant le tout, il me semble relativement facile à comprendre. Je ne suis pas encore allé très loin niveau optimisation (contrairement à ce que j'avais pu faire en Delphi). J'ai toutefois essayé de détailler le plus possible chaque fonction de chaque classe pour que tout soit très clair et que vous puissiez si vous le souhaitez apporter des améliorations ou vous servir de ce code source pour aborder le développement d'autres jeux.


précédentsommairesuivant

Copyright © 2008 Guillaume Duriaud. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.