def __spawn_NPCs(self, population_size): for _ in range(0, population_size): NPC_type = randint(1, 4) if NPC_type == 1: # Person p = Person() self.__NPC_list.append(p) p.add_observer(self) self.__num_people += 1 elif NPC_type == 2: # Zombie z = Zombie() self.__NPC_list.append(z) z.add_observer(self) self.__num_monsters += 1 elif NPC_type == 3: # Vampire v = Vampire() self.__NPC_list.append(v) v.add_observer(self) self.__num_monsters += 1 elif NPC_type == 4: # Ghoul g = Ghoul() self.__NPC_list.append(g) g.add_observer(self) self.__num_monsters += 1 else: # Werewolf w = Werewolf() self.__NPC_list.append(w) w.add_observer(self) self.__num_monsters += 1
def __create_NPCs(self, num_NPCs): for x in range(0, num_NPCs): NPC_type = randint(0, 4) if NPC_type == 0: # Person person = Person() self.__NPCs.append(person) person.add_observer(self) self.__num_persons += 1 elif NPC_type == 1: # Zombie zombie = Zombie() self.__NPCs.append(zombie) zombie.add_observer(self) self.__num_monsters += 1 elif NPC_type == 2: # Vampire vampire = Vampire() self.__NPCs.append(vampire) vampire.add_observer(self) self.__num_monsters += 1 elif NPC_type == 3: # Ghoul ghoul = Ghoul() self.__NPCs.append(ghoul) ghoul.add_observer(self) self.__num_monsters += 1 elif NPC_type == 4: # Werewolf werewolf = Werewolf() self.__NPCs.append(werewolf) werewolf.add_observer(self) self.__num_monsters += 1
def update(self, obj_type): self.__num_monsters -= 1 self.__NPC_list.remove(obj_type) super().update_observers(obj_type) # Updating the neighborhood self.__num_people += 1 p = Person() self.__NPC_list.append(p) p.add_observer(self)
def update_observer(self, obj): # get rid of a monster, update neighborhood of change self.__num_monsters -= 1 self.__NPCs.remove(obj) super().update_observable(obj) # add a person self.__num_persons += 1 person = Person() self.__NPCs.append(person) person.add_observer(self)
def __init__(self, count): self.Persons =[] self.Zombies = [] self.Vampires = [] self.Ghouls = [] self.Werewolves = [] numMonsters = random.randint(1,10) print ("Home " + str(count) + " has " + str(numMonsters) + " creatures") for x in range(numMonsters): monsterType = random.randint(1,5) #newMonster.add_Observer(newHome) if (monsterType == 1): newMonster = Werewolf() self.Werewolves.append(newMonster) elif (monsterType == 2): newMonster = Person() self.Persons.append(newMonster) elif (monsterType == 3): newMonster = Zombie() self.Zombies.append(newMonster) elif (monsterType == 4): newMonster = Vampire() self.Vampires.append(newMonster) elif (monsterType == 5): newMonster = Ghoul() self.Ghouls.append(newMonster)
def __init__(self, count): super(House, self).__init__() self.Name = "House " + str(count) self.Persons = [] self.Zombies = [] self.Vampires = [] self.Ghouls = [] self.Werewolves = [] numMonsters = random.randint(1, 10) for x in range(numMonsters): monsterType = random.randint(1, 5) if (monsterType == 1): newMonster = Person() self.Persons.append(newMonster) elif (monsterType == 2): newMonster = Zombie() self.Zombies.append(newMonster) elif (monsterType == 3): newMonster = Vampire() self.Vampires.append(newMonster) elif (monsterType == 4): newMonster = Ghoul() self.Ghouls.append(newMonster) elif (monsterType == 5): newMonster = Werewolf() self.Werewolves.append(newMonster) if (newMonster.Name != "Person"): self.add_Observer(newMonster) if (len(self.observers) == 0): self.Name = self.Name + ": SAFE" self.update()
def updatePop(self): for i in range(len(self.npcs)): if(self.npcs[i].getHP()<1): self.npcs[i] = Person();
def updateObserver(self, object): self.occupants.remove(object) self.occupants.append(Person()) self.numMonsters -= 1 Observable.update(self)
def getAttacked(self, damage, weapon): for x in range(len(self.Zombies)): if (weapon.Name == "SourStraw"): self.Zombies[x].HP = self.Zombies[x].HP - (damage * 2) print("Zombie " + str(x) + " lost " + str(damage * 2) + " HP (It's very effective!)") else: self.Zombies[x].HP = self.Zombies[x].HP - damage print("Zombie " + str(x) + " lost " + str(damage) + " HP") if (self.Zombies[x].HP < 0): print("Zombie " + str(x) + " is now a Person!") self.Zombies[x].update() for x in range(len(self.Vampires)): if (weapon.Name != "ChocolateBar"): self.Vampires[x].HP = self.Vampires[x].HP - damage print("Vampire " + str(x) + " lost " + str(damage) + " HP") else: print("Vampire " + str(x) + " was unaffected") if (self.Vampires[x].HP < 0): print("Vampire " + str(x) + " is now a Person!") self.Vampires[x].update() for x in range(len(self.Ghouls)): if (weapon.Name == "ChocolateBar"): self.Ghouls[x].HP = self.Ghouls[x].HP - (damage * 5) print("Ghoul " + str(x) + " lost " + str(damage * 5) + " HP (It's incredibly effective!)") else: self.Ghouls[x].HP = self.Ghouls[x].HP - damage print("Ghoul " + str(x) + " lost " + str(damage) + " HP") if (self.Ghouls[x].HP < 0): print("Ghoul " + str(x) + " is now a Person!") self.Ghouls[x].update() for x in range(len(self.Werewolves)): if (weapon.Name == "HersheysKiss") or (weapon.Name == "NerdBomb"): self.Werewolves[x].HP = self.Werewolves[x].HP - damage print("Werewolf " + str(x) + " lost " + str(damage) + " HP") else: print("Werewolf " + str(x) + " was unaffected") if (self.Werewolves[x].HP < 0): print("Werewolf " + str(x) + " is now a Person!") self.Werewolves[x].update() monstersDefeated = 0 #Remove each monster that was turned back into a human from the monster and observer lists for x in reversed(self.Zombies): if (x.HP < 0): self.Zombies.remove(x) self.remove_Observer(x) monstersDefeated = monstersDefeated + 1 for x in reversed(self.Vampires): if (x.HP < 0): self.Vampires.remove(x) self.remove_Observer(x) monstersDefeated = monstersDefeated + 1 for x in reversed(self.Ghouls): if (x.HP < 0): self.Ghouls.remove(x) self.remove_Observer(x) monstersDefeated = monstersDefeated + 1 for x in reversed(self.Werewolves): if (x.HP < 0): self.Werewolves.remove(x) self.remove_Observer(x) monstersDefeated = monstersDefeated + 1 for x in range(monstersDefeated): newPerson = Person() self.Persons.append(newPerson) self.update()