Commit 15122755 authored by Sara MAHEO's avatar Sara MAHEO
Browse files

Merge branch 'add-pattern-observer' into 'main'

test ajout pattern Oberserver pour suivi score temps reel

See merge request !6
parents 313a0fbe 22394034
......@@ -4,16 +4,19 @@ import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class Game {
public class Game{
public static final String ANSI_RESET = "\u001B[0m";
public static final String ANSI_RED = "\u001B[31m";
public static final String ANSI_GREEN = "\u001B[32m";
public static final String ANSI_YELLOW = "\u001B[33m";
public static final String ANSI_BLUE = "\u001B[34m";
public static final int prixMin = 500;
public static final int prixMax = 1500;
public static void main(String[] args) {
Partie newPartie = new Partie();
Observer observer = new Score(newPartie);
JustePrix justePrixPartie = new JustePrix();
EtatArret etatArret = new EtatArret();
......@@ -49,44 +52,8 @@ public class Game {
//Pour chaque produit dans la liste lancer une partie
for (Produit produit : tabProduit) {
System.out.println("Vous jouer pour le produit "+produit.getNom() + " qui appartient à la catégorie " + produit.getTypeProduit());
jouerPartie(produit.getPrix(), justePrixPartie);
newPartie.jouerPartie(produit.getPrix(), justePrixPartie);
}
}
private static void jouerPartie(int justeprix, JustePrix justePrixPartie)
{
EtatJouer etatJouer = new EtatJouer();
System.out.print(ANSI_YELLOW);
etatJouer.partie(justePrixPartie);
System.out.print(ANSI_RESET);
int prix = -1;
int essai = 0;
Scanner deviner = new Scanner(System.in);
while (justeprix != prix && essai <= 10)
{
prix = deviner.nextInt();
if (justeprix > prix) {
System.out.println("C'est plus !");
} else if (justeprix < prix){
System.out.println("C'est moins !");
}
essai ++;
}
if (essai > 10) {
EtatPerdu etatPerdu = new EtatPerdu();
System.out.println(ANSI_RED);
etatPerdu.partie(justePrixPartie);
System.out.println(ANSI_RESET + "Le juste prix était : " + justeprix + "\n");
} else {
EtatGagne etatGagne = new EtatGagne();
System.out.println(ANSI_GREEN);
etatGagne.partie(justePrixPartie);
System.out.println(ANSI_RESET +"Bravo ! le juste prix est : " + justeprix + ". Vous l'avez trouvé en " + essai + " essais\n");
}
}
}
public interface Observer {
void notifier(int score);
}
\ No newline at end of file
import java.util.ArrayList;
import java.util.Scanner;
public class Partie implements Sujet{
private ArrayList<Observer> observers;
private int score;
public static final String ANSI_RESET = "\u001B[0m";
public static final String ANSI_RED = "\u001B[31m";
public static final String ANSI_GREEN = "\u001B[32m";
public static final String ANSI_YELLOW = "\u001B[33m";
public static final int nbEssais = 10;
public Partie() {
score = 0;
observers = new ArrayList<>();
}
@Override
public void enregistrerObs(Observer observer) {
observers.add(observer);
}
@Override
public void supprimerObs(Observer observer) {
observers.remove(observer);
}
@Override
public void notifierObs() {
observers.forEach(o -> o.notifier(score));
}
public void updateScore(int score) {
this.score = this.score + score;
notifierObs();
}
public void jouerPartie(int justeprix, JustePrix justePrixPartie)
{
EtatJouer etatJouer = new EtatJouer();
System.out.print(ANSI_YELLOW);
etatJouer.partie(justePrixPartie);
System.out.print(ANSI_RESET);
int prix = -1;
int essai = 0;
Scanner deviner = new Scanner(System.in);
while (justeprix != prix && essai <= nbEssais)
{
prix = deviner.nextInt();
if (justeprix > prix) {
System.out.println("C'est plus !");
} else if (justeprix < prix){
System.out.println("C'est moins !");
}
essai ++;
}
if (essai > nbEssais) {
EtatPerdu etatPerdu = new EtatPerdu();
System.out.println(ANSI_RED);
etatPerdu.partie(justePrixPartie);
updateScore(0);
System.out.println(ANSI_RESET + "Le juste prix était : " + justeprix + "\n");
} else {
EtatGagne etatGagne = new EtatGagne();
System.out.println(ANSI_GREEN);
etatGagne.partie(justePrixPartie);
updateScore(1);
System.out.println(ANSI_RESET +"Bravo ! le juste prix est : " + justeprix + ". Vous l'avez trouvé en " + essai + " essais\n");
}
}
}
\ No newline at end of file
public class Score implements Observer{
public final String ANSI_YELLOW = "\u001B[33m";
private Sujet sujet;
private int score;
public Score(Sujet s) {
s.enregistrerObs(this);
this.sujet = s;
}
@Override
public void notifier(int score) {
this.score = score;
afficher();
}
public void afficher() {
System.out.print(ANSI_YELLOW);
System.out.println("Votre score est actuellement de "+this.score+"/4");
}
}
\ No newline at end of file
public interface Sujet {
void enregistrerObs(Observer observer);
void supprimerObs(Observer observer);
void notifierObs();
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment