update
This commit is contained in:
41
DEV.3.1/TP/TP4/ex2Quiz/src/Modele/ChoixUtilisateur.java
Normal file
41
DEV.3.1/TP/TP4/ex2Quiz/src/Modele/ChoixUtilisateur.java
Normal file
@@ -0,0 +1,41 @@
|
||||
package Modele;
|
||||
|
||||
/**
|
||||
* la classe <code>ChoixUtilisateur</code> permet de stocker les choix de l'utilisateur pour chaque question.
|
||||
*/
|
||||
public class ChoixUtilisateur {
|
||||
|
||||
/**
|
||||
* Le tableau des choix de l'utilisateur pour chaque question. -1 signifie pas encore repondu
|
||||
*/
|
||||
private int[] choix;
|
||||
|
||||
/**
|
||||
* Constructeur de la classe ChoixUtilisateur
|
||||
* @param nombreQuestions le nombre de questions dans le questionnaire
|
||||
*/
|
||||
public ChoixUtilisateur(int nombreQuestions) {
|
||||
this.choix = new int[nombreQuestions]; // -1 signifie pas encore repondu
|
||||
for (int i = 0; i < nombreQuestions; i++) {
|
||||
this.choix[i] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter pour un choix de reponse a une question
|
||||
* @param questionIndex l'index de la question
|
||||
* @param reponseIndex l'index de la reponse choisie par l'utilisateur
|
||||
*/
|
||||
public void setChoix(int questionIndex, int reponseIndex) {
|
||||
this.choix[questionIndex] = reponseIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour un choix de reponse a une question
|
||||
* @param questionIndex l'index de la question
|
||||
* @return l'index de la reponse choisie par l'utilisateur
|
||||
*/
|
||||
public int getChoix(int questionIndex) {
|
||||
return this.choix[questionIndex];
|
||||
}
|
||||
}
|
@@ -1,14 +1,172 @@
|
||||
package Modele;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* la classe <code>Question</code> permet de generer une question aleatoire
|
||||
* avec deux operandes et une operation parmi +,-,x,/
|
||||
* Elle genere egalement 4 propositions de reponses dont une est correcte et une est fausse
|
||||
*
|
||||
* @version 1.0
|
||||
* @author Emmanuel TIAMZON
|
||||
*/
|
||||
public class Question {
|
||||
|
||||
private String[] operation;
|
||||
private int operand;
|
||||
/**
|
||||
* Les attributs de la classe Question
|
||||
*/
|
||||
private String[] operations;
|
||||
|
||||
/**
|
||||
* operation courante parmi +,-,x,/
|
||||
*/
|
||||
private String operation;
|
||||
|
||||
/**
|
||||
* L'operande A de la question
|
||||
*/
|
||||
private int operandA;
|
||||
|
||||
/**
|
||||
* l'operande B de la question
|
||||
*/
|
||||
private int operandB;
|
||||
|
||||
/**
|
||||
* Constante Random pour la generation aleatoire
|
||||
*/
|
||||
private Random rand;
|
||||
|
||||
/**
|
||||
* La reponse correcte de la question
|
||||
*/
|
||||
private int answer;
|
||||
|
||||
/**
|
||||
* La question sous forme de chaine de caracteres
|
||||
*/
|
||||
private String questionString;
|
||||
|
||||
/**
|
||||
* Propositions de reponses (4 au total, une correcte et trois fausses)
|
||||
*/
|
||||
private String[] propositions;
|
||||
|
||||
/**
|
||||
* Index de la reponse correcte dans le tableau des propositions
|
||||
*/
|
||||
private int correctIndex;
|
||||
|
||||
/**
|
||||
* Constructeur de la classe Question
|
||||
*/
|
||||
public Question() {
|
||||
this.operation[] = {" + "," - "," x "," / "};
|
||||
this.operations = new String[] {"+","-","x","/"};
|
||||
this.rand = new Random();
|
||||
|
||||
int opIndex = rand.nextInt(this.operations.length);
|
||||
this.operation = this.operations[opIndex];
|
||||
|
||||
this.operandA = rand.nextInt(10) + 1;
|
||||
this.operandB = rand.nextInt(10) + 1;
|
||||
if (this.operation.equals("/")) {
|
||||
this.operandB = rand.nextInt(9) + 1; // S'assure que b n'est pas 0
|
||||
this.operandA = this.operandB * (rand.nextInt(10) + 1); // S'assure que a est un multiple de b
|
||||
}
|
||||
this.answer = computeAnswer();
|
||||
|
||||
this.propositions = new String[4]; // 4 propositions pour chaque question
|
||||
this.correctIndex = rand.nextInt(4);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (i == correctIndex) {
|
||||
propositions[i] = String.valueOf(answer);
|
||||
} else {
|
||||
int fake;
|
||||
do {
|
||||
fake = answer + rand.nextInt(21) - 10;
|
||||
} while (fake == answer || fake < 0 || contains(propositions, String.valueOf(fake)));
|
||||
propositions[i] = String.valueOf(fake);
|
||||
}
|
||||
}
|
||||
}
|
||||
public int choixOperand() {
|
||||
System.out.println("coucou manu");
|
||||
return this.operand;
|
||||
|
||||
/**
|
||||
* Genere une nouvelle question sous forme de chaine de caracteres
|
||||
* @return la question sous forme de chaine de caracteres
|
||||
*/
|
||||
public String makeNewQuestion() {
|
||||
this.questionString = "What is " + this.operandA + this.operation + this.operandB + " ?";
|
||||
return questionString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifie si un tableau de chaines de caracteres contient une valeur donnee
|
||||
* @param arr array de chaines de caracteres
|
||||
* @param val valeur a chercher
|
||||
* @return true si le tableau contient la valeur, false sinon
|
||||
*/
|
||||
private boolean contains(String[] arr, String val) {
|
||||
for (String s : arr) {
|
||||
if (val != null && val.equals(s)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcule la reponse de la question courante
|
||||
* @return la reponse de la question courante
|
||||
*/
|
||||
public int computeAnswer() {
|
||||
switch (this.operation) {
|
||||
case "+":
|
||||
return this.operandA + this.operandB;
|
||||
case "-":
|
||||
return this.operandA - this.operandB;
|
||||
case "x":
|
||||
return this.operandA * this.operandB;
|
||||
case "/":
|
||||
return this.operandA / this.operandB;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Affiche les choix d'operations disponibles
|
||||
*/
|
||||
public void choixOperation() {
|
||||
System.out.println("Choose an operation between 1 and 4: \n 1. + \n 2. - \n 3. x \n 4. /");
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour la question sous forme de chaine de caracteres
|
||||
* @return la question sous forme de chaine de caracteres
|
||||
*/
|
||||
public String getQuestionString() {
|
||||
return this.questionString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour l'operation courante
|
||||
* @return l'operation courante
|
||||
*/
|
||||
public String getOperation() {
|
||||
return this.operation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour les propositions de reponses
|
||||
* @return les propositions de reponses
|
||||
*/
|
||||
public String[] getPropositions() {
|
||||
return propositions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour l'index de la reponse correcte
|
||||
* @return l'index de la reponse correcte
|
||||
*/
|
||||
public int getCorrectIndex() {
|
||||
return correctIndex;
|
||||
}
|
||||
}
|
77
DEV.3.1/TP/TP4/ex2Quiz/src/Modele/Questionnaire.java
Normal file
77
DEV.3.1/TP/TP4/ex2Quiz/src/Modele/Questionnaire.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package Modele;
|
||||
|
||||
/**
|
||||
* la classe <code>Questionnaire</code> permet de representer un questionnaire compose de plusieurs questions.
|
||||
*/
|
||||
public class Questionnaire {
|
||||
|
||||
/**
|
||||
* Le tableau des questions du questionnaire.
|
||||
*/
|
||||
private Question[] questions;
|
||||
|
||||
/**
|
||||
* Les choix de l'utilisateur pour chaque question.
|
||||
*/
|
||||
private ChoixUtilisateur choixUtilisateur;
|
||||
|
||||
/**
|
||||
* Constructeur de la classe Questionnaire
|
||||
* @param nombreQuestions le nombre de questions dans le questionnaire
|
||||
*/
|
||||
public Questionnaire(int nombreQuestions) {
|
||||
this.questions = new Question[nombreQuestions];
|
||||
for (int i = 0; i < nombreQuestions; i++) {
|
||||
this.questions[i] = new Question();
|
||||
}
|
||||
this.choixUtilisateur = new ChoixUtilisateur(nombreQuestions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour le tableau des questions
|
||||
* @return le tableau des questions
|
||||
*/
|
||||
public Question[] getQuestions() {
|
||||
return questions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour une question a un index donnee
|
||||
* @param index l'index de la question
|
||||
* @return la question a l'index donnee
|
||||
*/
|
||||
public Question getQuestion(int index) {
|
||||
return questions[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour les choix de l'utilisateur
|
||||
* @return les choix de l'utilisateur
|
||||
*/
|
||||
public ChoixUtilisateur getChoixUtilisateur() {
|
||||
return choixUtilisateur;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter pour le nombre de questions dans le questionnaire
|
||||
* @return le nombre de questions dans le questionnaire
|
||||
*/
|
||||
public int getNombreQuestions() {
|
||||
return questions.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcule le nombre de bonnes réponses de l'utilisateur.
|
||||
* @return le score (nombre de bonnes réponses)
|
||||
*/
|
||||
public int calculerScore() {
|
||||
int score = 0;
|
||||
for (int i = 0; i < questions.length; i++) {
|
||||
int choix = choixUtilisateur.getChoix(i);
|
||||
if (choix == questions[i].getCorrectIndex()) {
|
||||
score++;
|
||||
}
|
||||
}
|
||||
return score;
|
||||
}
|
||||
}
|
17
DEV.3.1/TP/TP4/ex2Quiz/src/Vue/AffichageQuestion.java
Normal file
17
DEV.3.1/TP/TP4/ex2Quiz/src/Vue/AffichageQuestion.java
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Classe pour l'affichage des questions
|
||||
*/
|
||||
public class AffichageQuestion {
|
||||
|
||||
/**
|
||||
* Mode solution activé ou non (false si mode questionnaire, true si mode solution)
|
||||
*/
|
||||
private boolean modeSolution;
|
||||
|
||||
/**
|
||||
* Constructeur de la classe AffichageQuestion
|
||||
*/
|
||||
public AffichageQuestion() {
|
||||
this.modeSolution = false;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user