Projet Développement Web Avancé - 2021/22

Ce projet a pour but d'implémenter un jeu de dé, le 421.

Règles du jeu

Principe général

Le 421 se joue avec 3 dés à 6 faces et une partie se joue avec de 2 à 4 joueurs.

Une partie se déroule en deux phases qui se suivent : la charge et la décharge. La phase de charge permet de répartir les 21 jetons du pot entre les joueurs en fonction de la meilleure combinaison de dés entre les joueurs. Dans la phase de décharge, un joueur qui fait la meilleure combinaison donne des jetons à celui qui a fait la plus mauvaise. La partie se termine quand un joueur n'a plus de jeton en main.

Combinaisons

Les combinaisons de dés possibles sont le 4 2 1, les brelans (3 dés identiques), 2 as avec une autre valeur, les suites de trois dés et la nénette (2 2 1) qui est la plus faible des combinaisons.

Pour 3 dés qui ne forment pas une combinaison, on les départage en les classant dans l'ordre du plus grand au plus petit et en comparant les dés un par un. Par exemple, 6 3 2 est supérieur à 5 4 1 et 6 3 2 est supérieur à 6 3 1.

Voici toutes les combinaisons de dés dans l'ordre de la meilleure à la plus mauvaise avec le nombre de jetons associés :

Phase de charge

Chaque joueur lance les 3 dés : celui qui a la plus petite combinaison prend dans le pot le nombre de jetons qui correspond à la plus grande combinaison obtenue par un des joueurs. En cas d'égalité de joueurs sur la plus petite combinaison, les joueurs à égalité relancent un dé : le plus petit a perdu et récupère les jetons.

Si un joueur fait une nénette, il reçoit par principe 2 jetons du pot, indépendamment des résultats du tour.

On recommence les lancers jusqu'à ce que les 21 jetons du pot soient distribués entre les joueurs.

Phase de décharge

Les joueurs sont ordonnés selon un ordre déterminé au départ de la partie.

Pour débuter la phase de décharge, chaque joueur lance un dé : celui qui fait la plus grande valeur commence. En cas d'égalité de plus grande valeur entre deux joueurs, ils recommencent jusqu'à se départager. Ensuite, ça sera le joueur qui a perdu le tour précédent qui commencera le prochain tour.

Pour débuter le tour, le premier joueur lance les 3 dés. Il peut décider de relancer un ou plusieurs dés au maximum deux fois pour obtenir la meilleure combinaison de 3 dés au bout de 3 lancers maximum. Les autres joueurs joueront à leur tour en relançant les dés exactement le même nombre de fois que le premier joueur (en relançant le nombre de dés qu'ils veulent à chaque fois).

Par exemple, Gérard commence le tour. Il obtient au premier lancer 1 3 4. Il décide de garder le 1 et de relancer les deux autres dés et obtient 1 1 5. Il considère que c'est un bon score et en reste là. Chacun des autres joueurs devra donc lancer les dés 2 fois. Par exemple Simone obtiendra 4 4 2 à son premier lancer, gardera un 4 et le 2 pour tenter d'obtenir le 421 au deuxième lancer.

A la fin du tour, le joueur qui a obtenu la meilleure combinaison donne le nombre de jetons de sa combinaison à celui qui a obtenu la plus mauvaise combinaison.

La partie se termine quand un joueur n'a plus de jeton : il a alors gagné la partie.

Fonctionnalités et interfaces

Gestion des comptes joueur

Chaque joueur peut se créer un compte en précisant ses informations personnelles : pseudo, mot de passe, age, sexe et ville. A l'exception du pseudo, les autres champs peuvent être modifiés.

Interface de jeu

Chaque joueur se connecte avec son pseudo et mot de passe. La page affiche la liste des joueurs actuellement connectés avec un rafraichissement régulier.

Un joueur lance une partie en sélectionnant un ou plusieurs joueurs dans la liste. S'il y en a plusieurs, il faut préciser l'ordre des joueurs.

Chaque joueur sélectionné reçoit une invitation et l'accepte ou la refuse. Une fois que tout le monde a répondu, le jeu démarre.

Quand c'est à son tour de jouer, un joueur lance les dés en suivant les règles. Quand ce n'est pas le tour d'un joueur, celui-ci voit sur sa page ce qu'il se passe chez celui qui joue.

A chaque tour, tout le monde est informé du résultat du tour et de l'état du nombre de jetons dans le pot ou chez chaque joueur.

Statistiques

Un ensemble d'informations devront être disponibles via l'interface :

Contraintes techniques

Partie données

Toutes les données sur les joueurs et les parties seront stockées dans une base de données relationnelle dont l'accès se fera via le framework JPA. La couche d'accès aux données doit être totalement découplée des couches métier et de génération/gestion des pages Web.

Partie Web

La partie Web prendra en charge la génération des interfaces du jeu. Les langages utilisés pour les pages Web seront HTML5 et CSS3. Pour les interactions, les technologies utilisées seront celles vues en cours : JSP/Servlet/JSTL, AJAX, WebSocket ...

L'utilisation de frameworks JavaScript supplémentaires est possible notamment pour gérer l'affichage coté client (mais la prise en compte dans la notation sera minime).

Il faut que les joueurs puissent créer leurs comptes, se connecter à l'interface, créer, rejoindre et jouer des parties, il faut aussi gérer les notifications à tous les joueurs tout au long du déroulement des parties.

Rendu du travail

Le premier livrable contiendra uniquement la partie d'accès aux données en JPA. Celle-ci ne devra pas être modifiée dans la suite du projet, sauf à la marge.

Le second livrable contiendra l'application Web complète et fonctionnelle.

Le travail est à faire en binôme.