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
socket
en 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.md
dé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 :
tkinter
oupygame
). - Enregistrer un score final dans un fichier texte.
Remarque⚓︎
Vous pouvez vous inspirer du code vu ensemble pour recv()
, send()
, accept()
, connect()
etc.