Oucéquecé
Le projet est une petit jeu de géographie dans lequel on doit reconnaitre la ville proposé. Ce projet exploite REST API pour assurer une communication client - serveur.
Le serveur java gère les utilisateurs et les quiz.
Fonctionnement:
Démmarage
Au lancement du serveur, le serveur récupère les questions dans le fichier questions.json
localisé dans le dossier resource.
Grâce à la librairie Gson
et la méthode DefaultQuiz#init()
le fichier est converti en une liste de quiz qui est par la suite utilisé.
Processus de jeu
enregistrement nouveau joueur :
Lorsqu'un joueur commence à jouer au jeu, on lui demande son nom d'utilisateur.
Une requète POST
http est alors réalisée à destination de ConnexionResource
via le lien http://localhost:8080/projet_prog_reseau_war_exploded/api/start
. Cette requète contient un fichier json contenant l'username, qui sera parsé par le serveur.
Le serveur créé un nouveau User
et l'enregistre dans la table de hachage dans la classe Users
. Cette classe contient tous les utilisateurs jouant actuellement au jeu. Il pourrait y avoir des cas où plusieurs joueurs ont le même pseudo. Pour éviter ce cas là, nous attribuons un UUID
aléatoire à chaque utilisateur, et c'est cet UUID
qui est utilisé comme clé de la table de hachage.
Le serveur à donc créé un nouveau User
et transmet un fichier json au client contenant le premier quiz et l'uuid du joueur. Le client garde en mémoire l'UUID
.
Le client gère alors l'affichage de la question et des réponses. On envoie au client un ClientQuiz
pour éviter de transmettre la réponse.
guess:
Le joueur choisira une réponse par la suite et envera une requète POST
au serveur qui contient son uuid ainsi que la réponse correspondante.
Le serveur répond par la suite au client. Le serveur renvoie au client un nouveau fichier json. Il se produit deux cas :
- la réponse fournie est la bonne. Le fichier json contient l'attribut "answer" mis à true qui dit au client que la répnse était la bonne.
- la réponse fournie est la fausse. Le fichier json contient l'attribut "answer" mis à false qui dit au client que la répnse était la fausse. Le fichier json contient aussi la bonne réponse.
Dans les deux cas, le score est transmis au joueur.
nouvelle question:
Le joueur peut faire une requète au serveur pour obtenir une nouvelle question. Pour cela, le client passe par la requète POST
en envoyaint un fichier json contenant son uuid.
Le serveur va par la suite envoyer un nouveau ClientQuiz
au client via un fichier json comme énoncé précédemment.
Le processus de guess et de nouvelle question continue ainsi.
Pour éviter de se faire bloquer quand on fait une requète, on a une classe CORSFilter
qui empèche le problème de cross origin.