-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInventory.java
More file actions
executable file
·139 lines (122 loc) · 2.85 KB
/
Inventory.java
File metadata and controls
executable file
·139 lines (122 loc) · 2.85 KB
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
import java.util.HashMap;
/**
* Classe decrivant le concept d'inventaire
* @author Clément Chomicki
*/
public class Inventory
{
private HashMap<Item, Integer> aItems;
private int aWeight;
/**
* Constructeur de la classe
*/
public Inventory()
{
this.aItems = new HashMap<Item, Integer>();
this.aWeight = 0;
}
/**
* Cherche un item dans l'inventaire de l'entite via son nom
* @param pItemName le nom de l'item cherche
* @return un item ou null
*/
public Item getByName( final String pItemName )
{
for (Item vItem : this.aItems.keySet() )
{
if ( vItem.getDescription().equals( pItemName ) )
{
return vItem;
}
}
return null;
}
/**
* Verifie la presence d'un item dans l'inventaire
* @param pItem l'item cherche
* @return un booleen traduisant la presence de l'item
*/
public boolean hasItem( final Item pItem )
{
return ( this.aItems.get( pItem ) != null );
}
/**
* Verifie si l'inventaire est vide
* @return un booleen
*/
public boolean isEmpty()
{
return this.aItems.isEmpty();
}
/**
* ajoute un item a l'inventaire
* @param pItem l'item a ajouter
*/
public void add( final Item pItem )
{
if ( this.hasItem(pItem) )
this.aItems.put( pItem, this.aItems.get( pItem ) +1 );
else
this.aItems.put( pItem, 1 );
this.aWeight += pItem.getWeight();
}
/**
* ajoute des items a l'inventaire
* @param pItem l'item a ajouter
* @param pNombre le nombre de fois que pItem doit etre ajoute
*/
public void add( final Item pItem, final int pNombre )
{
for (int vI = 0; vI < pNombre; vI++)
this.add( pItem );
}
/**
* retire un item de l'inventaire
* @param pItem l'item a supprimer
*/
public void remove( final Item pItem )
{
if (this.aItems.get( pItem ) > 1)
this.aItems.put( pItem, this.aItems.get( pItem ) - 1);
else
this.aItems.remove( pItem );
this.aWeight -= pItem.getWeight();
}
/**
* Retourne une chaine decrivant le contenu de l'inventaire
* @return une chaine decrivant le contenu de l'inventaire
*/
public String toString()
{
if ( this.isEmpty() )
return "";
else
{
String vS = "";
for (Item vItem : this.aItems.keySet())
{
Integer vNombre = this.aItems.get( vItem );
vS += ( "\n " + vNombre.toString() + " " +
vItem.getDescription() +
( (vNombre > 1) ? "s":"" ) +
"("+
(new Integer(vItem.getWeight() * vNombre)
).toString()+")" );
}
return vS;
}
}
/**
* retourne le poids total
*@return le poids total
*/
public int totalWeight()
{
int vTotal = 0;
for ( Item vItem : this.aItems.keySet() )
{
vTotal += vItem.getWeight();
}
return vTotal;
}
}