001import java.util.Stack; 002//import java.util.HashMap; 003 004/** 005 * Classe player servant à personnaliser le jeu : nom du joueur, pièce de départ pouvant être choisie, etc. 006 * 007 * @author Alban FERRACANI 008 * @version 04-2021 009 */ 010public class Player 011{ 012 //Attributs 013 private String aNomJoueur; 014 private Room aCurrentRoom; 015 private UserInterface aGui; 016 private Stack<Room> aStackPreviousRoom; 017 //private HashMap<String, Item> aInventory; 018 private ItemList aInventory; 019 private double aItemPoidsMax; 020 private double aPoids; 021 private double aPoidsActuel; 022 private int aInputCounter; 023 024 025 /** 026 * Constructeur naturel d'objets de classe Player 027 */ 028 public Player(final String pNomJoueur, final Room pCurrentRoom) 029 { 030 // initialisation des variables d'instance 031 this.aNomJoueur = pNomJoueur; 032 this.aCurrentRoom = pCurrentRoom; 033 this.aStackPreviousRoom = new Stack <Room>(); 034 //this.aInventory = new HashMap<String, Item>(); 035 this.aInventory = new ItemList(); 036 this.aPoids=700;//Poids du joueur 037 //this.aItemPoidsMax = 2865; //Poids max pouvant être porté par le joueur 038 this.aItemPoidsMax = 2865; //Poids max pouvant être porté par le joueur 039 this.aPoidsActuel = this.aPoids; 040 this.aInputCounter = 0; 041 042 } 043 044 // Accesseur et modificateur du nom du joueur 045 /** 046 * Accesseur du nom du joueur 047 */ 048 public String getNomJoueur(){ 049 return this.aNomJoueur; 050 } //getNomJoueur() 051 052 /** 053 * Modificateur du nom du joueur 054 */ 055 public void setNomJoueur(final String pNomJoueur ){ 056 this.aNomJoueur= pNomJoueur; 057 } //setNomJoueur() 058 059 // Accesseur et modificateur de l'emplacement actuel 060 /** 061 * Accesseur de l'emplacement actuel 062 */ 063 public Room getCurrentRoom(){ 064 return this.aCurrentRoom; 065 } // getCurrentRoom() 066 067 /** 068 * Modificateur de l'emplacement actuel 069 */ 070 public void setCurrentRoom(final Room pCurrentRoom ){ 071 this.aCurrentRoom = pCurrentRoom; 072 } //setCurrentRoom() 073 074 //Accesseur et modificateur de l'emplacement précédent 075 /** 076 * Accesseur de l'emplacement précédent 077 */ 078 public Stack<Room> getStackPreviousRoom(){ 079 return this.aStackPreviousRoom; 080 } //getStackPreviousRoom() 081 082 /** 083 * Modificateur de l'emplacement précédent 084 */ 085 public void setStackPreviousRoom(final Room pPreviousRoom ){ 086 this.aStackPreviousRoom.push(pPreviousRoom); 087 } //setStackPreviousRoom() 088 089 /** 090 * getItemsDescriptionPlayer() : retourne une string contenant la description des items du joueur. 091 */ 092 public String getItemsDescriptionPlayer() 093 { 094 String vTest = this.aInventory.getItemStringInventaire(); 095 return vTest; 096 } //getItemsDescriptionPlayer() 097 098 /** 099 * goRoomPlayer 100 */ 101 public void goRoomPlayer(final Room pRoom) 102 { 103 this.aStackPreviousRoom.push(this.aCurrentRoom); 104 this.aCurrentRoom = pRoom; 105 } //goRoomPlayer() 106 107 /** 108 * Back player - complète la procédure back de game engine. 109 */ 110 public void backPlayer() 111 { 112 this.aCurrentRoom = this.aStackPreviousRoom.pop(); 113 } //backPlayer() 114 115 // Take et drop pour prendre et lacher les items 116 /** 117 * Take item pour prendre l'item de la pièce 118 */ 119 public void takeItem(final String pDescriptionItem, final Item pItem) 120 { 121 //this.aInventory.put(pDescriptionItem, pItem); 122 this.aInventory.putItem(pDescriptionItem, pItem); 123 this.aPoidsActuel += pItem.getPoids(); 124 } //takeItem 125 126 /** 127 * Drop item pour lacher un objet pris 128 */ 129 public void dropItem(final String pDescriptionItem, final Item pItem) 130 { 131 //this.aInventory.remove(pDescriptionItem); 132 this.aInventory.removeItem(pDescriptionItem); 133 this.aPoidsActuel -= pItem.getPoids(); 134 } //dropItem 135 136 137 /** 138 * getItem accesseur 139 */ 140 public Item getItem(final String pDescriptionItem) 141 { 142 return this.aInventory.getCurrentItem(pDescriptionItem); 143 } //getItem() 144 145 146 //Accesseur et modificateur du poids max de l'item que le joueur peut porter. 147 /** 148 * Accesseur du poids max de l'item que le joueur peut porter. 149 */ 150 public double getItemPoidsMax() { 151 return this.aItemPoidsMax; 152 } //getItemPoidsMax() 153 154 /** 155 * Modificateur du poids max de l'item que le joueur peut porter. 156 */ 157 public void setItemPoidsMax(final double pItemPoidsMax) { 158 this.aItemPoidsMax = pItemPoidsMax; 159 } //setItemPoidsMax() 160 161 162 /** 163 * Méthode booléenne pour voir si l'item est trop lourd à porter ou non (poids du joueur inclus). 164 */ 165 public boolean tooHeavyItem(final double pWeight){ 166 return (pWeight + this.aPoids <= this.aItemPoidsMax); 167 } //tooHeavyItem() 168 169 //Accesseur et modificateurs du poids total du joueur avec les items 170 /** 171 * Accesseur du poids total du joueur avec les items 172 */ 173 public double getPoidsPlayer() { 174 return this.aPoidsActuel; 175 } //getPoidsPlayer() 176 177 /** 178 * Modificateur du poids total du joueur avec les items 179 */ 180 public void setPoidsPlayer(final double pPoidsJoueur) { 181 this.aPoidsActuel = pPoidsJoueur; 182 } //setPoidsPlayer() 183 184 //Accesseurs et modificateurs du compteur d'entrées 185 /** 186 * Accesseur du compteur d'entrées / de saisies. 187 */ 188 public int getInputCounter() { 189 return this.aInputCounter; 190 } //getInputCounter() 191 192 /** 193 * Modificateurs du compteur d'entrées / de saisies. 194 */ 195 public void setInputCounter(final int pInputCounter) { 196 this.aInputCounter = pInputCounter; 197 } //setInputCounter() 198 199}