Fonctionnement côté Serveur (server.js)

Rôle du serveur :

Le serveur agit comme arbitre de la partie. Il décide :

  • De la position des serpents.
  • De la position de la nourriture.
  • De l'issue du match (gagnant, perdant, match nul).

Organisation du serveur :

Gestion des rooms :

Chaque partie est isolée dans une "room" créée automatiquement lorsque deux joueurs utilisent le même code.

Initialisation du jeu :

  • Deux serpents sont créés avec une position et une direction initiale.
  • Une nourriture est placée aléatoirement sur le plateau.

Boucle de jeu serveur :

  • Toutes les 150 ms :
    • Les serpents sont déplacés.
    • Les collisions sont vérifiées :
      • Collision contre un mur
      • Collision contre son propre corps
      • Collision contre l'autre joueur
      • Tête contre tête → Match nul
    • La nourriture est gérée (manger → grossir → nouvelle nourriture).
    • L'état du jeu est envoyé à tous les clients.

Gestion de la déconnexion :

  • Si un joueur quitte la partie, la room est automatiquement supprimée.
  • Le jeu est arrêté proprement.

Code pour gérer les collisions :

if (collisionDetected) {
    clearInterval(room.interval);
    id.to(roomcode).emit("gameover", result);
}