• Non ci sono risultati.

Projet de POCA — Le Roi Des Jeux Universit´e Paris Diderot – Master 2 SRI/LC/LP 7 novembre 2011

N/A
N/A
Protected

Academic year: 2021

Condividi "Projet de POCA — Le Roi Des Jeux Universit´e Paris Diderot – Master 2 SRI/LC/LP 7 novembre 2011"

Copied!
2
0
0

Testo completo

(1)

Projet de POCA — Le Roi Des Jeux

Universit´ e Paris Diderot – Master 2 SRI/LC/LP 7 novembre 2011

1 Principe du projet

Le projet de POCA vise ` a vous faire progresser dans votre capacit´ e ` a conce- voir un syst` eme objet extensible.

Il se d´ eroule en deux ´ etapes. Dans la premi` ere ´ etape, un sujet vous est fourni.

Ce sujet est volontairement d´ ecrit de fa¸ con informelle, sans vous donner d’in- dication pour le r´ ealiser. Vous devez donc d´ efinir vous-mˆ eme une architecture pour votre projet et vous la d´ ecrirez dans le d´ elivrable 1.

Une impl´ ementation ´ ecrite en Scala de cette premi` ere version constitue le d´ elivrable 2.

Vous recevrez ensuite un autre sujet qui est une extension du premier. Cette extension sera objet du d´ elivrable 3 (plus de d´ etails seront fournis avec le deuxi` eme sujet) et mettra ` a l’´ epreuve votre architecture initiale : un projet bien pens´ e n’aura pas besoin de modifier le code de la premi` ere version du projet pour traiter cette extension mais seulement de rajouter de nouveaux composants.

2 Sujet

Le projet consiste en la r´ ealisation d’un moteur de jeu d’´ echecs (connu aussi comme “le roi des jeux”).

Un moteur de jeu d’´ echecs est une biblioth` eque logicielle qui permet d’impl´ ementer avec facilit´ e des logiciels de jeux d’´ echecs. Au minimum, un mo- teur de jeux d’´ echecs doit contenir une repr´ esentation du plateau de jeux et de la position de jeu courante, un g´ en´ erateur des coups (i.e. tous les coups l´ egaux pour un des deux joueurs, selon les r` egles du jeu, ` a partir d’une position du jeu), et la capacit´ e ` a d´ eterminer l’issue du jeu (´ echec et mat ou pat). Un moteur de jeu d’´ echecs doit impl´ ementer tr` es fid` element les r` egles du jeu d’´ echecs.

1

Un moteur de jeu d’´ echecs ne contient pas une interface graphique pour jouer aux ´ echecs ! L’impl´ ementation de cela est laiss´ ee aux utilisateurs de la bi- blioth` eque. Par contre, pour faciliter le d´ ebogage, beaucoup des moteurs de jeu d’´ echecs utilisent le protocole Chess Engine Communication Protocol (CECP).

2

1. voir par exemplehttp://fr.wikipedia.org/wiki/Regles_du_jeu_d’echecs 2. http://www.gnu.org/software/xboard/engine-intf.html

1

(2)

Il est recommand´ e que votre moteur traite au moins un sous-ensemble de ce pro- tocole, suffisant pour utiliser comme interface graphique externe une parmi les plusieurs interfaces d´ ej` a existantes qui impl´ ementent CECB. Voir par exemple XBoard/Winboard.

3

Un moteur de jeu d’´ echecs doit permettre d’impl´ ementer des logiciels de jeu d’´ echecs entre joueurs ` a la fois humains et dirig´ es par une intelligence artificielle.

La strat´ egie de jeux pour les intelligences artificielles est d´ el´ egu´ ee aux utilisa- teurs de la biblioth` eque, mais cela doit permettre l’acc` es ` a l’´ etat du jeu et aux historiques de coups d´ ej` a effectu´ es.

3 Travail demand´ e

L’utilisation du SVN est obligatoire. L’historique de ce dernier permettra de d´ eterminer la contribution des membres de l’´ equipe et la gestion du temps dont vous avez fait preuve.

Avant le 21 novembre 2011 Dans un r´ epertoire delivrables/architecture/

de votre SVN, vous devez nous soumettre une architecture sous la forme d’un ou plusieurs diagrammes de classes UML et d’autres diagrammes de votre choix accompagn´ es d’explications justifiant vos choix.

Ce document sera fourni au format PDF et pourra suivre le plan suivant : Interpr´ etation du sujet Vous expliquerez de fa¸ con informelle ce que vous

avez compris du sujet et de ces enjeux. Quels sont les probl` emes techniques et conceptuels que vous avez exhib´ es ?

Concepts Dans cette section, vous d´ efinirez les concepts utilis´ es pour mod´ eliser le probl` eme ainsi que les invariants essentiels du syst` eme.

Description de l’architecture Vous donnerez ici les diagrammes UML d´ ecrivant votre architecture et surtout sa justification.

Extensions envisag´ ees Vous ´ enum´ erez ici les g´ en´ eralisations et les extensions que vous avez imagin´ ees et vous expliquerez pourquoi votre architecture permet de les traiter facilement.

Avant le 12 d´ ecembre 2011 Dans un r´ epertoire delivrables/version1/

de votre SVN, vous devez soumettre une premi` ere version de votre syst` eme.

Celui-ci doit ´ evidemment compil´ e ` a l’aide d’une commande make effectu´ ee

`

a la racine de ce r´ epertoire. Un fichier README doit ˆ etre fourni aussi et doit expliquer comment ex´ ecuter votre syst` eme expliquant, le cas ´ ech´ eant, comment l’utiliser avec des logiciels externes (p.ex. xboard).

Votre projet doit aussi ˆ etre test´ e. La qualit´ e du code—c’est-` a-dire sa correc- tion, sa robustesse et son ´ el´ egance—sera prise en compte dans la notation.

3. http://www.gnu.org/software/xboard/

2

Riferimenti

Documenti correlati

Votre renderer devra afficher ` a l’´ ecran les ´ el´ ements suivants de la carte OpenStreetMap donn´ ee en entr´ ee :..

  Méthode : Sélection des tests à partir de la spécification, de façon à contrôler que toutes les fonctionnalités spécifiées sont implantées selon leurs

Dans la copie de travail o` u vous avez cr´ e´ e et commit´ e le fichier description.txt, ex´ ecutez la commande.. $ git push

On veut maintenant traduire en Fran¸ cais quelques-unes des questions du test pour vrais hacker de purity, et le faire selon le style propre de Git... Cr´ eez une nouvelle branche

Cette extension sera objet du d´ elivrable 3 (plus de d´ etails seront fournis avec le deuxi` eme sujet) et mettra ` a l’´ epreuve votre architecture initiale : un projet bien pens´

extensions envisag´ ees Vous ´ enum´ erez ici les g´ en´ eralisations et les extensions que vous avez imagin´ ees et vous expliquerez pourquoi votre architecture permet de les

Vous allez trouver que cette façon de traiter les fonctions comme des objets est très utile pour un grand nombre de tâches de programmation. Par exemple, pour passer des fonctions

Pour autoriser ces extensions futures, on modifie (pour la dernière fois !) les classes Document, Book et Dictionary en rajoutant une méthode « def accept[Result] (v :