Commit 6e712f68 authored by LucasDANIELE's avatar LucasDANIELE
Browse files

Salut hamza

parent 2006dcd2
......@@ -66,7 +66,7 @@ public abstract class Entite {
* @return le String de description
*/
public String toString(){
return "Nom : "+this.nom;
return String.format("Nom : ",this.nom);
}
}
package fr.insarouen.asi.prog.asiaventure.elements.objets.serrurerie;
import fr.insarouen.asi.prog.asiaventure.elements.objets.Objet;
import fr.insarouen.asi.prog.asiaventure.NomDEntiteDejaUtiliseDansLeMondeException;
import fr.insarouen.asi.prog.asiaventure.Monde;
public final class Clef extends Objet {
protected Clef(String nom, Monde monde) throws NomDEntiteDejaUtiliseDansLeMondeException {
super(nom, monde);
}
@Override
public boolean estDeplacable(){
return true;
}
}
package fr.insarouen.asi.prog.asiaventure.elements.objets.serrurerie;
import fr.insarouen.asi.prog.asiaventure.elements.Entite;
import fr.insarouen.asi.prog.asiaventure.elements.objets.Objet;
import fr.insarouen.asi.prog.asiaventure.elements.Activable;
import fr.insarouen.asi.prog.asiaventure.Monde;
import fr.insarouen.asi.prog.asiaventure.NomDEntiteDejaUtiliseDansLeMondeException;
import fr.insarouen.asi.prog.asiaventure.elements.ActivationException;
import fr.insarouen.asi.prog.asiaventure.elements.Etat;
import fr.insarouen.asi.prog.asiaventure.elements.ActivationImpossibleException;
public class Serrure extends Objet implements Activable{
private static int n = 0;
public Clef clef = null;
private Etat etat = Etat.FERME;
private static String creerNomSerrure(Monde monde){
while (monde.getEntite(String.format("Serrure" , String.valueOf(n))) != null )
n++;
return String.format("Serrure" , String.valueOf(n));
}
public Serrure(String nom, Monde monde) throws NomDEntiteDejaUtiliseDansLeMondeException {
super(nom,monde);
}
public Serrure(Monde monde) throws NomDEntiteDejaUtiliseDansLeMondeException {
this(Serrure.creerNomSerrure(monde), monde);
}
@Override
public boolean estDeplacable(){
return false;
}
@Override
public boolean activableAvec(Objet obj){
return obj.equals(this.clef) && clef!=null;
}
@Override
public void activer() throws ActivationException{
}
@Override
public void activerAvec(Objet clef) throws ActivationException{
if (activableAvec(clef))
switch (etat){
case VERROUILLE:
etat=Etat.OUVERT;
break;
case DEVERROUILLE:
etat=Etat.VERROUILLE;
break;
}
}
public final Clef creerClef() throws NomDEntiteDejaUtiliseDansLeMondeException{
if (clef == null){
int i = 0;
while(getMonde().getEntite(String.format(getNom(),"Clef", String.valueOf(i))) != null)
i++;
clef = new Clef(String.format(getNom(),"Clef", String.valueOf(i)), getMonde());
return clef;
}
return null;
}
}
package fr.insarouen.asi.prog.asiaventure.elements.objets.serrurerie;
import fr.insarouen.asi.prog.asiaventure.elements.Entite;
import fr.insarouen.asi.prog.asiaventure.elements.objets.Objet;
import fr.insarouen.asi.prog.asiaventure.elements.Activable;
public class Serrure extends Objet implements Activable{
public Serrure(String nom, Monde monde){
super(nom,monde);
}
private static getnom(){
}
public Serrure(Monde monde){
}
}
package fr.insarouen.asi.prog.asiaventure.elements.structure;
import fr.insarouen.asi.prog.asiaventure.elements.structure.ElementStructurel;
import fr.insarouen.asi.prog.asiaventure.NomDEntiteDejaUtiliseDansLeMondeException;
import fr.insarouen.asi.prog.asiaventure.elements.vivants.Vivant;
import fr.insarouen.asi.prog.asiaventure.Monde;
import fr.insarouen.asi.prog.asiaventure.elements.Activable;
import fr.insarouen.asi.prog.asiaventure.elements.Etat;
import fr.insarouen.asi.prog.asiaventure.elements.objets.Objet;
import fr.insarouen.asi.prog.asiaventure.elements.ActivationImpossibleException;
import fr.insarouen.asi.prog.asiaventure.elements.ActivationImpossibleAvecObjetException;;
import fr.insarouen.asi.prog.asiaventure.elements.ActivationImpossibleAvecObjetException;
import fr.insarouen.asi.prog.asiaventure.elements.objets.serrurerie.Serrure;
import fr.insarouen.asi.prog.asiaventure.elements.objets.serrurerie.Clef;
import fr.insarouen.asi.prog.asiaventure.elements.objets.PiedDeBiche;
/**
* Classe héritant d'ElementStructurel définissant une Porte possèdant 4 attributs :
......@@ -21,7 +23,8 @@ import fr.insarouen.asi.prog.asiaventure.elements.ActivationImpossibleAvecObjetE
public class Porte extends ElementStructurel implements Activable{
private Piece pieceA;
private Piece pieceB;
private Etat etat;
private Serrure serrure = null;
private Etat etat = Etat.FERME;
/**
* Constructeur de la Porte
......@@ -35,10 +38,17 @@ public class Porte extends ElementStructurel implements Activable{
super(nom,monde);
this.pieceA = pieceA;
this.pieceB = pieceB;
this.etat = Etat.FERME;
this.pieceA.addPorte(this);
this.pieceB.addPorte(this);
}
public Porte(String nom, Monde monde, Serrure serrure, Piece pieceA, Piece pieceB) throws NomDEntiteDejaUtiliseDansLeMondeException{
super(nom,monde);
this.pieceA = pieceA;
this.pieceB = pieceB;
this.pieceA.addPorte(this);
this.pieceB.addPorte(this);
this.serrure = serrure;
}
/**
* getEtat Retourne l'Etat de la porte
......@@ -49,31 +59,32 @@ public class Porte extends ElementStructurel implements Activable{
}
public Piece getPieceAutreCote(Piece piece) {
if (piece.equals(pieceA)) {
return pieceB;
} else if (piece.equals(pieceB)) {
return pieceA;
} else {
return null;
if (piece.equals(pieceA)) {
return pieceB;
} else if (piece.equals(pieceB)) {
return pieceA;
} else {
return null;
}
}
public Serrure getSerrure(){
return serrure;
}
}
/**
* activer, ouvre la porte si possible
* @throws ActivationImpossibleException
*/
public void activer() throws ActivationImpossibleException{
if (etat==Etat.CASSE || etat==Etat.VERROUILLE)
throw new ActivationImpossibleException();
else
switch (etat){
case FERME:
etat=Etat.OUVERT;
break;
case OUVERT:
etat=Etat.FERME;
break;
}
switch(etat){
case FERME:
etat = Etat.OUVERT;
break;
case OUVERT:
etat = Etat.FERME;
break;
}
}
/**
......@@ -83,17 +94,18 @@ public class Porte extends ElementStructurel implements Activable{
* @throws ActivationImpossibleAvecObjetException
*/
public void activerAvec(Objet obj) throws ActivationImpossibleException, ActivationImpossibleAvecObjetException{
if (etat==Etat.CASSE || etat==Etat.VERROUILLE)
throw new ActivationImpossibleException();
else
switch (etat){
case FERME:
etat=Etat.OUVERT;
break;
case OUVERT:
etat=Etat.FERME;
break;
}
if((etat == Etat.VERROUILLE) && obj.getClass().equals(Clef.class))
etat = Etat.OUVERT;
else if((etat == Etat.OUVERT) && obj.getClass().equals(Clef.class))
etat = Etat.VERROUILLE;
else if((etat == Etat.VERROUILLE) && obj.getClass().equals(PiedDeBiche.class))
etat = Etat.CASSE;
else if((etat == Etat.FERME) && obj.getClass().equals(Clef.class))
etat = Etat.VERROUILLE;
else if((etat == Etat.FERME) && obj.getClass().equals(PiedDeBiche.class))
etat = Etat.CASSE;
}
/**
......@@ -102,7 +114,15 @@ public class Porte extends ElementStructurel implements Activable{
* @return boolean, retourne true si la Porte est activable avec l'Objet false sinon
*/
public boolean activableAvec(Objet obj){
return false;
if((etat==Etat.VERROUILLE) && (obj.getClass().equals(Clef.class)) || (obj.getClass().equals(PiedDeBiche.class)))
return true;
else if((etat==Etat.OUVERT) || (etat==Etat.FERME))
return true;
else
return false;
}
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment