#if !defined(_PERSON_H) #define _PERSON_H #include "Environment.h" #include "Animal.h" #include "Weapon.h" #include #include class Person { public: //Konstruktör - Skapar en ny person med namn och som befinner sig på ett visst ställe //Pre: True //Post: Skapat en persion vid namn myName som befinner sig på env Person(std::string myName, Environment* env); //Destruktör //Pre: True //Post: Personen och alla dess vapen har tagits bort. ~Person(); //Förflyttar personen till en ny miljö //Pre: True //Post: Personen befinner sig nu på enviromentToGoTo void go(Environment* enviromentToGoTo); //Låter personen göra ett prov för att bli jägare //Pre: True //Post: Information om ifall personen har fått sin licens har skrivits till std::cout void takeExam(); //Låter personen inhandla ett nytt vapen //Pre: True //Post: Informaton om ifall köpet har gått bra eller inte har skrivits till std::cout void buyWeapon(std::string weaponToBuy); //Skjuter ett djur som man har siktat på med aim() //Pre: True //Post: Information om ifall skottet träffade eller inte har skrivits till std::cout void shoot(); //Siktar på ett djur //Pre: True //Post: Jägaren siktar nu på ett djur och kan därefter skjuta på det void aim(Animal* animalToAimAt); //Väljer ett vapen att skjuta med //Pre: True //Post: Information om ifall vapnet har valts eller inte hra skrivits till std::cout void selectWeapon(std::string weapon); //Tar reda på ifall en person är en jägare //Pre: True //Post: Returnerat true ifall personen är en jägare bool isHunter(); protected: //Skyddad konstruktör. Det går inte skapa en klass med en person utan namn och miljö Person(); private: //Från tar en person hans licens och jaktvapen //Pre: True //Post: Personen har inga vapen eller någon jaktlicens void resetPerson(); //Lägger till ett vapen i lisan över vapen //Pre: Vapnet finns inte redan i listan //Post: Vapnet har lagts till listan void addWeapon(Weapon* weaponToAdd, std::string weaponName); //Ger en person jägarlicens //Pre: True //Post: Personen har nu jägarlicens void updateLicense(); //Antalet kronor en person har //>0 long money; //Namnet på en person std::string name; //Stället en person befinner sig på //Pekar alltid på en omgivning Environment* currEnv; //Pekare till det djur som personen kommer att träffa vid anrop av shoot() // currentTarget != 0 om aim() har lyckats OCH personen befinner sig i skogen OCH har jägarlicens // currentTarget = 0 om aim() misslyckas ELLER om personen befinner sig i affären eller skolan ELLER inte har jägarlicens Animal* currentTarget; //Innehåller information om jägarlicens //True ifall personen har fått en jägarlicens annars false bool varIsHunter; //Pekare till det aktuella vapnet som en person har valt för att skjuta med // currWeapon != 0 om personen har valt ett vapen som denne har i sin vapenlista OCH har jägarlicens // currWeapin = 0 om personen befinner sig i affären eller i skolan ELLER om man inte har jägarlicens Weapon* currWeapon; //Lista till pekare över vapen som jägaren har // weapons.count = 0 om jägarlicens saknas // weapons.count => 0 om jägarlicens innehas std::map weapons; }; #endif //_PERSON_H