-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRoom.java
144 lines (139 loc) · 5.01 KB
/
Room.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import java.util.HashMap;
import java.util.Set;
/**
* classe Room qui represente un lieux du jeux
* @author Aubert Antoine
* @version 08/05/21
*/
public class Room
{
private String aDescription;
private HashMap<String, Room> aExits;
private String aImageName;
private Item aItem;
private ItemList aItemList;
private static final String[] DIRECTIONS = {"north", "south", "east", "west", "up", "down", "cockpit", "reserve" ,"soute", "magical-place", "futur", "A-40", "A-50", "exit"};
/**
* Constructeur naturel qui cree un lieux a partir de la chaine "description"
* @param pDescription une string qui donne une description simple d'un lieux
* @param pImage donne une valeur de type String a aImage
*/
public Room(final String pDescription, final String pImage )
{
this.aDescription = pDescription;
this.aExits = new HashMap<String, Room>();
this.aImageName = pImage;
this.aItemList = new ItemList();
}//Room(.)
/**
* getter de la description du lieu
* @return aDescription ctd description du lieu
*/
public String getDescription() { return this.aDescription; }
/**
* Renvoie la piece ateinte si pas de prb, sinon return null
* @param pDirection est une str avec la direction
* @return aExits.get(pDirection)
*/
public Room getExit(final String pDirection)
{
for( String vTabDirection : DIRECTIONS ){
if(pDirection.equals(vTabDirection)){return this.aExits.get(pDirection);}
}return this;
}//getExit(.)
/**
* La methode getExitString(), renvoit une str vExitStr qui contient "Exits: " + les diff direction en fonction de leur existance
* Utilise une hashmap et une for-each pour la parcourir
* @return vExitStr qui est une string avec toutes les sorties
*/
public String getExitString()
{
String vExitStr = "Exits: ";
Set<String> vExitKeys = this.aExits.keySet();
for( String vTabDirection : DIRECTIONS ){
for ( String vExitKey : vExitKeys ){
if(vTabDirection.equals(vExitKey)){vExitStr += " " + vExitKey;}
}//for each
}
return vExitStr;
}//getExitString()
/**
* revoit une description detaillé par lieux.
* @return '"you are " + aDescription + ".\n" + getExitString();'
*/
public String getLongDescription()
{
return "You are " + this.aDescription + ".\n" + this.aItemList.getItemString() + "\n" + this.getExitString();
}//getLongDescription()
/**
* Return a string describing the room's image name
* @return this.aImageName a string describing the room's image name
*/
public String getImageName()
{
return this.aImageName;
}//getImageName()
/**
* est le getter de aItemList
* @return aItemList, un attribut de type ItemList
*/
public ItemList getItemList()
{
return this.aItemList;
}//getItemList()
/**
* getItem renvoie le nom de l'item passé en parametre sinon null
* utilise la hash map pour faire l association entre le param str et l'item Item.
* @param pStrItem est une str
* @return this.aItems.get(pStrItem) item associé a la Str de param
*/
public Item getItem(final String pStrItem)
{
return this.aItemList.getItem(pStrItem);
}//getItem(.)
/**
* Def une sortie pour cette piece
* Chaques direction, soit conduit a une autre piece, soit est null
* @param pDirection est la direction
* @param pNeighbor est la piece voisine
*/
public void setExit(final String pDirection, final Room pNeighbor )
{
this.aExits.put(pDirection, pNeighbor);
}//setExits(..)
/**
* Permet de set un item pour le lieu
* @param pItem est un item qui donera sa valeur a aItem
*/
public void setItem(final Item pItem)
{
this.aItem = pItem;
}//setItem(.)
/**
* isExit() permet de savoir sqi il y a une sortie ou pas. permet de cree une trap door
* @param pRoomExit permet de séavoir si il y a uin eexit a la room indiqué
* @return true ou false en fonction de si il exiqste une sortie
*/
public boolean isExit(final Room pRoomExit)
{
return this.aExits.containsValue(pRoomExit);
}//isExit(.)
/**
* addItem ajoute les items de ma piece avac une hashmap
* dualité avec addItem de ItemList (apl mais ne gere plus la liste)
* //Appel addItem() de ItemList (pas d'apl recurcif ici !!)
* @param pAddI de type item sera l'item ajouté
*/
public void addItem(final Item pAddI)
{
if( pAddI != null) this.aItemList.addItemList(pAddI); /*test si null pourquoi bug sinon ???*/
}//addItem(.)
/**
* removeItem permet d'enlever un item d'une piece via .remove
* @param pRemoveItem est le parametre qui va etre supppr
*/
public void removeItem(final String pRemoveItem)
{
this.aItemList.removeItemList(pRemoveItem);
}//removeItem(.)
} // Room