diff --git a/src/model/Ia/Action.java b/src/model/Ia/Action.java index 6d6a967..c465025 100644 --- a/src/model/Ia/Action.java +++ b/src/model/Ia/Action.java @@ -22,24 +22,41 @@ public class Action{ private String val ; - // constructeurs + + /** + * Constructeur + */ public Action(){ } + /** + * Constructeur + * @param act + */ public Action(String act){ val=act; } // getteurs et setteurs + + /** + * Getter + * @return + */ public String getAction(){ return(val); } + + /** + * Setter + * @param s + */ public void setAction(String s){ val=s; } - public void affiche(){ - System.out.println(val); - } + + + @Override public String toString(){ return val; } diff --git a/src/model/Ia/Etat.java b/src/model/Ia/Etat.java index 710b409..1f3995a 100644 --- a/src/model/Ia/Etat.java +++ b/src/model/Ia/Etat.java @@ -30,7 +30,17 @@ public class Etat { private int scoreMax; private int scoreGrid; - public Etat() {} + /** + * Constructeur + */ + public Etat() { + } + + /** + * Constructeur + * @param ensemble + * @param deplacement + */ public Etat(Grids ensemble, String deplacement) { this.ensemble = new Grids(ensemble); this.deplacement = deplacement; @@ -38,7 +48,10 @@ public Etat(Grids ensemble, String deplacement) { this.scoreGrid = ensemble.scoreTotalGrille(); } - + /** + * Fait une copie d'un etat existant + * @param ee + */ public Etat(Etat ee) { this.ensemble = new Grids(ee.getGrids()); this.deplacement = ee.getDeplacement(); @@ -46,157 +59,197 @@ public Etat(Etat ee) { this.scoreGrid = ee.getScoreGrid(); } - - /*public String toString() { - return "Ensemble grille : " + this.ensemble + " deplacmeent : " + this.deplacement + " score Max : " + this.scoreMax + " score Grid : " + this.scoreGrid; - }*/ - - - //getteurs et setteurs + /** + * Getter + * @return + */ public Grids getGrids() { return this.ensemble; } - + /** + * Getter + * @return + */ public String getDeplacement() { return this.deplacement; } - + /** + * Getter + * @return + */ public int getScoreMax() { return this.scoreMax; } - - private int getScoreGrid() { + /** + * Getter + * @return + */ + public int getScoreGrid() { return this.scoreGrid; } - + /** + * Setter + * @param ensemble + */ public void setEnsembleGrile(Grids ensemble) { this.ensemble = ensemble; } - + /** + * Setter + * @param dep + */ public void setDeplacement(String dep) { this.deplacement = dep; } - - public void setScoreMax(int _scoreMax) { - this.scoreMax = _scoreMax; + /** + * Setter + * @param scoreMax + */ + public void setScoreMax(int scoreMax) { + this.scoreMax = scoreMax; } - //méthodes + + /** + * Retoutne vrai si la valeur but est atteinte + * @param pb + * @return + */ public boolean estbut(Probleme pb) { //teste si l'état est égal à l'état but du problème return (pb.getGrids().best() == GOAL); } - + /** + * Retourne vrai si l'etat passe en parametre est egal a celui qui appelle la methode + * @param e + * @return + */ public boolean estegal(Etat e) { return this.ensemble == e.getGrids() && this.deplacement.equals(e.getDeplacement()); } - - - /*public void affiche() { - System.out.println(this.ensemble + " " + this.deplacement + " " + this.scoreMax); - }*/ - - - // applique une action a à l'état courant. Le probleme est passé en paramètre pour connaitre la contenance maximale de chaque cruche + /** + * Applique l'action passe en parametre + * @param a + * @param grids + * @return + */ public Etat AppliqueAction(Action a, Grids grids) { Etat e; - if (a.getAction().equals("Deplacement droite")) { - e = new Etat(grids, "d"); - if (e.valide("d")) { - e.getGrids().move(RIGHT); - e = new Etat(this.ensemble, "d"); - } else { - e = null; - } - } else if (a.getAction().equals("Deplacement gauche")) { - e = new Etat(grids, "q"); - if (e.valide("q")) { - e.getGrids().move(LEFT); - e = new Etat(this.ensemble, "q"); - } else { - e = null; - } - } else if (a.getAction().equals("Deplacement haut")) { - e = new Etat(grids, "z"); - if (e.valide("z")) { - e.getGrids().move(UP); - e = new Etat(this.ensemble, "z"); - } else { - e = null; - } - } else if (a.getAction().equals("Deplacement bas")) { - e = new Etat(grids, "s"); - if (e.valide("s")) { - e.getGrids().move(DOWN); - e = new Etat(this.ensemble, "s"); - } else { - e = null; - } - } else if (a.getAction().equals("Deplacement etages superieurs")) { - e = new Etat(grids, "r"); - if (e.valide("r")) { - e.getGrids().move(FRONT); - e = new Etat(this.ensemble, "r"); - } else { - e = null; - } - } else { - e = new Etat(grids, "f"); - if (e.valide("f")) { - e.getGrids().move(BACK); - e = new Etat(this.ensemble, "f"); - } else { - e = null; - } + switch (a.getAction()) { + case "Deplacement droite": + e = new Etat(grids, "d"); + if (e.valide("d")) { + e.getGrids().move(RIGHT); + e = new Etat(this.ensemble, "d"); + } else { + e = null; + } + break; + case "Deplacement gauche": + e = new Etat(grids, "q"); + if (e.valide("q")) { + e.getGrids().move(LEFT); + e = new Etat(this.ensemble, "q"); + } else { + e = null; + } + break; + case "Deplacement haut": + e = new Etat(grids, "z"); + if (e.valide("z")) { + e.getGrids().move(UP); + e = new Etat(this.ensemble, "z"); + } else { + e = null; + } + break; + case "Deplacement bas": + e = new Etat(grids, "s"); + if (e.valide("s")) { + e.getGrids().move(DOWN); + e = new Etat(this.ensemble, "s"); + } else { + e = null; + } + break; + case "Deplacement etages superieurs": + e = new Etat(grids, "r"); + if (e.valide("r")) { + e.getGrids().move(FRONT); + e = new Etat(this.ensemble, "r"); + } else { + e = null; + } + break; + default: + e = new Etat(grids, "f"); + if (e.valide("f")) { + e.getGrids().move(BACK); + e = new Etat(this.ensemble, "f"); + } else { + e = null; + } + break; } return (e); } - - private boolean valide(String direction) { + /** + * Retourne vrai si la direction passe en parametre est possible a executer + * @param direction + * @return + */ + public boolean valide(String direction) { boolean valide = false; int indice = 0; - if (direction.equals("d")) { - while (!valide && indice < this.ensemble.getGrids().length) { - valide = this.ensemble.right(this.ensemble.getGrids()[indice]); - indice++; - } - } else if (direction.equals("q")) { - while (!valide && indice < this.ensemble.getGrids().length) { - valide = this.ensemble.left(this.ensemble.getGrids()[indice]); - indice++; - } - } else if (direction.equals("z")) { - while (!valide && indice < this.ensemble.getGrids().length) { - valide = this.ensemble.up(this.ensemble.getGrids()[indice]); - indice++; - } - } else if (direction.equals("s")) { - while (!valide && indice < this.ensemble.getGrids().length) { - valide = this.ensemble.down(this.ensemble.getGrids()[indice]); - indice++; - } - } else if (direction.equals("r")) { - this.ensemble.reorganization(this.ensemble.getGrids()); - while (!valide && indice < this.ensemble.getGrids().length) { - valide = this.ensemble.down(this.ensemble.getGrids()[indice]); - indice++; - } - } else { - this.ensemble.reorganization(this.ensemble.getGrids()); - while (!valide && indice < this.ensemble.getGrids().length) { - valide = this.ensemble.up(this.ensemble.getGrids()[indice]); - indice++; - } + switch (direction) { + case "d": + while (!valide && indice < this.ensemble.getGrids().length) { + valide = this.ensemble.right(this.ensemble.getGrids()[indice]); + indice++; + } + break; + case "q": + while (!valide && indice < this.ensemble.getGrids().length) { + valide = this.ensemble.left(this.ensemble.getGrids()[indice]); + indice++; + } + break; + case "z": + while (!valide && indice < this.ensemble.getGrids().length) { + valide = this.ensemble.up(this.ensemble.getGrids()[indice]); + indice++; + } + break; + case "s": + while (!valide && indice < this.ensemble.getGrids().length) { + valide = this.ensemble.down(this.ensemble.getGrids()[indice]); + indice++; + } + break; + case "r": + this.ensemble.reorganization(this.ensemble.getGrids()); + while (!valide && indice < this.ensemble.getGrids().length) { + valide = this.ensemble.down(this.ensemble.getGrids()[indice]); + indice++; + } + break; + default: + this.ensemble.reorganization(this.ensemble.getGrids()); + while (!valide && indice < this.ensemble.getGrids().length) { + valide = this.ensemble.up(this.ensemble.getGrids()[indice]); + indice++; + } + break; } return valide; } -} \ No newline at end of file +} diff --git a/src/model/Ia/IaController.java b/src/model/Ia/IaController.java deleted file mode 100644 index 0e53ff8..0000000 --- a/src/model/Ia/IaController.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 07/12/2019 - * - * Auteurs : - * - Behm Guillaume - * - Claudel Adrien - * - Richez Guillaume - * - Sevillano Robin - */ - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package model.Ia; - -import recommender.IaContext; - -/** - * - * @author utilisateur - */ -class IaController { - - public IaController() { - IaContext rc = new IaContext(); - } -} diff --git a/src/model/Ia/Noeud.java b/src/model/Ia/Noeud.java index fa012dd..a8a8708 100644 --- a/src/model/Ia/Noeud.java +++ b/src/model/Ia/Noeud.java @@ -17,50 +17,72 @@ import java.util.ArrayList; +/** + * + * @author utilisateur + */ public class Noeud { private Etat e; private final ArrayList sol; - //constructeurs - private Noeud() { + + /** + * Constructeur + */ + public Noeud() { this.e = new Etat(); this.sol = null; } + /** + * Fait une copie d'un noeud deja existant + * @param ee + * @param aa + */ public Noeud(Etat ee, ArrayList aa) { this.e = new Etat(ee); - this.sol = new ArrayList(); + this.sol = new ArrayList<>(); if (aa != null) { this.sol.addAll(aa); } } - //getteurs et setteurs + + /** + * Getter + * @return + */ public Etat getetat() { return (this.e); } + /** + * Getter + * @return + */ public ArrayList getlisteaction() { return (this.sol); } - private void setetat(Etat ee) { + /** + * Setter + * @param ee + */ + public void setetat(Etat ee) { this.e = ee; } - //méthodes + + /** + * Ajoute une action dans les solutions + * @param aa + */ public void ajoutaction(Action aa) { this.sol.add(aa); } - public Noeud copy() { // renvoie une copie du noeud - Noeud n = new Noeud(); - n.setetat(this.getetat()); - n.sol.addAll(sol); - return (n); - } @Override public String toString() { diff --git a/src/model/Ia/Probleme.java b/src/model/Ia/Probleme.java index e42dd21..b980854 100644 --- a/src/model/Ia/Probleme.java +++ b/src/model/Ia/Probleme.java @@ -28,24 +28,40 @@ public class Probleme { private final Grids grids; private final ArrayList listeactions; - //constructeur + + /** + * Constructeur + * @param grids + */ public Probleme(Grids grids) { this.listeactions = setactions(); this.grids = grids; } + /** + * Getter + * @return + */ public Grids getGrids() { return grids; } + /** + * Getter + * @return + */ public ArrayList getlisteactions() { return (listeactions); } - //initialisation - private ArrayList setactions() { - ArrayList la = new ArrayList(); + + /** + * Ajoute toutes les actions possibles d'effectuer + * @return + */ + public ArrayList setactions() { + ArrayList la = new ArrayList<>(); Action aa; aa = new Action(); aa.setAction("Deplacement droite"); diff --git a/src/recommender/IaContext.java b/src/recommender/IaContext.java index 31fb6c0..06b41e6 100644 --- a/src/recommender/IaContext.java +++ b/src/recommender/IaContext.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 27/11/2019 + * Copyright (c) 07/12/2019 * * Auteurs : * - Behm Guillaume @@ -28,11 +28,14 @@ */ public class IaContext { - private static String strategyName; + public static String strategyName; private IaStrategies strategy; - private final ArrayList listStrategy; - private final ArrayList listNameStrategy; + private ArrayList listStrategy; + private ArrayList listNameStrategy; + /** + * Constructeur + */ public IaContext() { this.listStrategy = new ArrayList<>(); this.listNameStrategy = new ArrayList<>(); @@ -42,7 +45,9 @@ public IaContext() { } /** - * Adds a RecommenderStrategy and a String in the good list. + * Ajoute toutes les IA possibles dans deux listes. Une pour le nom de classe et l'autre pour le nom de l'IA + * @param classNameStrategy + * @param nameStrategy */ private void addListInit(IaStrategies classNameStrategy, String nameStrategy) { this.listStrategy.add(classNameStrategy); @@ -53,20 +58,18 @@ private String ia(Grids grids, int profondeurMax) { return this.strategy.ia(grids, profondeurMax); } - /** - * Changes the name of the strategy and calls getOneRecommendation of the right strategy. - * + /** + * Change le nom de la strategie et appelle la methode ia de la bonne classe * @param iaStrategy * @param grids * @param profondeurMax - * * @return Result of getOneRecommendation. */ public String setStrategyIa(String iaStrategy, Grids grids, int profondeurMax) { try { this.strategy = listStrategy.get(listNameStrategy.indexOf(iaStrategy)); - } catch (Exception ex) { // if the stratefy is not in the list of strategy - this.strategy = listStrategy.get(listNameStrategy.indexOf("Random")); // find the default strategy + } catch (Exception ex) { // Si la strategie entree en parametre n'a pas ete trouve + this.strategy = listStrategy.get(listNameStrategy.indexOf("Random")); // Strategie par default } strategyName = iaStrategy; return this.ia(grids, profondeurMax); diff --git a/src/recommender/strategies/IaScoreMax.java b/src/recommender/strategies/IaScoreMax.java index 0afa3b9..765f4e1 100644 --- a/src/recommender/strategies/IaScoreMax.java +++ b/src/recommender/strategies/IaScoreMax.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 27/11/2019 + * Copyright (c) 07/12/2019 * * Auteurs : * - Behm Guillaume @@ -15,7 +15,11 @@ */ package recommender.strategies; -import model.*; +import model.Grids; +import model.Ia.Action; +import model.Ia.Etat; +import model.Ia.Noeud; +import model.Ia.Probleme; import java.util.ArrayList; diff --git a/src/recommender/strategies/IaStrategies.java b/src/recommender/strategies/IaStrategies.java index 09095ab..0025690 100644 --- a/src/recommender/strategies/IaStrategies.java +++ b/src/recommender/strategies/IaStrategies.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 27/11/2019 + * Copyright (c) 07/12/2019 * * Auteurs : * - Behm Guillaume @@ -23,5 +23,11 @@ */ public interface IaStrategies { + /** + * Retourne le deplacement effectue de l'ia choisi + * @param grids + * @param profondeurMax + * @return + */ String ia(Grids grids, int profondeurMax); }