À rendre pour le 03/03/2017 23h
- Théo FOUCHER & Bastien NICOLAS
- Étudiant 4A | ESIEA | CFA
LetterGame est un projet Java, développé sous InteliJ IDEA 2016.3.4, dans le cadre du cours d'architecture logiciel dispensé par M. Labusquiere (TP) et M. Ledoyen (Cours théoriques).
Tour à tour, vous devez faire le plus de mots possibles avant votre adversaire. Le premier qui arrive à dix remporte la partie. Mais attention, vous pouvez facilement vous faire voler des mots si votre rival arrive à ajouter des lettres du pot commun dans l'un de vos mots !
- Il faut au préalable avoir une version Java récente installée sur votre ordinateur ainsi que Maven pour compiler le projet. (JRE 8 de préférence)
- Ensuite, il vous suffit de saisir la commande suivante dans votre terminal pour lancer le Jeu après avoir importé le projet sur votre ordinateur.
$ cd LetterGame
$ mvn package
$ cd target
$ java -jar LetterGame-0.0.1-SNAPSHOT.jar
Les règles du Jeu et qui sont aussi notre cahier des charges sont consultables ici.
Nous avons deux packages principaux et deux sous-packages dans le package server regroupant l'ensemble de nos classes :
- Client -> Connection client au serveur
- Connection -> Classe s'occupant des E/S du client avec le serveur
- AcceptConnection -> S'occupe de recevoir les connections des clients
- ClientInstance -> Gère les connections avec le client une fois établies
- ClientManager -> Gère la multiplicité des clients (pour jouer en multijoueur)
- Server -> Création du serveur et mise à l'écoute d'un port pour chercher des clients
- AbstractPlayer -> Classe abstraite de client avec gestion du tour d'un client
- BoardGame -> Chargement du dictionnaire en mémoire, gestion du pot commun de lettres et de l'acceptation des mots
- ClientPlayer -> Autre classe pour gérer le tour d'un client
- Game -> Déroulement de la partie entre chaque tour de joueur
- IAPlayer -> IA pour le mode solo
- Letter -> Gestion et génération random de lettres pour le pot commun
- IDictionary -> Interface dictionnaire
Le dictionnaire se situe dans le dossier "ressources" du projet (src/main/ressources) et l'ensemble des tests se situent dans le dossier "tests" (src/test/java).
Nous avons respecté les principes SOLID vues en cours en limitant les dépendances entres les différentes classes (Dependency Inversion) et le principe de ségrégation des interfaces (Interface Segregation). Ainsi, quelqu'un qui voudrait envisager une ré-architecture de notre programme pourrait le faire et très simplement.
- Réaliser un programme en langage Java
- Implémenter toutes les fonctionnalités attendues par l'enseignant
- Réaliser des tests unitaires (sous JUnit)
- Utilisation de Maven pour compiler et lancer le programme
- Mode Multi-joueurs avec gestion client-serveur
- Mode IA | Solo
- Tests unitaires JUnit
- Possibilité de voler un mot à l'adversaire ou à soi-même (en complétant avec une/plusieurs lettres du pot commun) ou en anagramme