001import java.util.HashMap; //imports des différentes classes dont l'on va avoir besoin 002import java.util.Set; 003 004 005 006/** 007 * Classe liée à la création de chacune des pièces présente dans le jeu. 008 * @author Gabriel Leroux aidé des enseignements de M.Bureau 009 * @version 23/03/2020 010 */ 011 012public class Room 013{ 014 private String aDescription; 015 private HashMap<String, Room>exits; 016 private String aImageName; 017 private ItemList aListe; 018 private HashMap<String,Door> portes; 019 020 /** 021 * Crée une room pDescription et la Hashmap exits dans laquelle 022 * est stocké chaque direction qui est associée à une room. 023 * Crée aussi la HashMap items qui à un nom, associe un item. 024 * Crée le nom de l'image aImageName 025 * @param pDescription représentant la description 026 * @param pImage représentant l'image de liée à la pièce 027 */ 028 public Room(final String pDescription, final String pImage){ 029 this.aDescription=pDescription; 030 this.exits=new HashMap <String, Room>(); 031 this.aImageName=pImage; 032 this.aListe=new ItemList(); 033 this.portes=new HashMap<String,Door>(); 034 035 } 036 037 /** 038 * méthode permettant de retourner l'item associé au nom 039 * @param pString String du nom de l'item 040 * @return l'item associé à son nom 041 */ 042 public Item retourneItem(final String pString){ 043 return this.aListe.getItem(pString); 044 } 045 /** 046 * A pour unique but de retourner la description de la 047 * room courante ou de la suivante en fonction de la direction. 048 * @return la String de la description de la pièce. 049 */ 050 public String getDescription(){ 051 return this.aDescription; 052 } 053 054 /** 055 * Définit les sorties de la pièce en les stockant dans la Hashmap exits cf. class Game. 056 * @param pDirection les directions 057 * @param pNeighbor rooms voisines 058 */ 059 public void setExit(final String pDirection, final Room pNeighbor){ 060 061 exits.put(pDirection, pNeighbor); 062 063 } 064 /** 065 * Définit les portes de la pièce 066 * @param pDirection les directions 067 * @param pDoor porte de la pièce 068 */ 069 public void setDoor(final String pDirection, final Door pDoor){ 070 071 portes.put(pDirection, pDoor); 072 073 } 074 /** 075 * Définit les beamer de la pièce en les stockant dans l'attribut itemList 076 * @param pNom nom du Beamer 077 * @param pPrix prix du Beamer 078 * @param pDescription Description du Beamer 079 */ 080 public void setBeamer(final String pNom, final int pPrix, final String pDescription){ 081 Beamer vBeamer= new Beamer(pNom,pPrix,pDescription); 082 this.aListe.addItem(pNom,vBeamer); 083 } 084 /** 085 * méthode permettant de retourner la porte associé à son nom 086 * @param pString, la string de la direction où est la porte 087 * @return la porte associée à la direction 088 */ 089 public Door getDoor(final String pString){ 090 return portes.get(pString); 091 } 092 /** 093 * Définit les items de la pièce en les stockant dans l'attribut itemList 094 * @param pNom nom de l'item 095 * @param pPrix prix de l'item 096 * @param pDescription Description de l'item 097 */ 098 public void setItem(final String pNom, final int pPrix, final String pDescription){ 099 Item vItem=new Item (pNom,pPrix,pDescription); 100 this.aListe.addItem(pNom, vItem); 101 102 } 103 /** 104 * Enleve les items de la pièce après les avoir pris 105 * @param pString String du nom de l'item 106 */ 107 public void suppItem(final String pString){ 108 109 aListe.suppItem(pString); 110 111 } 112 /** 113 * Depose les items après les avoir pris 114 * @param pItem Item à ajouter à la hashmap 115 */ 116 public void addItem(final Item pItem){ 117 118 this.aListe.addItem(pItem.getNom(),pItem); 119 120 } 121 122 /** 123 * Donne la prochaine salle associé à la direction passé en paramètre. 124 * @param pDirection String d'une sortie associé à une Room 125 * @return la room associée à la direction 126 */ 127 public Room getExit(final String pDirection){ 128 return exits.get(pDirection); 129 } 130 /** 131 * On initialise une variable locale de type String nommée vString, 132 * contenant la chaine de caractère «Les sorties sont : ». On utilise ensuite la méthode keySet() pour 133 * mettre dans la variable keys l’ensemble des clés de la Hashmap exits. On parcoure keys, à l’aide d’une 134 * boucle for each. Cette même boucle initialise une variable de type String exits. Pour chaque chaîne de caractère exits de la 135 * collection keys, je change la variable vString, en concaténant la précédente variable vString et exits. 136 * On sort de la boucle et on return vString. 137 * @return La String contenant l'ensemble des sorties liés à la pièce courante 138 */ 139 public String getExitString(){ 140 String vString="Les sorties sont : "; 141 Set <String> vKeys=exits.keySet(); 142 for(String exits:vKeys){ 143 vString= vString + "\n"+ exits;// +" : "+ this.getExit(exits).getDescription(); 144 } 145 146 return vString; 147 } 148 /** 149 * Renvoie une description détaillée de cette pièce 150 * sous la forme : 151 * Vous êtes dans ... 152 * Les sorties sont : ... 153 * Les items sont : ... 154 * @return Une description de la pièce, avec les sorties et les items associés à la pièce 155 */ 156 public String getLongDescription(){ 157 return ""+ getDescription() +"\n" + this.getExitString() + "\n" + this.aListe.returnListItem()+"\n"; 158 } 159 /** 160 * Renvoie une String qui correspond au nom de l'image de la room concernée. 161 * @return la String correspondant à l'image de la Room concernée. 162 */ 163 public String getImageName() 164 { 165 return this.aImageName; 166 } 167 168} // Room