Example #1
0
/*
 * modifies the attribute of this virus 
 */ 
bool Virus::evolve_virus(Zone zone){
	// we first check if we want to evolve the virus or not
	// uses randomness, the total number of infected people, level of pollution and healthcare 
	double prob; 
	prob = ((rand() % 100 + 1.0)/100.0) * this->current_infected/zone.get_initial_population() 
		* zone.get_location().pollution * (1.0 - zone.get_location().healthcare);

	if ((rand() % 100 + 1.0)/100.0 > prob) {
		return false;
	}
	
	else { // evolve virus and return true
		// firstly, we want to make this virus immune to past cures and vaccines
		int i = zone.has_virus(this->name);
		// use i to access previous vaccine and cure for this virus, modify them
		zone.get_vaccines()[i].set_id(1); 
		zone.get_cures()[i].set_id(1);
		this->evolved++;
		return true;
	}	
}