Skip to content
Snippets Groups Projects
user avatar
romain authored
685160e5
History

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.