// Programmer: Bushra Anjum
// file: Resident.h
#ifndef Resident_h
#define Resident_h
#include <cstdlib>
#include <time.h>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
const int HAIR_COLOR_RANGE = 10;
class Resident
{
private:
string m_name;
bool m_is_alive;
bool m_is_murderer;
int m_hair_color;
public:
/*Description: Constructor for Resident that provides initial
values to the resident
Pre: None
Post: m_name is set to an appropriate name, m_is_alive is set to true,
m_is_murderer is set to false and hair color is randomly assigned a value [1,10]*/
Resident();
/*Description: hair_color_change() function updates the m_hair_color member
Pre: None
Post: m_hair_color gets the updated color value*/
void hair_color_change(int color);
/*Description: kill_me() function updates the m_is_alive member
Pre: None
Post: m_is_alive gets set to false*/
void kill_me();
/*Description: set_murderer() function updates the m_is_murderer member
Pre: None
Post: m_is_murderer gets set to true*/
void set_murderer();
/*Description: Getter function for m_hair_color
Pre: None
Post: value of m_hair_color is returned*/
int get_hair_color()const;
/*Description: Getter function for m_name
Pre: None
Post: value of m_name is returned*/
string get_name()const;
/*Description: Helper function, overloaded insertion operator
Pre: None
Post: Resident object is printed*/
friend ostream & operator<< (ostream & out, Resident & r)
{
out << r.m_name;
out << (r.m_is_alive ? " is alive," : " is dead,");
out << (r.m_is_murderer ? " is a murderer," : " is not a murderer,");
out << " has hair color " << r.m_hair_color;
return out;
}
};
#endif