Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Daniele Lucas
ItiAdventure
Commits
abcb11d9
Commit
abcb11d9
authored
Mar 22, 2021
by
Aroubate Hamza
Browse files
Fin TP5
parent
64b61454
Changes
11
Hide whitespace changes
Inline
Side-by-side
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/Activable.java
View file @
abcb11d9
...
...
@@ -4,18 +4,19 @@ import fr.insarouen.asi.prog.asiaventure.elements.objets.*;
public
interface
Activable
{
/**
* Retourne le caractere activable avec un objet donne
* @param obj Objet à tester
*/
* activableAvec permet de savoir si on peut activer l'activable avec l'Objet
* @param obj l'Objet à vérifier pour que ça active l'activable
* @return boolean, retourne true si l'activable est activable avec l'Objet false sinon
*/
boolean
activableAvec
(
Objet
obj
);
/**
*
Activ
e
*
activer active l'activabl
e
*/
void
activer
()
throws
ActivationException
;
/**
*
Active
*
activerAvec active l'activable avec l'Objet
* @param obj Objet qui active
*/
void
activerAvec
(
Objet
obj
)
throws
ActivationException
;
...
...
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/ActivationImpossibleAvecObjetException.java
0 → 100644
View file @
abcb11d9
package
fr.insarouen.asi.prog.asiaventure.elements
;
/**
* Classe définissant l'exception ActivationImpossibleAvecObjetException
*/
public
class
ActivationImpossibleAvecObjetException
extends
ActivationImpossibleException
{
/**
* Constructeur de ActivationImpossibleAvecObjetException
*/
public
ActivationImpossibleAvecObjetException
(){}
/**
* Constructeur de ActivationImpossibleAvecObjetException
* @param msg message décrivant l'exception
*/
public
ActivationImpossibleAvecObjetException
(
String
msg
){
super
(
msg
);
}
}
\ No newline at end of file
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/ActivationImpossibleException.java
0 → 100644
View file @
abcb11d9
package
fr.insarouen.asi.prog.asiaventure.elements
;
/**
* Classe définissant l'exception ActivationImpossibleException
*/
public
class
ActivationImpossibleException
extends
ActivationException
{
/**
* Constructeur de ActivationImpossibleException
*/
public
ActivationImpossibleException
(){}
/**
* Constructeur de ActivationImpossibleException
* @param msg message décrivant l'exception
*/
public
ActivationImpossibleException
(
String
msg
){
super
(
msg
);
}
}
\ No newline at end of file
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/structure/Piece.java
View file @
abcb11d9
...
...
@@ -10,10 +10,19 @@ import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
import
java.util.*
;
/**
* Classe héritant d'ElementStructurel définissant une Piece possèdant 4 attributs :
* nom : le nom de notre Piece;
* monde : le monde dans lequel se trouve notre Piece;
* objets : dictionnaire des Objet avec en clé leur nom et en valeur l'Objet;
* vivants : dictionnaire des Vivant avec en clé leur nom et en valeur le Vivant;
* portes : dictionnaire des Porte avec en clé leur nom et en valeur la Porte;
*/
public
class
Piece
extends
ElementStructurel
{
private
HashMap
<
String
,
Objet
>
objets
=
new
HashMap
<
String
,
Objet
>();
private
HashMap
<
String
,
Vivant
>
vivants
=
new
HashMap
<
String
,
Vivant
>();
private
Map
<
String
,
Porte
>
portes
=
new
HashMap
<
String
,
Porte
>();
/**
* Constructeur de la piece
...
...
@@ -25,6 +34,38 @@ public class Piece extends ElementStructurel {
super
(
_nom
,
_monde
);
}
/**
* addPorte ajoute une porte à la Piece
* @param porte Porte à ajouter
*/
protected
void
addPorte
(
Porte
porte
)
{
this
.
portes
.
put
(
porte
.
getNom
(),
porte
);
}
/**
* aLaPorte verifie si la Piece contient la Porte
* @param porte Porte à verifier
*/
public
boolean
aLaPorte
(
Porte
porte
)
{
return
aLaPorte
(
porte
.
getNom
());
}
/**
* aLaPorte verifie si la Piece contient la Porte
* @param nom nom de la Porte a verifier
*/
public
boolean
aLaPorte
(
String
nom
)
{
return
this
.
portes
.
containsKey
(
nom
);
}
/**
* getPorte renvoie la Porte demandée à partir de son nom
* @param nom nom de la Porte à renvoyer
*/
public
Porte
getPorte
(
String
nom
)
{
return
this
.
portes
.
get
(
nom
);
}
/**
* deposer depose un objet dans la piece
* @param obj objet a deposer
...
...
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/structure/Porte.java
View file @
abcb11d9
package
fr.insarouen.asi.prog.asiaventure.elements.structure
;
import
fr.insarouen.asi.prog.asiaventure.*
;
import
fr.insarouen.asi.prog.asiaventure.elements.*
;
import
fr.insarouen.asi.prog.asiaventure.elements.structure.*
;
import
fr.insarouen.asi.prog.asiaventure.elements.Etat
;
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
;;
/**
* Classe héritant d'ElementStructurel définissant une Porte possèdant 4 attributs :
* nom : le nom de notre Porte ;
* monde : le monde dans lequel se trouve notre Porte ;
* pieceA : une des deux piece à laquelle elle est liée ;
* pieceB : une des deux piece à laquelle elle est liée ;
* etat : l'etat dans lequel elle est ;
*/
public
class
Porte
extends
ElementStructurel
implements
Activable
{
private
Piece
pieceA
;
private
Piece
pieceB
;
private
Etat
etat
=
FERME
;
private
Etat
etat
;
/**
* Constructeur de la Porte
* @param nom nom de l'element
* @param monde monde de l'element
* @param pieceA premiere piece
* @param pieceB seconde piece
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public
Porte
(
String
nom
,
Monde
monde
,
Piece
pieceA
,
Piece
pieceB
)
throws
NomDEntiteDejaUtiliseDansLeMondeException
{
super
(
nom
,
monde
);
this
.
pieceA
=
pieceA
;
this
.
pieceB
=
pieceB
;
this
.
etat
=
FERME
;
}
/**
* getEtat Retourne l'Etat de la porte
* @return Etat, l'Etat de la porte
*/
public
Etat
getEtat
(){
return
this
.
etat
;
}
public
Piece
getPieceAutreCote
(
Piece
piece
)
{
if
(
piece
.
equals
(
pieceA
))
{
return
pieceB
;
}
else
if
(
piece
.
equals
(
pieceB
))
{
return
pieceA
;
}
else
{
return
null
;
}
}
/**
* activer, ouvre la porte si possible
* @throws ActivationImpossibleException
*/
public
void
activer
()
throws
ActivationImpossibleException
{
if
(
etat
==
CASSE
||
etat
==
VERROUILLE
)
throw
new
ActivationImpossibleException
();
...
...
@@ -30,4 +73,43 @@ public class Porte extends ElementStructurel implements Activable{
break
;
}
}
}
\ No newline at end of file
/**
* activerAvec, active la Porte avec l'Objet
* @param obj l'Objet qui permet d'activer la Porte
* @throws ActivationImpossibleException
* @throws ActivationImpossibleAvecObjetException
*/
public
void
activerAvec
(
Objet
obj
)
throws
ActivationImpossibleException
,
ActivationImpossibleAvecObjetException
{
if
(
etat
==
CASSE
||
etat
==
VERROUILLE
)
throw
new
ActivationImpossibleException
();
else
switch
(
etat
){
case
FERME:
etat
=
OUVERT
;
break
;
case
OUVERT:
etat
=
FERME
;
break
;
}
}
/**
* activableAvec, permet de savoir si on peut activer la Porte avec l'Objet
* @param obj l'Objet à vérifier pour que ça active la Porte
* @return boolean, retourne true si la Porte est activable avec l'Objet false sinon
*/
public
boolean
activableAvec
(
Objet
obj
){
return
false
;
}
/**
* toString Créer un String décrivant la Piece
* @return str la description de la Piece
*/
public
String
toString
(){
StringBuilder
str
=
new
StringBuilder
();
str
.
append
(
String
.
format
(
super
.
toString
(),
this
.
pieceA
,
this
.
pieceB
,
this
.
etat
));
return
str
.
toString
();
}
}
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/structure/PorteFermeException.java
0 → 100644
View file @
abcb11d9
package
fr.insarouen.asi.prog.asiaventure.elements.structure
;
/**
* Classe définissant l'exception PorteFermeException
*/
public
class
PorteFermeException
extends
ElementStructurelException
{
/**
* Constructeur de PorteFermeException
*/
public
PorteFermeException
(){
}
/**
* Constructeur de PorteFermeException
* @param msg message décrivant l'exception
*/
public
PorteFermeException
(
String
msg
){
super
(
msg
);
}
}
\ No newline at end of file
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/structure/PorteInexistanteDansLaPieceException.java
0 → 100644
View file @
abcb11d9
package
fr.insarouen.asi.prog.asiaventure.elements.structure
;
/**
* Classe définissant l'exception PorteInexistanteDansLaPieceException
*/
public
class
PorteInexistanteDansLaPieceException
extends
PieceException
{
/**
* Constructeur de PorteInexistanteDansLaPieceException
*/
public
PorteInexistanteDansLaPieceException
(){}
/**
* Constructeur de PorteInexistanteDansLaPieceException
* @param msg message décrivant l'exception
*/
public
PorteInexistanteDansLaPieceException
(
String
msg
){
super
(
msg
);
}
}
\ No newline at end of file
ITIAdventure/src/fr/insarouen/asi/prog/asiaventure/elements/vivants/Vivant.java
View file @
abcb11d9
...
...
@@ -11,6 +11,15 @@ import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
import
java.util.*
;
/**
* Classe héritant d'Entite définissant un Vivant possèdant 6 attributs :
* nom : le nom de notre Vivant;
* monde : le monde dans lequel se trouve notre Vivant;
* pointVie : le nombre de point de vie;
* pointForce : le nombre de point de force;
* piece : la Piece où il se trouve;
* objets : dictionnaire des Objets que le Vivant possède, en clé leur nom et en valeur l'Objet;
*/
public
abstract
class
Vivant
extends
Entite
{
private
int
pointVie
;
...
...
@@ -125,6 +134,42 @@ public abstract class Vivant extends Entite {
return
(
getPointVie
()
==
0
);
}
/**
* franchir permet de passer d'une Piece à une autre grâce à une Porte
* @param porte Porte à franchir
* @throws PorteFermeException
* @throws PorteInexistanteDansLaPieceException
*/
public
void
franchir
(
Porte
porte
)
throws
PorteFermeException
,
PorteInexistanteDansLaPieceException
{
franchir
(
porte
.
getNom
());
}
/**
* franchir permet de passer d'une Piece à une autre grâce à une Porte à partir de son nom
* @param nomPorte nom de la Porte à franchir
* @throws PorteFermeException
* @throws PorteInexistanteDansLaPieceException
*/
public
void
franchir
(
String
nomPorte
)
throws
PorteFermeException
,
PorteInexistanteDansLaPieceException
{
try
{
if
(!(
piece
.
aLaPorte
(
nomPorte
))
||
piece
.
getPorte
(
nomPorte
).
getPieceAutreCote
(
piece
)==
null
){
throw
new
PorteInexistanteDansLaPieceException
();
}
if
(
piece
.
getPorte
(
nomPorte
).
getEtat
().
equals
(
FERME
)){
throw
new
PorteFermeException
();
}
piece
.
sortir
(
this
);
piece
=
piece
.
getPorte
(
nomPorte
).
getPieceAutreCote
(
piece
);
piece
.
entrer
(
this
);
}
catch
(
VivantAbsentDeLaPieceException
e
)
{
System
.
out
.
println
();
}
}
/**
* toString créer un String décrivant le vivant
* @return le String de description
...
...
ITIAdventure/srctest/fr/insarouen/asi/prog/asiaventure/elements/structure/TestPiece.java
View file @
abcb11d9
...
...
@@ -144,4 +144,13 @@ public class TestPiece{
assertThat
(
piece
.
contientVivant
(
v
.
getNom
()),
IsEqual
.
equalTo
(
true
));
piece
.
sortir
(
v
);
}
@Test
public
void
test_addPorte_aLaPorte
()
throws
NomDEntiteDejaUtiliseDansLeMondeException
,
VivantAbsentDeLaPieceException
{
Piece
piece2
=
new
Piece
(
"piece2"
,
monde1
);
Porte
porte1
=
new
Porte
(
"porte1"
,
monde1
,
piece1
,
piece2
);
assertThat
(
piece1
.
aLaPorte
(
porte1
),
is
(
true
));
assertThat
(
piece2
.
aLaPorte
(
porte1
),
is
(
true
));
}
}
\ No newline at end of file
ITIAdventure/srctest/fr/insarouen/asi/prog/asiaventure/elements/structure/TestPorte.java
0 → 100644
View file @
abcb11d9
package
fr.insarouen.asi.prog.asiaventure.elements.structure
;
import
fr.insarouen.asi.prog.asiaventure.*
;
import
fr.insarouen.asi.prog.asiaventure.elements.*
;
import
fr.insarouen.asi.prog.asiaventure.elements.objets.*
;
import
fr.insarouen.asi.prog.asiaventure.elements.vivants.*
;
import
fr.insarouen.asi.prog.asiaventure.elements.structure.*
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Ignore
;
import
org.hamcrest.core.IsEqual
;
import
org.junit.Test
;
import
static
org
.
junit
.
Assert
.*;
import
java.util.*
;
public
class
TestPorte
{
public
Monde
monde1
;
public
Piece
pieceA1
;
public
Piece
pieceB1
;
public
Porte
porte1
;
@Before
public
void
init
()
throws
Exception
{
monde1
=
new
Monde
(
"monde1"
);
pieceA1
=
new
Piece
(
"pieceA1"
,
monde1
);
pieceB1
=
new
Piece
(
"pieceB1"
,
monde1
);
porte1
=
new
Porte
(
"porte1"
,
monde1
,
pieceA1
,
pieceB1
);
}
@Test
public
void
test_activer_getEtat
()
throws
ActivationImpossibleException
{
assertThat
(
porte1
.
getEtat
(),
equalTo
(
Etat
.
FERME
));
porte1
.
activer
();
assertThat
(
porte1
.
getEtat
(),
equalTo
(
Etat
.
OUVERT
));
}
@Test
public
void
test_getPieceAutreCote
()
{
assertThat
(
porte1
.
getPieceAutreCote
(
pieceA1
),
equalTo
(
pieceB1
));
assertThat
(
porte1
.
getPieceAutreCote
(
pieceB1
),
equalTo
(
pieceA1
));
}
}
ITIAdventure/srctest/fr/insarouen/asi/prog/asiaventure/elements/vivants/TestVivant.java
View file @
abcb11d9
...
...
@@ -10,10 +10,13 @@ import java.util.*;
import
fr.insarouen.asi.prog.asiaventure.Monde
;
import
fr.insarouen.asi.prog.asiaventure.NomDEntiteDejaUtiliseDansLeMondeException
;
import
fr.insarouen.asi.prog.asiaventure.elements.objets.Objet
;
import
fr.insarouen.asi.prog.asiaventure.elements.objets.PiedDeBiche
;
import
fr.insarouen.asi.prog.asiaventure.elements.objets.ObjetNonDeplacableException
;
import
fr.insarouen.asi.prog.asiaventure.elements.structure.ObjetAbsentDeLaPieceException
;
import
fr.insarouen.asi.prog.asiaventure.elements.structure.Piece
;
import
fr.insarouen.asi.prog.asiaventure.elements.structure.Porte
;
import
fr.insarouen.asi.prog.asiaventure.elements.structure.PorteFermeException
;
import
fr.insarouen.asi.prog.asiaventure.elements.structure.PorteInexistanteDansLaPieceException
;
import
fr.insarouen.asi.prog.asiaventure.elements.ActivationImpossibleException
;
import
static
org
.
hamcrest
.
core
.
Is
.
is
;
import
static
org
.
junit
.
Assert
.*;
...
...
@@ -155,4 +158,46 @@ public class TestVivant {
vivant
.
deposer
(
obj
);
}
}
\ No newline at end of file
@Test
public
void
test_franchir
()
throws
NomDEntiteDejaUtiliseDansLeMondeException
,
PorteFermeException
,
PorteInexistanteDansLaPieceException
,
ActivationImpossibleException
{
Piece
piece2
=
new
Piece
(
"piece2"
,
monde1
);
Porte
porte1
=
new
Porte
(
"porte1"
,
monde1
,
piece1
,
piece2
);
porte1
.
activer
();
vivant1
.
franchir
(
porte1
);
assertThat
(
vivant1
.
getPiece
(),
equalTo
(
piece2
));
vivant1
.
franchir
(
"porte1"
);
assertThat
(
vivant1
.
getPiece
(),
equalTo
(
piece1
));
}
@Test
(
expected
=
PorteFermeException
.
class
)
public
void
test_franchir_PorteFerme
()
throws
NomDEntiteDejaUtiliseDansLeMondeException
,
PorteFermeException
,
PorteInexistanteDansLaPieceException
,
ActivationImpossibleException
{
Piece
piece2
=
new
Piece
(
"piece2"
,
monde1
);
Porte
porte1
=
new
Porte
(
"porte1"
,
monde1
,
piece1
,
piece2
);
vivant1
.
franchir
(
porte1
);
}
@Test
(
expected
=
PorteInexistanteDansLaPieceException
.
class
)
public
void
test_franchir_PorteInexistante
()
throws
NomDEntiteDejaUtiliseDansLeMondeException
,
PorteFermeException
,
PorteInexistanteDansLaPieceException
,
ActivationImpossibleException
{
Piece
piece2
=
new
Piece
(
"piece2"
,
monde1
);
Piece
piece3
=
new
Piece
(
"piece3"
,
monde1
);
Porte
porte1
=
new
Porte
(
"porte1"
,
monde1
,
piece2
,
piece3
);
porte1
.
activer
();
vivant1
.
franchir
(
porte1
);
}
@Test
public
void
test_activerActivable
()
throws
NomDEntiteDejaUtiliseDansLeMondeException
,
PorteFermeException
,
PorteInexistanteDansLaPieceException
,
ActivationImpossibleException
{
Piece
piece2
=
new
Piece
(
"piece2"
,
monde1
);
Piece
piece3
=
new
Piece
(
"piece3"
,
monde1
);
Porte
porte1
=
new
Porte
(
"porte1"
,
monde1
,
piece2
,
piece3
);
Porte
porte2
=
new
Porte
(
"porte2"
,
monde1
,
piece2
,
piece3
);
porte1
.
activer
();
try
{
vivant1
.
activerActivable
(
porte1
);
}
catch
(
Exception
e
)
{
System
.
out
.
println
();
}
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment