Projet de Programmation Orientée Objets
Licence 3, 2005-2006
Borodino

Auteurs: MM. G. Capron, B. Gentou, Y. Jurski, J-B. Yunès. Sous le contrôle de M. E. Asarin.

Objectif

On déterminera après analyse puis on implémentera en langage Java les structures objets réalisant un jeu baptisé Borodino.

Le jeu

Le jeu se déroule sur un plateau, simple grille de cases.

Les pions sont de différents types. Certains se déplacent de façon élémentaire: un pion ne passe d'une case à une autre que si les deux cases concernées sont directement voisines.

Lorsqu'au moins deux pions se situent sur une même case des combats s'engagent, à l'issue desquels un seul pion reste (un seul gagnant).

À chaque tour de jeu, les pions qui le peuvent se déplacent et d'eventuels combats s'engagent, ainsi de suite. On déterminera soi-même ce qui constituera la fin du jeu.

Les pions

Il existe différents types de pions:

À chaque pion correspond:

Les combats

Dès que deux pions sont en présence un combat s'engage à l'issue duquel l'un des pions disparaît du plateau. L'engagement commence après que l'un des deux pionss ait été choisi comme attaquant (c'est-à-dire celui qui inflige des dommages). Ces dommages sont fonction de la force de frappe de l'attaquant, et constitue pour le défenseur une perte correspondante de vitalité. Ensuite les rôles s'inversent et ce jusqu'à ce que l'un des deux protagonistes perdent toute sa vitalité. À ce moment, le gagnant hérite du perdant ses points d'héritage, qui lui permettent de reconstituer sa vitalité.

Un tour de jeu

Un tour de jeu est d'abord constitué par le déplacement des pions (les pions simulés se déplacent selon un algorithme à déterminer, les pions des joueurs se déplacent au gré du bon vouloir de ces derniers), puis par la résolution des combats. Il est possible qu'à un instant donné plusieurs pions soient sur la même case. En ce cas, une suite de combats s'engagent de telle sorte qu'à la fin reste plus qu'un seul pion sur cette case. Un combat ne faisant intervenir que deux protagonistes, on choisira donc sur un critère non fixé (mais à déterminer!) deux pions parmi ceux présents sur la case, et ce tant, que cela est possible.

À réaliser

On remarquera que cette spécification est incomplète, c'est à la fois volontaire (comment le jeu se termine-t-il ?) et inévitable (les auteurs sont humains ?). Il faudra donc rendre à la fois cohérente et complète cette spécification (une lecture attentive et une analyse sont donc nécessaires). Il faudra notamment spécifier les règles exactes de calcul des dommages, et de la modification de la vitalité, de la force de frappe et/ou de l'héritage (on peut imaginer que plus on gagne de combats plus on est fort, etc).

Ensuite, il faudra déterminer quels sont les «concepts» pertinents nécessaires à une mise en place/simulation «objet» du problème.

Il est aussi demandé d'implanter le tout dans le langage Java, langage dans lequel il est rappelé qu'une conception objet s'implémente normalement assez naturellement.

On notera qu'aucun graphisme évolué n'est demandé: il ne faut pas perdre de temps à cela! Un simple affichage utilisant des caractères standards suffira bien assez. La présence d'une telle interface ne sera jugée et appréciée que si la conception globale du programme est intéressante.

Extensions

Des extensions sont possibles à condition qu'elles s'intègrent naturellement dans la conception, c'est-à-dire sans en modifier les fondements... De plus ces extensions ne doivent être envisagées que si la réalisation du sujet de base fonctionne déjà, elles ne seront donc jugées et appréciées que dans ce cas. Ainsi il sera possible (donc non nécessaire ni exhaustif):

Programmation

Nous insistons sur le fait que le programme devra être réalisé en utilisant une structuration objet des concepts. Le choix des interfaces/classes et objets devra être longuement pensé. D'autre part, l'utilisation justifiée de classes Java prédéfinies dans les packages par défaut sera jugé comme un point positif (inutile et absurde de réinventer la roue à chaque fois).

Il est demandé de documenter correctement les classes et interfaces conçues, l'utilisation de javadoc est très fortement recommandée.

Un rapport faisant état des reflexions menées et des choix de conceptions réalisés devra accompagner le code source.

Ce projet fera l'objet d'une soutenance au cours de laquelle l'ensemble du groupe ayant travaillé dessus devra être présent (aucune abscence ne sera tolérée) et chaque individu sera encouragé à intervenir. Une petite préparation de cette soutenance sera bienvenue.

Le projet devra être réalisé par groupe de 2 ou 3 personnes (ni plus, ni moins).

Les dates de remise de projet et de soutenances seront précisées ultérieurement et communiquées par les enseignants et par voie d'affichage (Web et panneaux).

On notera que le conseil d'UFR a voté à l'unanimité qu'aucune dispense de projet ne sera accordée pour le cours de programmation orientée objet. Un étudiant ne présentant pas de projet sera donc crédité de la note 0.


Valid XHTML 1.0!Valid CSS!