Skip to content

Commit

Permalink
Document & Tweak the AI sources.
Browse files Browse the repository at this point in the history
  • Loading branch information
SevillanoRobin authored and Prometheos2 committed Dec 7, 2019
1 parent cf6dea4 commit 295d433
Show file tree
Hide file tree
Showing 8 changed files with 266 additions and 174 deletions.
25 changes: 21 additions & 4 deletions src/model/Ia/Action.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
275 changes: 164 additions & 111 deletions src/model/Ia/Etat.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,173 +30,226 @@ 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;
this.scoreMax = ensemble.best();
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();
this.scoreMax = ee.getScoreMax();
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;
}

}
}
Loading

0 comments on commit 295d433

Please sign in to comment.