Ce projet a ete realise par BELAHCENE Rayan et BELGHITI Nabil. Nous avons divise le travail comme suit : BELGHITI Nabil : logique du jeu, regles et une partie du front BELAHCENE Rayan : backend et frontend et architecture de l'app
Principe du jeu :
Un ensemble de quetes de code est allouee aux joueurs et un imposteur parmi tous ces joueurs est designee pour venir saboter leur code et faire en sorte qu'il ne soit pas fonctionnel. Le but du groupe est de determinee qui est l'imposteur.
Regles du jeu :
Definition d'un temps max de partie en fonction de la difficulte des quetes : par exemple 10min
Un joueur est designe comme imposteur par le vote de l'ensemble des membres du groupe : une fois que la partie est lancee, un chrono tourne et tous les joueurs doivent selectionner un joueur comme imposteur
Fin de partie lorsque : temps ecoule ou toutes les quetes ont ete faites
Quetes : Tout le code des joueurs sera realise en python. Une quete designe une fonction (ou methode) que devra coder un des joueurs. Le fonctionnalite de la fonction ainsi qu'un ensemble de parametre, avec leur type, leur seront fournis avant de lancer le jeu. Une fois que toutes les personnes ont compris les fonctions, ils indiqueront cela. Une fois que tout le monde a compris les regles. La partie est lancee.
Une fois que le chrono est termine : l'ensemble des quetes terminees sont testees sur un serveur. La liste des joueurs avec le plus de vote est donnee a la fin de maniere decroissante. Si la personne qui a recoltee le plus de vote est en premier sur la liste alors elle a perdu, et les autres membres ont reussi leur mission ! Sinon, si le nb de quetes echouees (reellement) est superieur ou egal a 1 alors l'imposteur a gagne.
Possibilite de buzz : si une personne constate une manipulation suspecte d'une autre personne sur le code, alors elle peut le signaler aux autres et un vote de 30s - 1min pour debattre (en partant du principe que les personnes peuvent communiquer entre elles).
Attribution des roles : La personne chargee de saboter le code est designe par imposteur. Les personnes chargees de realiser les quetes sont les resistants. L'imposteur et les resistants sont affectes aleatoirement. On affecte les taches aleatoirement aux resistants. Personne ne peut pas connaitre le role ni les taches des joueurs. On attribue aleatoirement une couleur a chaque joueur (pour pouvoir le reconnaitre sur l'editeur de texte).
A faire si bien avance : creation de compte avec pseudo, nb d'impsoteur trouvee, nb de victoire
Stack technique : backend Node/express, frontend Vite/React
Visuel de l'application :
Limites connues et pistes d'ameliorations : Ajouter une base de donnée (pour stocker plus proprement les quêtes et stats sur les utilisateurs comme le nombre de victoire) Lancer plusieurs parties en parallèle
Installation et lancement :
Ouvrir un terminal puis lancer Frontend :
cd frontend
npm i
npm run dev
puis ouvrir un deuxième terminal et lancer le Backend :
cd backend
npm i
npm run dev
Le site est maintenant accessible à l'url : https://localhost:5173
