Skip to content
Snippets Groups Projects
Commit b37c4cd2 authored by BRICHE Louis's avatar BRICHE Louis
Browse files

description plus approfondie des requètes

parent c8a1f103
Branches
No related tags found
No related merge requests found
...@@ -14,6 +14,7 @@ Grâce à la librairie `Gson` et la méthode `DefaultQuiz#init()` le fichier est ...@@ -14,6 +14,7 @@ Grâce à la librairie `Gson` et la méthode `DefaultQuiz#init()` le fichier est
enregistrement nouveau joueur : enregistrement nouveau joueur :
Lorsqu'un joueur commence à jouer au jeu, on lui demande son nom d'utilisateur. 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. 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 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 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`.
...@@ -22,13 +23,19 @@ Le serveur à donc créé un nouveau `User` et transmet un fichier json au clien ...@@ -22,13 +23,19 @@ Le serveur à donc créé un nouveau `User` et transmet un fichier json au clien
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. 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: 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 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 : 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 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. - 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. Dans les deux cas, le score est transmis au joueur.
nouvelle question: 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 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 serveur va par la suite envoyer un nouveau `ClientQuiz` au client via un fichier json comme énoncé précédemment.
...@@ -37,7 +44,7 @@ Le processus de guess et de nouvelle question continue ainsi. ...@@ -37,7 +44,7 @@ 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. 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.
###affichage ### affichage
Du côté du frontend l'affichage de la première page contient un formulaire contenu dans un rectangle dont on a arrondi les bords avec les fonctionnalités css. On a également un défilement automatique d'images sur le bas de la page. Du côté du frontend l'affichage de la première page contient un formulaire contenu dans un rectangle dont on a arrondi les bords avec les fonctionnalités css. On a également un défilement automatique d'images sur le bas de la page.
Après avoir valider notre nom, il est envoyé au serveur par la méthode Post après le submit du formulaire. On sauvegarde la réponse du serveur localement pour la récupérer dans la prochain page html. Après avoir valider notre nom, il est envoyé au serveur par la méthode Post après le submit du formulaire. On sauvegarde la réponse du serveur localement pour la récupérer dans la prochain page html.
...@@ -45,3 +52,105 @@ On fait ensuite une redirection vers la page Front qui contient l'essentiel du j ...@@ -45,3 +52,105 @@ On fait ensuite une redirection vers la page Front qui contient l'essentiel du j
Cliquer sur un des rectangle contenant la réponse appel une fonction qui va envoyer les informations aux serveurs et récupérer le prochain quizz. Cliquer sur un des rectangle contenant la réponse appel une fonction qui va envoyer les informations aux serveurs et récupérer le prochain quizz.
Si le prochain quizz ne contient pas de question alors on fait une redirection en sauvegardant localement la donnée score vers la page final où on affiche le résultat. Si le prochain quizz ne contient pas de question alors on fait une redirection en sauvegardant localement la donnée score vers la page final où on affiche le résultat.
### requètes
Le serveur java contient 2 classe gérant les requètes:
- `ConnexionResource`:
utilise le chemin suivant `projet_prog_reseau_war_exploded/api/start`
- accepte :
un fichier json contenant le pseudo du joueur, par exemple,
```json
{
"username": "banana"
}
```
- renvoie :
un fichier json contentant l'uuid du joueur ainsi que la première question, par exemple,
```json
{
"uuid": "ae320454-3bbe-471b-bed5-de31074e9c6a",
"question" : {
"question": "quelle est cette ville ?",
"answers": [
"Paris",
"Lyon",
"Bordeaux",
"Montpellier"
],
"imageIndex": 2
}
}
```
- `QuizResource`:
chemin suivant `projet_prog_reseau_war_exploded/quiz/answer`
- accepte :
un fichier json contenant l'uuid du joueur et la réponse à la question qui lui a été envoyé, par exemple,
```json
{
"uuid": "ae320454-3bbe-471b-bed5-de31074e9c6a",
"answer": 2
}
```
- renvoie :
le serveur renvoie la bonne réponse et le score : si bonne réponse
```json
{
"answer": true,
"score": "3/4"
}
```
sinon
```json
{
"answer": true,
"correctAnswer": "Paris",
"score": "3/4"
}
```
chemin suivant `projet_prog_reseau_war_exploded/quiz`
- accepte :
un fichier json contenant l'uuid du joueur,
```json
{
"uuid": "ae320454-3bbe-471b-bed5-de31074e9c6a"
}
```
- renvoie :
Deux cas se présentent. Si il reste des questions dans la liste de questions, le serveur renvoie la prochaine question
```json
{
"question": "quelle est cette ville ?",
"answers": [
"Paris",
"Lyon",
"Bordeaux",
"Montpellier"
],
"imageIndex": 2
}
```
sinon, le score final du joueur est envoyé
```json
{
"score": "2/3"
}
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment