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);
}