From 30c2482ec277b10c4ae2966faa3a86a4a6a63043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Tue, 20 Jun 2023 21:05:21 +0200 Subject: [PATCH] init --- .vscode/settings.json | 7 ++ LISEZ-MOI.txt | 65 ++++++++++ allumettes/Arbitre.java | 125 +++++++++++++++++++ allumettes/ConfigurationException.java | 16 +++ allumettes/CoupInvalideException.java | 29 +++++ allumettes/Expert.java | 25 ++++ allumettes/Humain.java | 34 +++++ allumettes/Jeu.java | 21 ++++ allumettes/Jouer.java | 130 ++++++++++++++++++++ allumettes/Joueur.java | 75 +++++++++++ allumettes/Lente.java | 10 ++ allumettes/Naif.java | 21 ++++ allumettes/OperationInterditeException.java | 5 + allumettes/Partie.java | 48 ++++++++ allumettes/PartieSafe.java | 32 +++++ allumettes/Rapide.java | 15 +++ allumettes/Strategie.java | 14 +++ allumettes/TestArbitre.java | 41 ++++++ allumettes/TestLente.java | 26 ++++ allumettes/TestPartie.java | 48 ++++++++ allumettes/TestPartieSafe.java | 24 ++++ allumettes/TestRapide.java | 54 ++++++++ allumettes/Tricheur.java | 13 ++ testeur.sh | 104 ++++++++++++++++ to-1sn-2020-pr-02-sujet.pdf | Bin 0 -> 85430 bytes 25 files changed, 982 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 LISEZ-MOI.txt create mode 100644 allumettes/Arbitre.java create mode 100644 allumettes/ConfigurationException.java create mode 100644 allumettes/CoupInvalideException.java create mode 100644 allumettes/Expert.java create mode 100644 allumettes/Humain.java create mode 100644 allumettes/Jeu.java create mode 100644 allumettes/Jouer.java create mode 100644 allumettes/Joueur.java create mode 100644 allumettes/Lente.java create mode 100644 allumettes/Naif.java create mode 100644 allumettes/OperationInterditeException.java create mode 100644 allumettes/Partie.java create mode 100644 allumettes/PartieSafe.java create mode 100644 allumettes/Rapide.java create mode 100644 allumettes/Strategie.java create mode 100644 allumettes/TestArbitre.java create mode 100644 allumettes/TestLente.java create mode 100644 allumettes/TestPartie.java create mode 100644 allumettes/TestPartieSafe.java create mode 100644 allumettes/TestRapide.java create mode 100644 allumettes/Tricheur.java create mode 100644 testeur.sh create mode 100644 to-1sn-2020-pr-02-sujet.pdf diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..36195cc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "java.project.referencedLibraries": [ + "lib/**/*.jar", + "/usr/share/java/junit.jar", + "/usr/share/java/hamcrest-core.jar" + ] +} \ No newline at end of file diff --git a/LISEZ-MOI.txt b/LISEZ-MOI.txt new file mode 100644 index 0000000..79d3f03 --- /dev/null +++ b/LISEZ-MOI.txt @@ -0,0 +1,65 @@ +Nom : Fainsin +Prénom : Laurent +Groupe TP : I + +Les « ... » indiquent les endroits à compléter. + +=====[ Temps passé ]============================================================ + +Ces informations de temps sont demandées à titre indicatif et ne sont pas +prises en compte dans la notation du projet. + +Toutes les durées sont à saisir en heures. Par exemple, si vous avez passé +1h45, il faudra indiquer 1.75. Si vous avez passé 2h30, il faudra indiquer +2.5. + +* Temps passé sur la V1 (en h) : 7.5 +* Temps passé sur la V2 (en h) : 0.5 + + +=====[ Questions ]============================================================== + +-------------------------------------------------------------------------------- +Pourquoi l'exception OperationInterditeException ne peut pas être définie +comme vérifiée par le compilateur ? +-------------------------------------------------------------------------------- + +PartieSafe.retirer doit lever l'exception OperationInterditeException, mais on ne +peut pas (à cause de l'override) lui faire lever plus d'exceptions que +CoupInvalideException. Il faut alors que OperationInterditeException ne soit pas +vérifié à la compilation, on construit alors OperationInterditeException comme +héritant de RuntimeException. + + +-------------------------------------------------------------------------------- +Expliquer ce qu'il faut faire pour ajouter un nouveau niveau de jeu, par +exemple la stratégie lente (C13). Pour plus de précision, on numérotera +les étapes à faire. +-------------------------------------------------------------------------------- + +1. Créer une nouvelle Classe implémentant l'interface Stratégie +2. Définir sa méthode nbPrise +3. Ajouter son identifiant (nom) dans le switch de Jouer.parsePlayer() +4. Dans le cas de sa sélection (case), affecter à strat la stratégie (constructeur) + + +-------------------------------------------------------------------------------- +Expliquer ce qui permet, dans votre conception, de changer dynamiquement +(en cours d'exécution du programme) la stratégie d'un joueur (C14). +-------------------------------------------------------------------------------- + +La stratégie du joueur est un attribut (de la classe) on peut donc la ré-attribuer en +cours de partie. +On peut créer la méthode de classe setStrat(Stratégie) dans cet unique but. + + +=====[ Explications ]=========================================================== + +-------------------------------------------------------------------------------- +Donner ici les explications supplémentaires utiles à la compréhension du +travail rendu. +-------------------------------------------------------------------------------- + +Utiliser un Tab size de 4 pour avoir une lecture correcte. + +-------------------------------------------------------------------------------- diff --git a/allumettes/Arbitre.java b/allumettes/Arbitre.java new file mode 100644 index 0000000..fd0335c --- /dev/null +++ b/allumettes/Arbitre.java @@ -0,0 +1,125 @@ +package allumettes; + +public class Arbitre { + + // Attributs + + /** Joueurs de la partie */ + private Joueur j1; + private Joueur j2; + + /** Joueur jouant actuellement */ + private Joueur courant; + + /** Détermine si l'arbitre vérifie la triche */ + private Boolean confiant = false; + + // Constructeurs + + /** + * Construire un arbitre à partir de deux joueurs. + * + * @param j1 Joueur n°1 + * @param j2 Joueur n°2 + */ + public Arbitre(Joueur j1, Joueur j2) throws ConfigurationException { + if (j1 == null) { + throw new ConfigurationException("j1 n'existe pas"); + } else if (j2 == null) { + throw new ConfigurationException("j2 n'existe pas"); + } else { + this.j1 = j1; + this.j2 = j2; + this.courant = j1; + } + } + + // GETS + + /** + * Déterminer quel joueur ne joue pas actuellement. + */ + private Joueur getAutre() { + if (this.courant == j1) { + return this.j2; + } else { + return this.j1; + } + } + + // SETs + + public void setConfiant(Boolean confiant) { + this.confiant = confiant; + } + + /** + * Permet de changer le joueur courant de la partie + */ + private void swapCourant() { + if (this.courant == this.j1) { + this.courant = this.j2; + } else { + this.courant = this.j1; + } + } + + // Méthodes + + /** + * Arbitrer un jeu d'allumettes. + * + * @param game Jeu que l'on arbitre + */ + public void arbitrer(Jeu game) { + while (true) { + int nbPrise; + System.out.format("Nombre d'allumettes restantes : %d\n", game.getNombreAllumettes()); + try { + + // le joueur choisit sont coup + if (this.confiant) { + nbPrise = this.courant.getPrise(game); + } else { + nbPrise = this.courant.getPrise(new PartieSafe(game)); + } + + // l'arbitre énonce le coup + if (nbPrise == 1 || nbPrise == 0 || nbPrise == -1) { + System.out.format("%s prend %d allumette.\n", this.courant.getNom(), nbPrise); + } else { + System.out.format("%s prend %d allumettes.\n", this.courant.getNom(), nbPrise); + } + + // l'arbitre vérifie la validité du coup + if (nbPrise > game.getNombreAllumettes()) { + throw new CoupInvalideException(nbPrise, String.format("> %d", game.getNombreAllumettes())); + } else if (nbPrise > Jeu.PRISE_MAX) { + throw new CoupInvalideException(nbPrise, String.format("> %d", Jeu.PRISE_MAX)); + } else { + game.retirer(nbPrise); + } + + // l'arbitre passe la main + this.swapCourant(); + System.out.println(); + break; + + } catch (OperationInterditeException e) { + System.out.format("Abandon de la partie car %s triche !\n", this.courant.getNom()); + throw e; + } catch (CoupInvalideException e) { + System.out.format("Impossible ! %s\n\n", e.getMessage()); + } + } + } + + /** + * Déterminer le vainqueur en fin de partie. + */ + public void afficherGagnant() { + System.out.format("%s perd !\n", this.getAutre().getNom()); + System.out.format("%s gagne !\n", this.courant.getNom()); + } + +} diff --git a/allumettes/ConfigurationException.java b/allumettes/ConfigurationException.java new file mode 100644 index 0000000..9f8d9f2 --- /dev/null +++ b/allumettes/ConfigurationException.java @@ -0,0 +1,16 @@ +package allumettes; + +/** Exception qui indique que la configuration d'une partie est incorrecte. + * @author Xavier Crégut + * @version 1.4 + */ +public class ConfigurationException extends RuntimeException { + + /** Initaliser une ConfigurationException avec le message précisé. + * @param message le message explicatif + */ + public ConfigurationException(String message) { + super(message); + } + +} diff --git a/allumettes/CoupInvalideException.java b/allumettes/CoupInvalideException.java new file mode 100644 index 0000000..92f1f38 --- /dev/null +++ b/allumettes/CoupInvalideException.java @@ -0,0 +1,29 @@ +package allumettes; + +/** Exception qui indique qu'un coup invalide est joué. + * @author Xavier Crégut + * @version $Revision: 1.3 $ + */ +public class CoupInvalideException extends Exception { + + /** Nombre d'allumettes prises. */ + private int nbAllumettes; + + /** Initialiser CoupInvalideException à partir du nombre d'allumettes + * prises et le problème constaté. Par exemple, on peut avoir nombre + * d'allumettes qui vaut 0 et le problème "< 1". + * @param nb le nombre d'allumettes prises + * @param probleme le problème sur le nombre d'allumettes + */ + public CoupInvalideException(int nb, String probleme) { + super("Nombre d'allumettes invalide : " + nb + " (" + probleme + ")"); + this.nbAllumettes = nb; + } + + /** Indiquer le nombre d'allumettes qu'un joueur a voulu prendre. + * @return le nombre d'allumettes qu'un joueur a voulu prendre. */ + public int getNombreAllumettes() { + return this.nbAllumettes; + } + +} diff --git a/allumettes/Expert.java b/allumettes/Expert.java new file mode 100644 index 0000000..6f405aa --- /dev/null +++ b/allumettes/Expert.java @@ -0,0 +1,25 @@ +package allumettes; + +public class Expert implements Strategie { + + // TODO: à généraliser ? + + @Override + public int nbPrise(Jeu game, String nom) { + int prise = 0; + switch (game.getNombreAllumettes() % 4) { + case 0: + prise = 3; + break; + case 1: + case 2: + prise = 1; + break; + case 3: + prise = 2; + break; + } + return prise; + } + +} diff --git a/allumettes/Humain.java b/allumettes/Humain.java new file mode 100644 index 0000000..add24aa --- /dev/null +++ b/allumettes/Humain.java @@ -0,0 +1,34 @@ +package allumettes; + +import java.util.Scanner; + +public class Humain implements Strategie { + + /** + * Scanner qui permet de récupérer les entrées des joueurs humains sc est static + * car avoir plus d'un scanner ouvert à la fois semble faire bugger la lecture. + */ + private static Scanner sc = new Scanner(System.in); + + @Override + public int nbPrise(Jeu game, String nom) throws CoupInvalideException { + int prise = 1; + while (true) { + try { + System.out.printf("%s, combien d'allumettes ? ", nom); + String input = sc.nextLine(); + if (input.equals("triche")) { + game.retirer(1); + System.out.format("[Une allumette en moins, plus que %d. Chut !]\n", game.getNombreAllumettes()); + } else { + prise = Integer.parseInt(input); + break; + } + } catch (java.lang.NumberFormatException e) { + System.out.println("Vous devez donner un entier."); + } + } + return prise; + } + +} diff --git a/allumettes/Jeu.java b/allumettes/Jeu.java new file mode 100644 index 0000000..4d1ce55 --- /dev/null +++ b/allumettes/Jeu.java @@ -0,0 +1,21 @@ +package allumettes; + +public interface Jeu { + + /** Nombre maximal d'allumettes pouvant être prises. */ + int PRISE_MAX = 3; + + /** Obtenir le nombre d'allumettes encore en jeu. + * @return nombre d'allumettes encore en jeu + */ + int getNombreAllumettes(); + + /** Retirer des allumettes. Le nombre d'allumettes doit être compris + * entre 1 et PRISE_MAX, dans la limite du nombre d'allumettes encore + * en jeu. + * @param nbPrises nombre d'allumettes prises. + * @throws CoupInvalideException tentative de prendre un nombre invalide d'alumettes + */ + void retirer(int nbPrises) throws CoupInvalideException; + +} diff --git a/allumettes/Jouer.java b/allumettes/Jouer.java new file mode 100644 index 0000000..3b2d7d3 --- /dev/null +++ b/allumettes/Jouer.java @@ -0,0 +1,130 @@ +package allumettes; + +/** + * Lance une partie du jeu des allumettes en fonction des arguments fournis sur + * la ligne de commande. + * + * @author Xavier Crégut + * @version $Revision: 1.5$ + */ +public class Jouer { + + /** + * Lancer une partie. En argument sont donnés les deux joueurs sous la forme + * nom@stratégie. + * + * @param args la description des deux joueurs + */ + public static void main(String[] args) { + + Joueur j1 = null; + Joueur j2 = null; + Arbitre arbitre = null; + Jeu game = null; + + try { + + verifierNombreArguments(args); + + if (args.length > 2) { + j1 = parsePlayer(args[1]); + j2 = parsePlayer(args[2]); + } else { + j1 = parsePlayer(args[0]); + j2 = parsePlayer(args[1]); + } + + arbitre = new Arbitre(j1, j2); + arbitre.setConfiant(args[0].equals("-confiant")); + game = new Partie(); + + } catch (ConfigurationException e) { + System.out.println("\nErreur : " + e.getMessage()); + afficherUsage(); + System.exit(1); + } + + try { + while (game.getNombreAllumettes() > 0) { + arbitre.arbitrer(game); + } + arbitre.afficherGagnant(); + } finally { + System.exit(0); + } + + } + + /** + * Créer un joueur à partir d'une chaine de caractères. + * + * @param arg chaine de caractère permettant de créer le joueur + * @throws ConfigurationException si le joueur ne peut pas être créé + */ + private static Joueur parsePlayer(String arg) throws ConfigurationException { + String[] pre = arg.split("@"); + if (pre.length != 2) { + throw new ConfigurationException("Configuration d'un joueur invalide"); + } + + String nom = pre[0]; + + Strategie strat; + switch (pre[1].toLowerCase()) { + case "naif": + strat = new Naif(); + break; + case "rapide": + strat = new Rapide(); + break; + case "expert": + strat = new Expert(); + break; + case "humain": + strat = new Humain(); + break; + case "lente": + strat = new Lente(); + break; + case "tricheur": + strat = new Tricheur(); + break; + default: + throw new ConfigurationException(String.format("Stratégie de %s invalide", nom)); + } + return new Joueur(nom, strat); + } + + /** + * Vérifier si le nombre d'arguments fournis dans la ligne de commande est + * cohérent. + * + * @param args arguments de la ligne de commande + * @throws ConfigurationException si les argument ne sont pas correctes + */ + private static void verifierNombreArguments(String[] args) throws ConfigurationException { + final int nbJoueurs = 2; + if (args.length < nbJoueurs) { + throw new ConfigurationException("Trop peu d'arguments : " + args.length); + } + if (args.length > nbJoueurs + 1) { + throw new ConfigurationException("Trop d'arguments : " + args.length); + } + } + + /** + * Afficher des indications sur la manière d'exécuter cette classe. + */ + public static void afficherUsage() { + System.out.println("\n" + + "Usage :" + + "\n\t" + "java allumettes.Jouer joueur1 joueur2" + + "\n\t\t" + "joueur est de la forme nom@stratégie" + + "\n\t\t" + "strategie = naif | rapide | expert | humain | tricheur | lente" + + + "\n\n\t" + "Exemple :" + + "\n\t\t" + "java allumettes.Jouer Xavier@humain Ordinateur@naif" + + "\n"); + } + +} diff --git a/allumettes/Joueur.java b/allumettes/Joueur.java new file mode 100644 index 0000000..5802a62 --- /dev/null +++ b/allumettes/Joueur.java @@ -0,0 +1,75 @@ +package allumettes; + +public class Joueur { + + // Attributs + + /** Le nom du joueur */ + private String nom; + + /** Stratégie adoptée par le joueur */ + private Strategie strat; + + // Constructeurs + + /** + * Construire un joueur à partir de son nom et du nom de sa stratégie. + * + * @param nom nom du joueur + * @param strat stratégie à adopter + */ + public Joueur(String nom, Strategie strat) { + + if (nom == null) { + throw new ConfigurationException("Un joueur n'a pas de nom"); + } else if (strat == null) { + throw new ConfigurationException(this.nom + " n'a pas de stratégie"); + } else { + this.nom = nom; + this.strat = strat; + } + } + + // GETs + + public String getNom() { + return this.nom; + } + + // SETs + + public void setNom(String nom) throws ConfigurationException { + if (nom == null) { + throw new ConfigurationException(this.nom + "doit avoir un nouveau nom valide"); + } else { + this.nom = nom; + } + } + + public void setStrat(Strategie strat) throws ConfigurationException { + if (strat == null) { + throw new ConfigurationException(this.nom + "doit avoir une stratégie valide"); + } else { + this.strat = strat; + } + } + + // Méthodes + + /** + * Obtenir le nombre d'allumettes que le joueur prends. + * + * @param game Le jeu auquel on prend des allumettes + * @return le nombre d'allumettes que le joueur prends + * @throws CoupInvalideException si le coup + * @throws ConfigurationException si le jeu fournis est null + */ + public int getPrise(Jeu game) throws CoupInvalideException, ConfigurationException { + if (game == null) { + throw new ConfigurationException(this.nom + " ne trouve pas la partie"); + } else { + return this.strat.nbPrise(game, this.nom); + } + } + +} diff --git a/allumettes/Lente.java b/allumettes/Lente.java new file mode 100644 index 0000000..e8da1ef --- /dev/null +++ b/allumettes/Lente.java @@ -0,0 +1,10 @@ +package allumettes; + +public class Lente implements Strategie { + + @Override + public int nbPrise(Jeu game, String nom) { + return 1; + } + +} diff --git a/allumettes/Naif.java b/allumettes/Naif.java new file mode 100644 index 0000000..52f99ec --- /dev/null +++ b/allumettes/Naif.java @@ -0,0 +1,21 @@ +package allumettes; + +import java.util.Random; + +public class Naif implements Strategie { + + /** Générateur de nombres aléatoire */ + private Random random = new Random(); + + @Override + public int nbPrise(Jeu game, String nom) { + int rd = random.nextInt(Jeu.PRISE_MAX) + 1; + int nb = game.getNombreAllumettes(); + if (rd > nb) { + return nb; + } else { + return rd; + } + } + +} diff --git a/allumettes/OperationInterditeException.java b/allumettes/OperationInterditeException.java new file mode 100644 index 0000000..c298dfb --- /dev/null +++ b/allumettes/OperationInterditeException.java @@ -0,0 +1,5 @@ +package allumettes; + +public class OperationInterditeException extends RuntimeException { + +} diff --git a/allumettes/Partie.java b/allumettes/Partie.java new file mode 100644 index 0000000..8d46260 --- /dev/null +++ b/allumettes/Partie.java @@ -0,0 +1,48 @@ +package allumettes; + +public class Partie implements Jeu { + + // Attributs + + /** variable stockant le nombre d'allumettes encore en jeu */ + private int nbAllumettes; + + // Constructeurs + + /** Constructeur par défaut de la classe Partie. */ + public Partie() { + this.nbAllumettes = 13; + } + + /** + * Constructeur de la classe Partie. + * + * @param nbAllumettes nombre d'allumettes initiales ( > 0 ) + */ + public Partie(int nbAllumettes) { + if (nbAllumettes < 1) { + throw new ConfigurationException("Nombre d'allumettes initiales incorrectes ( < 1 )"); + } else { + this.nbAllumettes = nbAllumettes; + } + } + + // GETs + + @Override + public int getNombreAllumettes() { + return this.nbAllumettes; + } + + // Méthodes + + @Override + public void retirer(int nbPrises) throws CoupInvalideException { + if (nbPrises < 1) { + throw new CoupInvalideException(nbPrises, "< 1"); + } else { + this.nbAllumettes -= nbPrises; + } + } + +} diff --git a/allumettes/PartieSafe.java b/allumettes/PartieSafe.java new file mode 100644 index 0000000..14533c5 --- /dev/null +++ b/allumettes/PartieSafe.java @@ -0,0 +1,32 @@ +package allumettes; + +public class PartieSafe implements Jeu { + + // ATTRIBUTS + + Jeu vraiGame; + + // CONSTRUCTEUR + + /** + * Constructeur d'une partie dont le nombre d'allumettes ne peut être modifié. + * + * @param game Jeu que l'on utilise pour créer le proxy + */ + public PartieSafe(Jeu game) { + this.vraiGame = game; + } + + // MÉTHODES + + @Override + public void retirer(int nbPrises) { + throw new OperationInterditeException(); + } + + @Override + public int getNombreAllumettes() { + return vraiGame.getNombreAllumettes(); + } + +} diff --git a/allumettes/Rapide.java b/allumettes/Rapide.java new file mode 100644 index 0000000..9b8c6fb --- /dev/null +++ b/allumettes/Rapide.java @@ -0,0 +1,15 @@ +package allumettes; + +public class Rapide implements Strategie { + + @Override + public int nbPrise(Jeu game, String nom) { + int nb = game.getNombreAllumettes(); + if (nb > Jeu.PRISE_MAX) { + return Jeu.PRISE_MAX; + } else { + return nb; + } + } + +} diff --git a/allumettes/Strategie.java b/allumettes/Strategie.java new file mode 100644 index 0000000..030deb1 --- /dev/null +++ b/allumettes/Strategie.java @@ -0,0 +1,14 @@ +package allumettes; + +public interface Strategie { + + /** + * Renvoyer le nombre d'allumettes que le joueur doit prendre. + * + * @param nb nombre d'allumettes encore en jeu + * @param nom nom du joueur + * @return nombre d'allumettes à prendre + */ + int nbPrise(Jeu game, String nom) throws CoupInvalideException; + +} diff --git a/allumettes/TestArbitre.java b/allumettes/TestArbitre.java new file mode 100644 index 0000000..74d66af --- /dev/null +++ b/allumettes/TestArbitre.java @@ -0,0 +1,41 @@ +package allumettes; + +import org.junit.*; + +public class TestArbitre { + + Partie game = new Partie(100); + + Joueur j1 = new Joueur("j1", new Rapide()); + Joueur j2 = new Joueur("j2", new Lente()); + Joueur j3 = new Joueur("j3", new Tricheur()); + + @Test + public void TestConstructeur() { + Arbitre a1 = new Arbitre(j1, j2); + Arbitre a2 = new Arbitre(j1, j2); + a1.setConfiant(true); + a2.setConfiant(false); + } + + @Test + public void TestArbitrer() { + Arbitre a1 = new Arbitre(j1, j2); + a1.setConfiant(false); + a1.arbitrer(game); + } + + @Test(expected = OperationInterditeException.class) + public void TestArbitrerTricheur() { + Arbitre a1 = new Arbitre(j3, j2); + a1.arbitrer(game); + } + + @Test + public void TestArbitrerTricheurConfiant() { + Arbitre a1 = new Arbitre(j3, j2); + a1.setConfiant(true); + a1.arbitrer(game); + } + +} diff --git a/allumettes/TestLente.java b/allumettes/TestLente.java new file mode 100644 index 0000000..5278708 --- /dev/null +++ b/allumettes/TestLente.java @@ -0,0 +1,26 @@ +package allumettes; + +import static org.junit.Assert.assertEquals; + +import java.util.Random; + +import org.junit.*; + +public class TestLente { + + Strategie strat = new Lente(); + + @Test + public void TestRetirer() throws CoupInvalideException { + + Random rd = new Random(); + + for (int i = 0; i < 100; i++) { + Partie game = new Partie(rd.nextInt(100) + 1); + int nb = strat.nbPrise(game, "nom"); + assertEquals(nb, 1); + } + + } + +} diff --git a/allumettes/TestPartie.java b/allumettes/TestPartie.java new file mode 100644 index 0000000..94ed463 --- /dev/null +++ b/allumettes/TestPartie.java @@ -0,0 +1,48 @@ +package allumettes; + +import org.junit.*; +import static org.junit.Assert.assertEquals; + +public class TestPartie { + + @Test(expected = ConfigurationException.class) + public void TestConstructeurNegatif() { + new Partie(-1); + } + + @Test(expected = ConfigurationException.class) + public void TestConstructeurNul() { + new Partie(0); + } + + @Test + public void TestConstructeurPositif() { + new Partie(1); + } + + @Test(expected = CoupInvalideException.class) + public void TestRetirerNegatif() throws CoupInvalideException { + new Partie(1).retirer(-1); + } + + @Test(expected = CoupInvalideException.class) + public void TestRetirerNul() throws CoupInvalideException { + new Partie(1).retirer(0); + } + + @Test + public void TestRetirerPositif() throws CoupInvalideException { + Partie game = new Partie(20); + game.retirer(1); + assertEquals(game.getNombreAllumettes(), 19); + game.retirer(2); + assertEquals(game.getNombreAllumettes(), 17); + game.retirer(3); + assertEquals(game.getNombreAllumettes(), 14); + game.retirer(4); + assertEquals(game.getNombreAllumettes(), 10); + game.retirer(10); + assertEquals(game.getNombreAllumettes(), 0); + } + +} diff --git a/allumettes/TestPartieSafe.java b/allumettes/TestPartieSafe.java new file mode 100644 index 0000000..2be9e31 --- /dev/null +++ b/allumettes/TestPartieSafe.java @@ -0,0 +1,24 @@ +package allumettes; + +import org.junit.*; + +public class TestPartieSafe { + + PartieSafe game = new PartieSafe(new Partie(10)); + + @Test(expected = OperationInterditeException.class) + public void TestRetirerNegatif() throws CoupInvalideException { + game.retirer(-1); + } + + @Test(expected = OperationInterditeException.class) + public void TestRetirerNul() throws CoupInvalideException { + game.retirer(0); + } + + @Test(expected = OperationInterditeException.class) + public void TestRetirerPositif() throws CoupInvalideException { + game.retirer(1); + } + +} diff --git a/allumettes/TestRapide.java b/allumettes/TestRapide.java new file mode 100644 index 0000000..1f95a5d --- /dev/null +++ b/allumettes/TestRapide.java @@ -0,0 +1,54 @@ +package allumettes; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import java.util.Random; + +import org.junit.*; + +public class TestRapide { + + Strategie strat = new Rapide(); + + @Test + public void TestSuperieur() throws CoupInvalideException { + + Random rd = new Random(); + + for (int i = 0; i < 100; i++) { + Partie game = new Partie(rd.nextInt(1000) + Jeu.PRISE_MAX); + int nb = strat.nbPrise(game, "nom"); + assertEquals(nb, Jeu.PRISE_MAX); + } + } + + @Test + public void TestInferieur() throws CoupInvalideException { + + for (int i = 1; i < Jeu.PRISE_MAX; i++) { + Partie game = new Partie(i); + int nb = strat.nbPrise(game, "nom"); + assertNotEquals(nb, Jeu.PRISE_MAX); + assertEquals(nb, i); + } + + } + + @Test + public void TestArbitre() throws CoupInvalideException { + + Joueur j1 = new Joueur("j1", new Rapide()); + Joueur j2 = new Joueur("j2", new Rapide()); + Arbitre arbitre = new Arbitre(j1, j2); + + for (int i = 1; i < 100; i++) { + Partie game = new Partie(i); + while (game.getNombreAllumettes() > 0) { + arbitre.arbitrer(game); + } + } + + } + +} diff --git a/allumettes/Tricheur.java b/allumettes/Tricheur.java new file mode 100644 index 0000000..eed9910 --- /dev/null +++ b/allumettes/Tricheur.java @@ -0,0 +1,13 @@ +package allumettes; + +public class Tricheur implements Strategie { + + @Override + public int nbPrise(Jeu game, String nom) throws CoupInvalideException { + System.out.println("[Je triche...]"); + game.retirer(game.getNombreAllumettes() - 2); + System.out.format("[Allumettes restantes : %d]\n", game.getNombreAllumettes()); + return 1; + } + +} diff --git a/testeur.sh b/testeur.sh new file mode 100644 index 0000000..a46d121 --- /dev/null +++ b/testeur.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +# ------------------------------------------------------- +# Programme de test en boîte noire pour les 13 allumettes +# ------------------------------------------------------- + +usage() { + echo "Erreur : $1" + echo + echo "Usage : sh testeur.sh [-d dossier] fichier.run..." + exit 1 +} + +warning() { + echo "**** $1" 1>&2 +} + +mainClass=allumettes.Jouer +mainFile=`echo $mainClass | tr . /`.java + +# Déterminer si l'option -enconding latin1 est nécessaire +javacOpt= +if file -i $mainFile | grep iso-8859 > /dev/null 2>&1 ; then + echo "Le fichier $mainClass est en latin1. Utilisation de l'option -encoding latin1 de javac" + javacOpt="-encoding latin1" +fi + +# Traiter les arguments de la ligne de commande +# | Un seul argument possible -d pour déterminer le dossier dans lequel +# | mettre les résutlats du test (.computed et .diff) +if [ "$1" = "-d" ] ; then + shift + testdiropt="$1" + shift + [ -d "$testdiropt" ] || mkdir "$testdiropt" + if [ ! -d "$testdiropt" ] ; then + usage "$testdiropt n'est pas un dossier" + elif [ ! -w "$testdiropt" ] ; then + usage "impossible d'écrire dans $testdiropt" + fi +fi + +if [ ! -z "$testdiropt" ] ; then + echo "Les résultats seront dans $testdiropt" +fi + + +# Jouer les tests +if javac $javacOpt $mainFile ; then + while [ "$1" ] ; do + test="$1" + shift + + if [ ! -f "$test" ] ; then + warning "Fichier de test inexitant : $test" + continue + elif [ ! -r "$test" ] ; then + warning "Fichier de test interdit en lecture : $test" + continue + fi + + testName=$(basename $test .run) + outputDir=${testdiropt:-$(dirname $test)} + + if [ "$testName" = "$(basename $test)" ] ; then + warning "Test ignoré (le suffixe doit être .run) : $test" + continue + fi + + + # Définir les noms de fichiers utilisés + computed=$outputDir/$testName.computed + expected=${test%.run}.expected + diff=$outputDir/$testName.diff + + + if [ ! -r "$expected" ] ; then + warning "Fichier de résultat absent ou interdit en lecture : $expected" + continue + fi + + # Lancer le test + sh $test > $computed 2>&1 + + # Transformer le résultat en utf8 (si nécessaire) + if file -i $computed | grep iso-8859 > /dev/null 2>&1 ; then + echo "Résultat en latin1. Je transforme en utf8." + recode latin1..utf8 $computed + fi + + # Afficher le résultat + echo -n "$testName : " + if diff -Bbw $computed $expected > $diff 2>&1 ; then + echo "ok" + else + echo "ERREUR" + cat $diff + echo "" + fi + done +else + echo "Erreur de compilation !" +fi + diff --git a/to-1sn-2020-pr-02-sujet.pdf b/to-1sn-2020-pr-02-sujet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d0e2efc36d80fe8d0fae2d1d15c2939f44c0bdf7 GIT binary patch literal 85430 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≫|44Z(DgBwE1&PIyin@76fYDrv)(dPJD^bk5tWd* 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 P#N5J|OI6j?-;E0ZV^8Rs literal 0 HcmV?d00001