Commit 3d50573a authored by Aroubate Hamza's avatar Aroubate Hamza
Browse files

Tp3

parent 71c3bb5f
......@@ -6,202 +6,201 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
public class ClassMain {
public static void main (String[] args){
try{
System.out.println("############");
System.out.println("##TestMain##");
System.out.println("############");
System.out.println("############");
System.out.println("##TestMain##");
System.out.println("############");
System.out.println("Test creation monde");
System.out.println("Test creation monde");
Monde monde = new Monde("nouveauMonde");
System.out.println(monde.toString());
Monde monde = new Monde("nouveauMonde");
System.out.println(monde.toString());
System.out.println("############");
System.out.println("############");
Entite entite1 = new Entite("nom1", monde){};
Entite entite2 = new Entite("nom2", monde){};
System.out.println("Test creation et ajout de 2 entites");
Entite entite1 = new Entite("nom1", monde){};
Entite entite2 = new Entite("nom2", monde){};
System.out.println("Test creation et ajout de 2 entites");
System.out.println(entite1.toString());
System.out.println(entite2.toString());
System.out.println(monde.toString());
System.out.println("############");
System.out.println(entite1.toString());
System.out.println(entite2.toString());
System.out.println(monde.toString());
System.out.println("############");
System.out.println("Test entite equals & hashcode");
System.out.println("Test entite equals & hashcode");
System.out.println("entite1 = entite1 ? " + entite1.equals(entite1));
System.out.println("entite1 = entite2 ? " + entite1.equals(entite2));
System.out.println("hashcode entite1: " + entite1.hashCode());
System.out.println("hashcode entite2: " + entite2.hashCode());
System.out.println("############");
System.out.println("entite1 = entite1 ? " + entite1.equals(entite1));
System.out.println("entite1 = entite2 ? " + entite1.equals(entite2));
System.out.println("hashcode entite1: " + entite1.hashCode());
System.out.println("hashcode entite2: " + entite2.hashCode());
System.out.println("############");
System.out.println("Test Monde.getEntite");
System.out.println("Test Monde.getEntite");
Entite entite3 = monde.getEntite("nom1");
System.out.println(entite3.toString());
System.out.println("Entite trouve == entite1 ? " + entite3.equals(entite1));
System.out.println("hashcode entite1: " + entite1.hashCode());
System.out.println("hashcode trouve: " + entite3.hashCode());
Entite entite3 = monde.getEntite("nom1");
System.out.println(entite3.toString());
System.out.println("Entite trouve == entite1 ? " + entite3.equals(entite1));
System.out.println("hashcode entite1: " + entite1.hashCode());
System.out.println("hashcode trouve: " + entite3.hashCode());
System.out.println("############");
System.out.println("############");
System.out.println("Test Valeurs Etat");
for (Etat c : Etat.values()){ //cf javadoc
System.out.println(c);
}
System.out.println("Test Valeurs Etat");
for (Etat c : Etat.values()){ //cf javadoc
System.out.println(c);
}
System.out.println("############");
System.out.println("############");
System.out.println("Test Valeurs EtatDuJeu");
System.out.println("Test Valeurs EtatDuJeu");
for (EtatDuJeu c : EtatDuJeu.values()){ //cf javadoc
System.out.println(c);
}
for (EtatDuJeu c : EtatDuJeu.values()){ //cf javadoc
System.out.println(c);
}
System.out.println("############");
System.out.println("############");
System.out.println("Test Objet");
System.out.println("Test Objet");
Objet objet = new Objet("objet 1", monde){
public boolean estDeplacable(){
return false;
}
};
System.out.println("deplacable ? " + objet.estDeplacable());
Objet objet = new Objet("objet 1", monde){
public boolean estDeplacable(){
return false;
}
};
System.out.println("deplacable ? " + objet.estDeplacable());
System.out.println("############");
System.out.println("############");
System.out.println("Test Pied De Biche");
System.out.println("Test Pied De Biche");
PiedDeBiche pdb = new PiedDeBiche("Super Pied de Biche", monde);
System.out.println("deplacable ? " + pdb.estDeplacable());
PiedDeBiche pdb = new PiedDeBiche("Super Pied de Biche", monde);
System.out.println("deplacable ? " + pdb.estDeplacable());
System.out.println("############");
System.out.println("############");
System.out.println("Test Element Structurel");
System.out.println("Test Element Structurel");
PiedDeBiche es = new PiedDeBiche("Element Structurel", monde);
System.out.println("deplacable ? " + es.estDeplacable());
PiedDeBiche es = new PiedDeBiche("Element Structurel", monde);
System.out.println("deplacable ? " + es.estDeplacable());
System.out.println("############");
System.out.println("############");
System.out.println("Test deposer Piece");
System.out.println("Test deposer Piece");
PiedDeBiche pb = new PiedDeBiche("mon pied de biche prefere",monde);
Objet o = new Objet("gitare", monde){
public boolean estDeplacable(){
return true;
};
PiedDeBiche pb = new PiedDeBiche("mon pied de biche prefere",monde);
Objet o = new Objet("gitare", monde){
public boolean estDeplacable(){
return true;
};
Piece pc = new Piece(monde,"chambre");
pc.deposer(o);
pc.deposer(pb);
System.out.println("Piece : " + pc.toString());
};
Piece pc = new Piece(monde,"chambre");
pc.deposer(o);
pc.deposer(pb);
System.out.println("Piece : " + pc.toString());
System.out.println("############");
System.out.println("############");
System.out.println("Test Retirer Piece");
System.out.println("Test Retirer Piece");
Objet objetRetourne = pc.retirer(o);
System.out.println("identiques ?" + objetRetourne.equals(o));
System.out.println("Piece : " + pc.toString());
Objet objetRetourne = pc.retirer(o);
System.out.println("identiques ?" + objetRetourne.equals(o));
System.out.println("Piece : " + pc.toString());
objetRetourne = pc.retirer(pb.getNom());
System.out.println("identiques ?" + objetRetourne.equals(pb));
System.out.println("Piece : " + pc.toString());
objetRetourne = pc.retirer(pb.getNom());
System.out.println("identiques ?" + objetRetourne.equals(pb));
System.out.println("Piece : " + pc.toString());
System.out.println("############");
System.out.println("############");
System.out.println("Test Contient Objet");
System.out.println("Test Contient Objet");
pc.deposer(o);
System.out.println("Objet dans Pièce ? " + pc.contientObjet(o));
pc.retirer(o);
System.out.println("Objet dans Pièce ? " + pc.contientObjet(o.getNom()));
pc.deposer(o);
System.out.println("Objet dans Pièce ? " + pc.contientObjet(o));
pc.retirer(o);
System.out.println("Objet dans Pièce ? " + pc.contientObjet(o.getNom()));
System.out.println("############");
System.out.println("############");
System.out.println("Test Prendre Objet");
Vivant v = new Vivant("chambre", monde, 10, 9, pc, o ){};
Objet obj1 = new Objet("banane", monde){
public boolean estDeplacable(){
return true;
}
};
pc.deposer(obj1);
v.prendre(obj1);
System.out.println(v.toString());
pc.deposer(o);
v.prendre(o.getNom());
System.out.println(v.toString());
System.out.println("Test Prendre Objet");
System.out.println("############");
Vivant v = new Vivant("chambre", monde, 10, 9, pc, o ){};
Objet obj1 = new Objet("banane", monde){
public boolean estDeplacable(){
return true;
}
};
pc.deposer(obj1);
v.prendre(obj1);
System.out.println(v.toString());
pc.deposer(o);
v.prendre(o.getNom());
System.out.println(v.toString());
System.out.println("Test deposer Objet");
v.deposer(obj1);
System.out.println(pc.toString());
v.prendre(obj1);
System.out.println(pc.toString());
v.deposer(obj1.getNom());
System.out.println(pc.toString());
System.out.println("############");
System.out.println("############");
System.out.println("Test deposer Objet");
v.deposer(obj1);
System.out.println(pc.toString());
v.prendre(obj1);
System.out.println(pc.toString());
v.deposer(obj1.getNom());
System.out.println(pc.toString());
System.out.println("Test get Objet");
System.out.println("est identiques ? " + v.getObjet(o.getNom()).equals(o));
System.out.println("############");
System.out.println("############");
System.out.println("Test get Objet");
System.out.println("est identiques ? " + v.getObjet(o.getNom()).equals(o));
System.out.println("Test possede Objet");
System.out.println("il possede l'objet ? " + v.possede(o));
System.out.println("############");
System.out.println("############");
System.out.println("Test possede Objet");
System.out.println("il possede l'objet ? " + v.possede(o));
System.out.println("Test get pointvie");
System.out.println("PointVie = 10 ? : " + (v.getPointVie() == 10));
System.out.println("############");
System.out.println("############");
System.out.println("Test get pointvie");
System.out.println("PointVie = 10 ? : " + (v.getPointVie() == 10));
System.out.println("Test estMort");
System.out.println("est mort ? : " + (v.getPointVie() == 0));
System.out.println("############");
System.out.println("############");
System.out.println("Test estMort");
System.out.println("est mort ? : " + (v.getPointVie() == 0));
System.out.println("Test des Vivants dans Pièces");
System.out.println("############");
Vivant v1 = new Vivant("vivant", monde, 10, 9, pc, o ){};
Piece p = new Piece(monde,"salon");
p.entrer(v1);
System.out.println(p.toString());
p.sortir(v1);
System.out.println(p.toString());
System.out.println("Test des Vivants dans Pièces");
System.out.println("############");
Vivant v1 = new Vivant("vivant", monde, 10, 9, pc, o ){};
Piece p = new Piece(monde,"salon");
p.entrer(v1);
System.out.println(p.toString());
p.sortir(v1);
System.out.println(p.toString());
System.out.println("Test contient vivant");
p.entrer(v1);
System.out.println("il contient vivant ? " + p.contientVivant(v1));
System.out.println("############");
System.out.println("############");
System.out.println("Test contient vivant");
}
p.entrer(v1);
System.out.println("il contient vivant ? " + p.contientVivant(v1));
System.out.println("############");
catch(NomDEntiteDejaUtiliseDansLeMondeException e){
System.err.println(e);
}
......
......@@ -9,13 +9,27 @@ public class Monde {
private String nom;
private Entite[] tableauEntites = new Entite [0];
/**
* Constructeur de Monde
* @param nom nom du monde
*/
public Monde(String nom){
this.nom = nom;
}
/**
* GetNom Getter du nom du monde
* @return nom du monde
*/
public String getNom(){
return this.nom;
}
/**
* GetEntite cherche une entite par son nom
* @param nom nom de l'entite a rechercher
* @return Entite cherche
*/
public Entite getEntite(String nom){
boolean trouve = false;
int i = 0;
......@@ -32,6 +46,12 @@ public class Monde {
return null;
}
/**
* Ajouter ajoute une entite dans le monde
* @param nouvelleEntite l'entite a rechercher
* @throws NomDEntiteDejaUtiliseDansLeMondeException
* @throws EntiteDejaDansUnAutreMondeException
*/
public void ajouter(Entite nouvelleEntite)
throws NomDEntiteDejaUtiliseDansLeMondeException,
EntiteDejaDansUnAutreMondeException {
......@@ -53,6 +73,10 @@ public class Monde {
tableauEntites = tmp;
}
/**
* toString créer un String décrivant le monde
* @return le String de description
*/
public String toString(){
String resultat;
resultat = " Nom : "+ this.getNom() + ";\n";
......
......@@ -10,7 +10,13 @@ public abstract class Entite {
private String nom;
private Monde monde;
public Entite(String nom, Monde monde)throws NomDEntiteDejaUtiliseDansLeMondeException{
/**
* Constructeur de l'entite
* @param nom nom de l'entite
* @param monde monde de l'entite
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public Entite(String nom, Monde monde) throws NomDEntiteDejaUtiliseDansLeMondeException{
this.nom = nom;
if (monde.getEntite(nom) != null){
......@@ -23,12 +29,26 @@ public abstract class Entite {
}
/**
* getNom Getter du nom de l'entite
* @return nom de l'entite
*/
public String getNom(){
return this.nom;
}
/**
* getMonde Getter du monde de l'entite
* @return monde de l'entite
*/
public Monde getMonde(){
return this.monde;
}
/**
* equals Compare deux Object (!= Objet)
* @return un boolean true/false en fonction de la similarité
*/
public boolean equals(Object o){
if (o == null || o.getClass()!=this.getClass()){
return false;
......@@ -37,6 +57,10 @@ public abstract class Entite {
return nom.equals(e.nom) && monde.equals(e.monde);
}
/**
* toString créer un String décrivant l'entite
* @return le String de description
*/
public String toString(){
return "Nom : "+this.nom;
}
......
......@@ -9,11 +9,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
public abstract class Objet extends Entite{
/**
* Constructeur de l'objet
* @param nom nom de l'objet
* @param monde monde de l'objet
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public Objet(String nom, Monde monde)
throws NomDEntiteDejaUtiliseDansLeMondeException{
throws NomDEntiteDejaUtiliseDansLeMondeException{
super(nom,monde);
}
/**
* estDeplacable méthode a redéfinir pour chaque objet
* @return boolean indiquant si l'objet est deplacable ou non
*/
public abstract boolean estDeplacable();
......
......@@ -8,11 +8,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
public class PiedDeBiche extends Objet{
/**
* Constructeur de l'objet pied de biche
* @param monde monde de l'objet
* @throws EntiteDejaDansUnAutreMondeException
*/
public PiedDeBiche(String nom, Monde monde)
throws NomDEntiteDejaUtiliseDansLeMondeException{
throws NomDEntiteDejaUtiliseDansLeMondeException{
super(nom, monde);
}
/**
* estDeplacable redefinition de la méthode abstraite de Objet
* @return true pour deplacable, false sinon
*/
public boolean estDeplacable(){
return true;
}
......
......@@ -8,11 +8,14 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
public abstract class ElementStructurel extends Entite{
/**
* Constructeur de l'element structurel de base
* @param nom nom de l'element
* @param monde monde de l'element
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public ElementStructurel(String nom, Monde monde)
throws NomDEntiteDejaUtiliseDansLeMondeException{
if(monde.getEntite(nom) != null){
throw
}
throws NomDEntiteDejaUtiliseDansLeMondeException{
super(nom, monde);
}
}
......@@ -14,11 +14,21 @@ public class Piece extends ElementStructurel {
private Objet[] tableauObjet = new Objet[0];
private Vivant[] vivants = new Vivant[0];
/**
* Constructeur de la piece
* @param nom nom de la piece
* @param monde monde de la piece
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public Piece (Monde _monde, String _nom) throws NomDEntiteDejaUtiliseDansLeMondeException {
super( _nom, _monde);
}
/**
* deposer depose un objet dans la piece
* @param obj objet a deposer
*/
public void deposer(Objet _objet){
Objet[] tmp = new Objet[tableauObjet.length+1];
for (int i = 0 ; i < tableauObjet.length ; i++)
......@@ -28,31 +38,62 @@ public class Piece extends ElementStructurel {
tableauObjet = tmp;
}
public Objet retirer(String nomObjet)throws ObjetAbsentDeLaPieceException,
ObjetNonDeplacableException{
/**
* retirer retire un objet dans la piece par son nom
* @param nom nom de l'objet a retirer de la piece
* @return objet retire
* @throws ObjetNonDeplacableException
* @throws ObjetAbsentDeLaPieceException
*/
public Objet retirer(String nomObjet)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException{
int k = 0;
Objet result = null;
Objet[] tmp = new Objet[tableauObjet.length-1];
for (int i = 0; i < tableauObjet.length ; i++)
if (!tableauObjet[i].getNom().equals(nomObjet)){
tmp[k]= tableauObjet[i];
k++;
}
else
result = tableauObjet[i];
tableauObjet = tmp;
if (!obj.estDeplacable())
throw new ObjetNonDeplacableException();
else if (contientObjet(obj)){
for (int i = 0; i < tableauObjet.length ; i++)
if (!tableauObjet[i].getNom().equals(nomObjet)){
tmp[k]= tableauObjet[i];
k++;
}
else
result = tableauObjet[i];
tableauObjet = tmp;
}else {
throw new ObjetAbsentDeLaPieceException();
}
return result;
}
public Objet retirer(Objet _objet)throws ObjetAbsentDeLaPieceException,
ObjetNonDeplacableException {
return this.retirer(_objet.getNom());
/**
* retirer retire un objet dans la piece
* @param obj objet a retirer de la piece
* @return objet retire
* @throws ObjetNonDeplacableException
* @throws ObjetAbsentDeLaPieceException
*/
public Objet retirer(Objet _objet)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException {
if (_objet.getNom().equals(nom)) {