Mini-projet : Créer un jeu multijoueur en réseau (2 clients)⚓︎
🎯 Objectifs
- Concevoir un protocole d’échange entre programmes.
- Utiliser les sockets Python pour gérer plusieurs connexions clients.
- Développer un jeu interactif à distance.

Contexte⚓︎
Après avoir découvert la communication client-serveur et réalisé un jeu pierre-feuille-ciseaux, vous allez concevoir votre propre jeu jouable entre 2 clients connectés à un serveur arbitre.
Le serveur sera responsable de :
- Gérer les connexions des 2 joueurs.
- Coordonner les échanges.
- Déclarer le vainqueur (ou afficher le résultat).
Le client ou les clients devront :
- Se connecter au serveur.
- Envoyer leurs choix ou actions.
- Recevoir les réponses et les afficher.
Organisation du travail⚓︎
Travail par binômes :
- 1 serveur
- 1 ou 2 clients connectés simultanément
Le jeu devra être testable localement (en réseau local).
Liste d'exemples de jeux possibles⚓︎
Jeux très simples (fortement recommandés)⚓︎
- Pierre Feuille Ciseaux 2 joueurs (comme en cours, mais amélioré avec score ou plusieurs manches).
- Devine le nombre : le serveur génère un nombre aléatoire, chaque client propose un nombre à tour de rôle.
- Chifoumi : version classique avec animation ou console améliorée.
- Tirage de dés : chaque joueur "lance un dé", le plus grand nombre gagne.
Jeux niveau moyen (pour groupes rapides)⚓︎
- Bataille de cartes simplifiée : chaque joueur envoie une valeur aléatoire, le plus grand l'emporte.
- Jeu du pendu collaboratif : un joueur propose un mot, l'autre devine.
- Morpion (Tic Tac Toe) : le serveur gère la grille et les tours des joueurs.
(Optionnel) Jeux niveau avancé (si certains veulent se challenger)⚓︎
- Quiz multijoueur : le serveur envoie des questions, les deux joueurs répondent, le plus rapide et juste gagne.
- Duel de rapidité : le serveur envoie un signal, le premier joueur à envoyer "STOP" gagne.
Consignes techniques⚓︎
Votre programme doit :
- Utiliser des sockets TCP (module socketen Python) et thread.
- Le serveur accepte 2 connexions.
- Les joueurs jouent à tour de rôle ou simultanément selon votre règle de jeu.
- Gérer les déconnexions propres (close()).
- Afficher des messages clairs côté client et côté serveur.
Livrables à construire :⚓︎
- serveur.py : code du serveur
- client1.py + client2.py ou client.py (si le même programme sert pour les 2 joueurs)
- Un fichier texte README.mddécrivant :
- Le nom et la règle du jeu.
- Le schéma de fonctionnement (qui envoie quoi et quand ?).
- Les difficultés rencontrées et ce que vous avez appris.
Astuces⚓︎
- Pensez à tester très tôt les connexions entre clients et serveur.
- Commencez par échanger des messages simples (ex : "Bonjour joueur 1", "Bonjour joueur 2").
- Une fois les échanges fiables, ajoutez la logique du jeu.
Bonus (facultatif)⚓︎
- Interface graphique (ex : tkinteroupygame).
- Enregistrer un score final dans un fichier texte.
Remarque⚓︎
Vous pouvez vous inspirer du code vu ensemble pour recv(), send(), accept(), connect() etc.