Skip to content
Snippets Groups Projects
Commit b2923f0b authored by romain's avatar romain
Browse files

Merge remote-tracking branch 'origin/master'

parents 399397ad ee5abd14
Branches
No related tags found
No related merge requests found
package fr.louis.projetprogreseau;
import fr.louis.projetprogreseau.quizz.DefaultQuizz;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
import jakarta.servlet.annotation.WebListener;
@WebListener
public class ServerStartListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
DefaultQuizz.init();
System.out.println("Application démarrée");
}
}
package fr.louis.projetprogreseau.api;
import fr.louis.projetprogreseau.quizz.Quizz;
import fr.louis.projetprogreseau.user.User;
import fr.louis.projetprogreseau.user.Users;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import java.util.UUID;
@Path("/quiz")
public class QuizzResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Quizz getQuizz(@FormParam("userUuid") UUID userUuid) {
User user = Users.get(userUuid);
return user.getNextQuizz();
}
@GET
@Produces("text/plain")
@Path("/answer")
public String getResult(@FormParam("userUuid") UUID userUuid, @FormParam("answer") int answer) {
User user = Users.get(userUuid);
if (user == null) return " Utilisateur non trouvé";
Quizz quizz = user.getActualQuizz();
return quizz.guess(answer, user) ? "C'était la bonne réponse" : "Ce n'était pas la bonne réponse, la bonne réponse était : " + quizz.getCorreectAnswer();
}
}
package fr.louis.projetprogreseau.quizz;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
/**S
* classe qui représente la liste des quiz
*/
public class DefaultQuizz {
private static final List<Quizz> quizzList = new ArrayList<>();
public static void init(){
try {
InputStream is = DefaultQuizz.class.getClassLoader().getResourceAsStream("questions.json");
if (is == null) {
throw new FileNotFoundException("Fichier de questions introuvable");
}
Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8);
List<Quizz> quizzes = new Gson().fromJson(reader, new TypeToken<List<Quizz>>() {}.getType());
quizzList.addAll(quizzes);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Quizz next(int actualQuizz){
return quizzList.get(actualQuizz);
}
}
package fr.louis.projetprogreseau.quizz;
import fr.louis.projetprogreseau.user.User;
public class Quizz {
private final String question;
private final String[] answers;
private final int correctAnswer;
public Quizz(String question, String[] answers, int correctAnswer) {
this.question = question;
this.answers = answers;
this.correctAnswer = correctAnswer;
}
public String getQuestion() {
return question;
}
public String getCorreectAnswer() {
return answers[correctAnswer];
}
public String[] getAnswers() {
return answers;
}
public boolean guess(int answer, User user) {
boolean correctGuess = answer == correctAnswer;
user.answerQuizz(correctGuess);
return correctGuess;
}
}
package fr.louis.projetprogreseau.user;
import fr.louis.projetprogreseau.quizz.DefaultQuizz;
import fr.louis.projetprogreseau.quizz.Quizz;
/**
* classe qui gère un utilisateur
*/
public class User {
private final String username;
private int score = 0;
private int guesses = 0;
private int actualQuizz = 0;
public User(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public int getScore() {
return score;
}
public int getGuesses() {
return guesses;
}
public void answerQuizz(boolean goodAnswer){
if(goodAnswer){
score++;
}
guesses++;
}
public Quizz getNextQuizz() {
return DefaultQuizz.next(actualQuizz++);
}
public Quizz getActualQuizz() {
return DefaultQuizz.next(actualQuizz);
}
}
package fr.louis.projetprogreseau.user;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* classe qui regroupe tous les utilisateurs
*/
public class Users {
public static final Map<UUID, User> users = new HashMap<>();
public static User put(User user) {
users.put(UUID.randomUUID(), user);
return user;
}
public static User get(UUID username) {
return users.get(username);
}
}
[
{
"question": "Quel est le nom de l'acteur ayant gagné un oscar?",
"answers": [
"Dany Boon",
"Louis De Funès",
"Jean Paul Belmondo",
"Jean Reno",
"Jean Dujardin"
],
"correctAnswer": 4
},
{
"question": "Quelle est la capitale de l'Australie?",
"answers": [
"Sydney",
"Melbourne",
"Canberra",
"Brisbane",
"Perth"
],
"correctAnswer": 2
},
{
"question": "Quel est l'élément chimique dont le symbole est 'O'?",
"answers": [
"Or",
"Oxygène",
"Osmium",
"Ozone",
"Opale"
],
"correctAnswer": 1
},
{
"question": "Qui a peint la Joconde?",
"answers": [
"Michel-Ange",
"Raphaël",
"Leonardo da Vinci",
"Claude Monet",
"Vincent van Gogh"
],
"correctAnswer": 2
},
{
"question": "Combien de continents existe-t-il sur Terre?",
"answers": [
"5",
"6",
"7",
"8",
"9"
],
"correctAnswer": 2
},
{
"question": "Quelle est la langue la plus parlée dans le monde?",
"answers": [
"Anglais",
"Espagnol",
"Français",
"Mandarin",
"Hindi"
],
"correctAnswer": 3
},
{
"question": "Quel est le plus grand océan du monde?",
"answers": [
"Océan Atlantique",
"Océan Indien",
"Océan Pacifique",
"Océan Arctique",
"Océan Austral"
],
"correctAnswer": 2
},
{
"question": "Quel est le président de la République française en 2025?",
"answers": [
"François Hollande",
"Emmanuel Macron",
"Jean-Luc Mélenchon",
"Marine Le Pen",
"Édouard Philippe"
],
"correctAnswer": 1
},
{
"question": "Quel est l’auteur du roman '1984'?",
"answers": [
"Aldous Huxley",
"Ray Bradbury",
"George Orwell",
"Philip K. Dick",
"Jules Verne"
],
"correctAnswer": 2
},
{
"question": "Combien y a-t-il de côtés dans un hexagone?",
"answers": [
"5",
"6",
"7",
"8",
"10"
],
"correctAnswer": 1
}
]
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment