-
Notifications
You must be signed in to change notification settings - Fork 1
Jeu d’échecs en réseau
L’interface de l’application cliente a été réalisée avec AWT/Swing couplée à un LookAndFeel lui donnant un autre aspect que celui donné par défaut par Java. L’application cliente repose sur l’architecture MVC (Modèle, Vue et Contrôleur) afin d’organiser et de séparer les différents composants. Ce client est capable de fonctionner hors ligne et en ligne pour permettre une partie à deux joueurs sur le même ordinateur comme sur deux ordinateurs distants.
Chaque partie pouvant être enregistrée, une fonctionnalité a été développée pour revoir des parties de jeu d’échecs .À noter le support de la lecture de la norme PGN (Portable Game Notation) permettant de voir les parties des grands maîtres disponibles sur internet.
La fonctionnalité jeu en réseau est associée à un salon, permettant la rencontre des joueurs par un chat ainsi que la vue des différentes parties. Chaque joueur peut y créer ses propres parties afin d’attendre un joueur pour lancer la partie de jeu d’échecs.
Une autre fonctionnalité disponible dans le mode réseau est la consultation des profils des joueurs. De cette manière, un joueur peut consulter le profil d’un autre, voir les parties d’échecs qu’il a fait (le visionnage de la partie n’est pas disponible), son score et ses statistiques de jeu.
Le serveur gère la liste des joueurs, des parties, les conversations ainsi qu’une base de données stockant les joueurs inscrits ainsi que leurs scores et parties enregistrées.
Basé sur une communication chiffrée (AES) et un échange de clé sécurisé (DH), les échanges avec les clients sont sécurisés, ce qui infère une protection à l’ensemble du système.
Chaque client est traité dans un fil d’exécution distinct associé à une communication connectée (TCP). Des mécanismes de synchronisation ont donc été utilisés de part et d’autre pour permettre le partage des données communes.
Afin d’être convaincu du respect d’une partie des règles du jeu d’échecs, des tests unitaires ont été rédigés. Pour exemple, les mouvements des pièces ont été testés dans les cas possibles et impossibles ainsi que des coups spéciaux. Pour cela, JUnit a été utilisé pour l’exécution des tests.
Associé à ce dernier outil, des outils mesurant la qualité du projet ont été ajoutés : Cobertura mesurant la taux de couverture des tests unitaires PMD mesurant la qualité du code, vérifiant le respect des paradigmes du génie logiciel et proposant des optimisations. Checkstyle contrôlant la rédaction du code.
Les rapports de chacun sont disponibles depuis le “reports.html” après exécution de “build-quality-reports.bat”.
Pour permettre un suivi des applications et une meilleure efficacité lors des débogages, la journalisation par Log4j a été ajoutée aux projets. Associée à une configuration, elle nous permet de bénéficier de différents niveaux d’informations ainsi qu’une sélection par paquetage voire par classe si on le souhaite.
Un suivi du projet a été réalisé tout au long de celui-ci sur Microsoft Project. Cela nous a permis de lister les différentes tâches à réaliser pour ensuite séparer le travail à réaliser par chacun.
Le système est fonctionnel mais quelques fonctionnalités peuvent encore être ajoutées. Pour aller plus loin, on peut imaginer les différentes évolutions suivantes :
- Restauration de contexte après déconnexion sauvage d’un joueur, l’adversaire est mis en attente et le joueur a 1 minute pour se reconnecter.
- Couche contrôleur par reconnaissance vocale (A2 => B1...)
- Intelligence artificielle (algorithme Min/Max, analyse par rapport aux parties enregistrées dans la base de données)
- Possibilité de visionner les parties jouées par le joueur
- Mode spectateur
- Système de socket over web proxy (tunneling)
- Système de mise à jour du client