Projet Java - ING3 2009-2010
1/13 Charlie Fancelli Michel Salib - JP Segado
Table des matières
Objectif ......................................................................................................................................................... 2
Participants ................................................................................................................................................... 2
Caractéristiques ............................................................................................................................................ 2
Le Scénario.................................................................................................................................................... 3
Le début de partie .................................................................................................................................... 3
Un tour de partie ...................................................................................................................................... 4
La fin de partie .......................................................................................................................................... 4
Pénalités ................................................................................................................................................... 4
Condition de défaite d’une équipe (élimination) ..................................................................................... 4
Conditions de victoire ............................................................................................................................... 4
Constitution des équipes .............................................................................................................................. 4
Travail à réaliser pour chaque équipe .......................................................................................................... 5
Planning des équipes .................................................................................................................................... 5
Annexe Javadoc : Classes de packages client ou virus ................................................................................. 7
Package du serveur : les 3 classes accessibles par toutes les équipes ......................................................... 7
La classe client.Client ................................................................................................................................ 7
Client ..................................................................................................................................................... 8
isConnected .......................................................................................................................................... 8
connexionLocale ................................................................................................................................... 8
connexionECE ....................................................................................................................................... 9
connexion ............................................................................................................................................. 9
getListe ............................................................................................................................................... 10
getClassement .................................................................................................................................... 10
decision ............................................................................................................................................... 10
La classe client.Voyage ........................................................................................................................... 11
Voyage ................................................................................................................................................ 12
getDuree ............................................................................................................................................. 12
setDuree ............................................................................................................................................. 12
getIdPays ............................................................................................................................................ 13
setIdPays ............................................................................................................................................. 13
getIdPersonne .................................................................................................................................... 13
setIdPersonne ..................................................................................................................................... 13
La classe virus.Serveur ............................................................................................................................ 13
Serveur ................................................................................................................................................ 13
Projet Java - ING3 2009-2010
2/13 Charlie Fancelli Michel Salib - JP Segado
Objectif
Ce jeu qui se jouera en réseau consiste, pour les différents pays représentés par les équipes en jeu, à
résister à la contamination par des virus.
Malheureusement, la mondialisation rend la lutte antivirale difficile ! Heureusement, les labos de
recherche de chaque pays sont efficaces et mettent au point des antidotes. On considère que les
antidotes fabriqués sont en nombre suffisant pour l’ensemble de la population mondiale. La course
contre la mort est lancée…
Participants
Les équipes, représentant des pays, sont les clients du serveur qui agissent pour survivre en envoyant
leur requête au serveur.
Le serveur, chargé de valider les requête des équipes et de leur retourner la réponse.
Caractéristiques
Une équipe est définie par son nom, son nombre d’habitants maximum limité à 50, son nombre
d’habitants encore vivants et son nombre total de points de vie pour l’ensemble de ses
habitants.
Un pays est représenté par une équipe particulière dans laquelle est défini l’ensemble de ses 50
habitants
Une personne est définie par son identifiant unique, son état de maladie et son nombre de
points de vie.
Un habitant est représenté par une personne particulière pour laquelle sont définis son pays de
résidence, son pays de destination dans lequel l’habitant voyage et sa durée de séjour.
L’état de maladie d’une personne détermine si elle est contaminée ou non. Cet état est défini
par un numéro : 0 si la personne est saine ou un numéro de virus positif si elle est contaminée.
C’est le serveur qui choisit arbitrairement les personnes saines et contaminées.
Un antidote est identifié par un numéro unique positif égal au numéro de virus qu’il soigne. Cet
antidote soigne le virus d’une personne contaminée (état de maladie positif) et encore vivante
(nombre de points de vie positif).
Le pays de résidence d’une personne est le pays dans lequel la personne habite. Ce pays de
résidence ne change jamais : une personne fait donc partie des 50 habitants résidant dans le
pays.
Le pays de destination d’une personne est le pays dans lequel la personne est en séjour.
En début de jeu, toutes les personnes sont chez elles : leur pays de résidence et de destination
sont donc les mêmes. Durant la partie, toute personne qui décide de voyager doit préciser le
nom du pays de destination et la durée de séjour.
Le nom du pays de destination doit exister sous peine de rester sur place.
EQUIPE
SERVEUR
Requête envoyée
Retour réponse
Projet Java - ING3 2009-2010
3/13 Charlie Fancelli Michel Salib - JP Segado
La durée de séjour d’une personne correspond au nombre de jours maximum (chaque tour
d’une partie représentant une journée) passé dans le pays de destination. Cette durée
correspond au temps que la personne va séjourner dans le pays de destination, puis de son
retour dans son pays de résidence. Le changement du pays de destination est validé par le
serveur seulement si la durée est comprise entre 1 et 10.
Quand la personne revient dans son pays de résidence, le pays de destination lui donne son
antidote selon la probabilité suivante : durée de séjour / 10. À cet instant seulement, la
personne sait si elle est soignée (état de maladie à 0, nombre de points de vie à fond) ou pas. À
son retour, son pays de résidence et de destination sont de nouveau identiques.
La personne qui décide de changer de pays de destination avant expiration de la durée de séjour
se voit refuser ce changement ; la personne devra donc attendre la fin du séjour pour pouvoir
changer de pays de destination.
Chaque virus est caractérisé par sa virulence (degré de rapidité de multiplication du virus)
variable selon la résistance de la personne qu’elle contamine. À chaque tour de partie, ce degré
de virulence fait perdre à la personne contaminée un certain nombre de points de vie tiré
aléatoirement entre 0 et 20 par le serveur, dans la limite de la mort.
À tout instant, une personne ne peut être contaminée que par un seul virus à la fois.
Dès qu’une personne saine est contaminée par un virus, le serveur change son état de maladie
(le numéro devient positif). Son nombre de points de vie peut commencer à diminuer dès le
tour suivant.
Dès qu’une personne contaminée et vivante est soignée par un antidote, le serveur change son
état de maladie à 0 (top santé !), et son nombre de points de vie à fond.
Le Scénario
Le début de partie
Au début du jeu, un virus différent pour chaque pays est propagé. Aucun pays n’est épargné.
La banque mondiale de la santé, représentée par le serveur, est chargée de superviser les labos de tous
les pays pour la mise au point des antidotes. Mais la maladresse et la lourdeur de son administration a
provoqué le chao : la banque a ordonné à chaque labo de mettre au point un antidote qui détruit le
virus propagé dans un autre pays.
Pour commencer le jeu, chaque pays doit se connecter au serveur en lui fournissant une seule
information : l’adresse hôte du serveur.
Une fois connecté, le pays initialise le nom de son équipe et le communique au serveur pour s’inscrire à
une partie. Une fois que le pays s’est inscrit, le serveur lui répond.
Si l’inscription réussit, le serveur retourne l’information du pays inscrit. La partie peut alors
commencer…
Projet Java - ING3 2009-2010
4/13 Charlie Fancelli Michel Salib - JP Segado
Un tour de partie
À chaque tour de partie (une journée fictive) durant un certain délai (voir plus bas), les pays peuvent
accéder à divers informations, puis prendre une décision de jeu. Cette décision revient à envoyer un ou
plusieurs personnes en voyage, en précisant le pays de destination et la durée de séjour. Les
commandes possibles sont alors :
Prendre une décision avec la méthode decision
Connaître le classement des pays avec leur score respectifs avec la méthode getClassement.
Connaître la liste des pays encore dans l’univers avec la méthode getListe
Si une décision est partiellement impossible (habitant déjà en voyage, habitant d’un autre pays, habitant
inexistant ou pays inexistant), la demande de départ en voyage est ignorée pour cet habitant, aucune
exception n’est renvoyée.
À la fin d’un tour, le serveur retourne le résultat de la décision sous la forme d’un String (informations
sur l’ensemble des habitants du pays). Un nouveau tour commence alors.
La fin de partie
Quand la partie se termine, le joueur est automatiquement déconnecté.
Pénalités
Tous les tours, le serveur enlève aléatoirement un certain nombre de points de vie à tous les individus
contaminés.
Condition de défaite d’une équipe (élimination)
Si une équipe se retrouve avec une population vivante de 0, elle est automatiquement éliminée et ne
peut plus participer aux tours. S’il n’y a pas de décision prise au bout de 2 secondes, l’équipe est
éliminée.
Conditions de victoire
À la fin du temps règlementaire, le vainqueur est la ou les équipe(s) qui a (ont) la population vivante la
plus élevée.
Constitution des équipes
Les équipes de projet comprendront 3 ou 4 étudiants, ni plus ni moins, avec au moins 1 nouveau et 2
anciens par équipe, choisis par vos soins au sein d’un même groupe de TD.
Projet Java - ING3 2009-2010
5/13 Charlie Fancelli Michel Salib - JP Segado
Travail à réaliser pour chaque équipe
Chaque équipe d'étudiants devra écrire un programme en Java contenant une Intelligence Artificielle qui
jouera au jeu dont les règles sont définies précédemment.
Ce programme devra se décliner en deux versions :
1. Une en mode console pour participer à la compétition de fin d'année, totalement indépendante
du mode graphique. Vous afficherez les informations utiles : pays de résidence (nom, nombre
d’habitants vivants, nombre de points de vie total et détail des informations de chaque
habitant), éventuellement le déplacement aller/retour des habitants dans un pays de
destination, les meilleures et des pires équipes avec leur nom et leur score.
2. Une en mode graphique, inspirée de l’interface du serveur de manière plus locale et
dépendante du mode console (pas le contraire !).
Planning des équipes
Le sujet est mis en ligne dans la semaine du 8 mars.
Les équipes seront transmises par le légué à votre responsable de cours par mail : [email protected]
au plus tard le mercredi 17 mars midi, en précisant le groupe de TD et le(s) nouveau(x) pour chaque
équipe.
Le rapport de mi-parcours devra être déposé le dimanche 11 avril 23h55 dernier délai. Les
modalités de dépôt vous seront fournies ultérieurement. Les équipes devront déposer un rapport au
format .doc, .docx ou .pdf avec un seul dépôt par équipe. Le fichier sera nommé sous la forme
TDxx-nom1-nom2… avec xx le numéro de groupe de TD suivi des noms des étudiants de l’équipe.
Ce rapport d’environ 10 pages hors annexes doit contenir :
Une page de garde avec le titre, les noms des étudiants et le groupe de TD
Un sommaire dont chaque partie référence une page
Une présentation brève et personnalisée du projet
Un planning prévisionnel
Une organisation de l’équipe, répartition des rôles si possible
Un diagramme de classes préparatoire présentant l’organisation générale du programme
Une analyse détaillée des problèmes envisagés, ainsi qu’une idée de comment les résoudre
Une description générale de la stratégie envisagée pour l’IA
Une présentation des maquettes de l’interface graphique en commentant les composants
graphiques utilisés et leur disposition
Un bilan intermédiaire de l’état du travail effectué avec à l’appui des copies d’écran de
l’exécutable en mode console (trace d’exécution sous forme de messages clairs) et graphique
(visualisation de vos composants graphiques)
Annexes : la documentation Javadoc sur l’état d’avancement de votre code et une bibliographie
de toutes vos sources (web, livres etc.)
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!