Ce document explique la structure et le fonctionnement des différentes classes du jeu de Morpion en réseau.
Le jeu utilise une architecture client-serveur :
-
Le serveur (
MorpionServer) :- Gère les connexions des clients
- Implémente la logique du jeu
- Met en relation les joueurs ou propose une IA
- Valide les coups joués
-
Le client (
MorpionClientFX) :- Fournit une interface graphique JavaFX
- Communique avec le serveur
- Affiche l'état actuel du jeu
- Permet au joueur d'interagir
-
Le lanceur (
MorpionLauncher) :- Offre une interface pour lancer facilement le serveur et les clients
- Simplifie le démarrage du jeu
Cette classe représente le serveur du jeu et gère toute la logique côté serveur.
- Game : Représente une partie entre deux joueurs ou contre l'IA
- PlayerHandler : Gère la connexion et la communication avec chaque client
- Accepte les connexions des clients
- Permet aux joueurs de choisir entre jouer contre l'IA ou un autre joueur
- Met en relation les joueurs en attente
- Gère l'état du plateau de jeu
- Valide les coups des joueurs
- Vérifie les conditions de victoire ou de match nul
- Propose des rematches
L'IA implémente une stratégie simple mais efficace :
- Essayer de gagner si possible
- Bloquer l'adversaire s'il est sur le point de gagner
- Jouer au centre si disponible
- Jouer dans un coin disponible
- Jouer sur une case disponible quelconque
Cette classe est le client graphique du jeu, développé avec JavaFX.
- Interface utilisateur graphique complète
- Dialogue de configuration pour choisir le mode et la connexion
- Affichage du plateau de jeu
- Gestion des événements (clics sur les cases)
- Communication avec le serveur
- Mode hors-ligne contre l'ordinateur
- Notifications visuelles (tour actuel, victoire, défaite, match nul)
- Initialisation de l'interface utilisateur
- Connexion au serveur (mode multijoueur)
- Gestion des événements et des messages du serveur
- Analyse et affichage de l'état du plateau
- Gestion des fins de partie et des notifications
Cette classe sert de point d'entrée pour démarrer facilement le jeu.
- Interface graphique pour lancer le serveur et/ou les clients
- Option pour lancer un second client sur la même machine
- Configuration simplifiée pour jouer à deux en local
- Indication visuelle de l'état du serveur
- Options pour choisir entre mode solo et multijoueur
La communication entre le client et le serveur utilise un protocole texte simple :
AI: Demande de jouer contre l'IAWAIT: Demande d'attendre un autre joueurREPLAY: Demande une nouvelle partieQUIT: Quitte la partieXY(où X et Y sont des chiffres) : Joue un coup à la position (X,Y)
- Messages d'information (début de partie, tour actuel, etc.)
- Représentation textuelle du plateau
- Notifications de fin de partie (victoire, défaite, match nul)
- Demandes d'action
-
Démarrage :
- Le serveur est lancé et attend les connexions
- Les clients se connectent et choisissent leur mode de jeu
-
Phase de jeu :
- Les joueurs jouent à tour de rôle
- Le serveur valide chaque coup et met à jour l'état du jeu
- Le plateau est affiché après chaque coup
-
Fin de partie :
- Lorsqu'un joueur gagne ou que le plateau est plein
- Les joueurs sont notifiés du résultat
- Option de rejouer est proposée
MorpionLauncher
|
├── démarre ──> MorpionServer
| |
| ├── Game (partie de jeu)
| └── PlayerHandler (gestion des clients)
|
└── démarre ──> MorpionClientFX
|
└── Interface graphique JavaFX
- Acceptation des connexions clients
- Traitement des messages entrants
- Validation des coups
- Mise à jour de l'état du jeu
- Envoi des notifications aux clients
- Événements d'interface utilisateur (clics)
- Envoi des actions au serveur
- Réception et traitement des messages du serveur
- Mise à jour de l'interface graphique
- Utilisation de threads pour gérer plusieurs clients simultanément
- Synchronisation pour éviter les problèmes de concurrence
- Gestion des erreurs et des déconnexions
- Interface utilisateur réactive avec JavaFX
- Encodage UTF-8 pour supporter les émojis dans les messages