Correction exercice 4
Décompressez l’archive fournie ici
package rushhour.abstraction;
import java.util.ArrayList;
import java.util.List;
public class VehiculeCases implements IVehicule {
// VARIABLES D'INSTANCES
private List<Case> cases; // les cases occupees par le vehicule, de la
// case la plus en haut a gauche a la case la plus en bas a droite.
private int couleur; // la couleur exprimee au travers de la teinte.
private String inscription; // l'inscription figurant sur le vehicule
/**
* Initialise this de sorte que lg soit le nombre de cases occupees par
* le vehicule designe par this,
* o soit son orientation ( HORIZONTALE ou VERTICALE, constantes entieres definies ci-dessus),
* c soit l'index de la plus petit colonne qu'il occupe,
* l soit l'index de la plus petit ligne qu'il occupe,
* coul soit l'entier designant sa teinte,
* et que s soit son inscription
* @param lg
* @param o
* @param c
* @param l
* @param coul
* @param s
*/
public VehiculeCases(int lg, boolean o, Case hg, int coul, String s) {
this.cases=new ArrayList<Case>();
if (o==IVehicule.HORIZONTALE) {
for (int col = hg.getCol(); col<hg.getCol()+lg; col++) {
this.cases.add(new Case(col, hg.getLig()));
}
} else {
for (int lig = hg.getLig(); lig<hg.getLig()+lg; lig++) {
this.cases.add(new Case(hg.getCol(), lig));
}
}
this.couleur = coul;
this.inscription = s;
}
/**
* Retourne le nombre de cases occupees par le vehicule
* @return le nombre de cases occupees par le vehicule
*/
public int getLongueur() {
return this.cases.size();
}
/**
* Retourne l'orientation du vehicule (HORIZONTALE ou VERTICALE)
* @return l'orientation du vehicule (HORIZONTALE ou VERTICALE)
*/
public boolean getOrientation() {
if (this.cases.get(0).getCol()==this.cases.get(1).getCol()) {
return IVehicule.VERTICALE;
} else {
return IVehicule.HORIZONTALE;
}
}
/**
* Retourne la liste des cases occupées par le vehicule en allant de la case la plus en haut a gauche occupee a la case la plus en bas a droite occupee.
* @return la liste des cases occupees par le vehicule en allant de la case la plus en haut a gauche occupee a la case la plus en bas a droite occupee.
*/
public List<Case> getCases() {
return this.cases;
}
/**
* Retourne la teinte du vehicule
* @return la teinte du vehicule
*/
public int getCouleur() {
return this.couleur;
}
/**
* Retourne l'inscription du vehicule
* @return l'inscription du vehicule
*/
public String getInscription() {
return this.inscription;
}
/**
* Modifie le vehicule de sorte que la case la plus en haut a gauche qu'il occupe soit c
* Les autres caracteristiques (orientation, longueur, couleur et description) ne sont pas modifiees.
* @param c, une case de l'aire de jeu
*/
public void deplacerEn(Case c) {
int deltaC = c.getCol()-this.cases.get(0).getCol();
int deltaL = c.getLig()-this.cases.get(0).getLig();
for (Case ca : this.cases) {
ca.setCol(ca.getCol()+deltaC);
ca.setLig(ca.getLig()+deltaL);
}
}
/**
* Retourne true si le vehicule occupe (entre autres) la case c.
* @param c, une case de l'aire de jeu
* @return true si le vehicule occupe (entre autres) la case c.
*/
public boolean occupe(Case c) {
return this.cases.contains(c);
}
}