Aller au contenu

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.

socket

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 ou pygame).
  • Enregistrer un score final dans un fichier texte.

Remarque⚓︎

Vous pouvez vous inspirer du code vu ensemble pour recv(), send(), accept(), connect() etc.