bribri
unknown
plain_text
2 years ago
12 kB
4
Indexable
import re class Undead: def __init__(self, name=None, hp=None): if name != None and hp != None: self.__hp = hp self.__name = "Undead" + name else: self.__hp = 100 self.__name = "Undead" self.__isDead = False # dead is a boolean def isDead(self, dead=None): if dead == None: return self.__isDead else: self.__isDead = dead def getName(self): return self.__name def getHP(self): return self.__hp def setName(self, name): self.__name = name def setHP(self, hp=None, multiplier=None): if multiplier == None: self.__hp = hp else: self.__hp = self.__hp * multiplier class Zombie(Undead): def __init__(self, name=None, hp=None): super().__init__(name= name, hp =hp) if name != None: super().setName("Zombie" + name) else: super().setName("Zombie" + name) def eat(self,Ename,EHP): super().setHP((EHP * 0.5)+super().getHP()) print(f"{super().getName()} ate {Ename}") print(f"{super().getName()}, HP:{super().getHP()}") print(f"{Ename}, HP:{EHP}") def attack2(self, EHP): return super().getHP()*0.5 def attack(self, EHP): return EHP - (super().getHP()*0.5) class Vampire(Undead): def __init__(self, name=None, hp=None): super().__init__(name=None, hp=None) if name != None: super().setName("Vampire" + name) else: super().setName("Vampire" + name) super().setHP(120) #bite ability def bite(self,Ename,EHP): super().setHP((EHP * 0.8) + super().getHP()) print(f"{super().getName()} bit {Ename}") print(f"{super().getName()}, HP:{super().getHP()}") print(f"{Ename}, HP:{EHP}") def attack2(self,EHP): return self.getHP() #attack def attack(self,EHP): return EHP - self.getHP() class Skeleton(Undead): def __init__(self, name=None, hp=None): super().__init__(name= name, hp =hp) if name != None: super().setName("Skeleton" + name) else: super().setName("Skeleton" + name) super().setHP(80) def attack2(self, EHP): return super().getHP()*0.7 def attack(self, EHP): return EHP - (super().getHP()*0.7) class Ghost(Undead): def __init__(self, name=None, hp=None): super().__init__(name= name, hp =hp) if name != None: super().setName("Ghost" + name) else: super().setName("Ghost"+name) super().setHP(50) def hunt(self,Ename,EHP): super().setHP((EHP * 0.1)+super().getHP()) print(f"{super().getName()} hunted {Ename}") print(f"{super().getName()}, HP:{super().getHP()}") print(f"{Ename}, HP:{EHP}") def attack(self, EHP): return EHP - (super().getHP()*0.2) class Lich(Skeleton): def __init__(self, name=None, hp=None): super().__init__(name= name, hp =hp) if name != None: super().setName("Lich" + name) else: super().setName("Lich" + name) def spell(self,Ename,EHP): super().setHP((EHP * 0.1) + super().getHP()) print(f"{super().getName()} put a spell on {Ename}") return EHP *0.1 class Mummy(Undead): def __init__(self, name=None, hp=None): super().__init__(name= name, hp =hp) if name != None: super().setName("Mummy" + name) else: super().setName("Mummy" + name) # return EHP.getHP() def attack2(self, EHP): EHP = (self.getHP() * 0.5) + (EHP * 0.10) return EHP def attack(self, EHP): EHP = abs(EHP - ((self.getHP() * 0.5) + (EHP * 0.10))) return EHP print("=============================================") print(" W E L C O M E T O T H E U N D E A D ") print("=============================================") arr = [] x = int(0) while x != 4: print("\n[1] Create UNDEAD") print("[2] Command") print("[3] Display") x = int(input("\nYour Choice: ")) if x == 1: print("\n" + "===========================") print(" Undead Game Menu ") print("===========================") print("Choose your Undead") print(" a. Zombie") print(" b. Vampire") print(" c. Skeleton") print(" d. Ghost ") print(" e. Lich") print(" f. Mummy ") c = input("Enter your choice: ") print(" ") if re.search(c, "a", re.IGNORECASE): num = int(input("How many Zombie/s do you want to print? ")) for i in range(num): customize = input("Do you want to customize name Y/N - ") if re.search(customize, "Y", re.IGNORECASE): name = input() arr.append(Zombie(name="-" + name)) else: arr.append(Zombie(str(i + 1))) elif re.search(c, "b", re.IGNORECASE): num = int(input("How many Vampire/s do you want to print? ")) for i in range(num): customize = input("Do you want to customize name Y/N - ") if re.search(customize, "Y", re.IGNORECASE): name = input() arr.append(Vampire(name="-" + name)) else: arr.append(Vampire(str(i + 1))) elif re.search(c, "c", re.IGNORECASE): num = int(input("How many Skeleton/s do you want to print? ")) for i in range(num): customize = input("Do you want to customize name Y/N - ") if re.search(customize, "Y", re.IGNORECASE): name = input() arr.append(Skeleton(name="-" + name)) else: arr.append(Skeleton(str(i + 1))) elif re.search(c, "d", re.IGNORECASE): num = int(input("How many Ghost/s do you want to print? ")) for i in range(num): customize = input("Do you want to customize name Y/N - ") if re.search(customize, "Y", re.IGNORECASE): name = input() arr.append(Ghost(name="-" + name)) else: arr.append(Ghost(str(i + 1))) elif re.search(c, "e", re.IGNORECASE): num = int(input("How many Lich/es do you want to print? ")) for i in range(num): customize = input("Do you want to customize name Y/N - ") if re.search(customize, "Y", re.IGNORECASE): name = input() arr.append(Lich(name="-" + name)) else: arr.append(Lich(str(i + 1))) elif re.search(c, "f", re.IGNORECASE): num = int(input("How many Mummy/ies do you want to print? ")) for i in range(num): customize = input("Do you want to customize name Y/N - ") if re.search(customize, "Y", re.IGNORECASE): name = input() arr.append(Mummy(name="-" + name)) else: arr.append(Mummy(str(i + 1))) elif x == 2: print('\n=====================================') print(" Which one do you want to command?\n ") for j, print_undead in enumerate(arr): print(f"[{j+1}] {arr[j].getName()}") undead_index = enumerate(arr) undead_attacker = int(input("\nPlease choose an undead - ")) undead_attacker = undead_attacker - 1 for k, index in enumerate(arr): if undead_attacker == k: print('\n=====================================================') print(" You have selected:", arr[k].getName(), "To attack!") else: continue # select skill area # for i in range(len(arr)): ability = [] properties = [method for method in dir(arr[k])] for y in properties: if y in ["attack", "spell", "hunt", "eat", "bite"]: ability.append(y) print(f"\nName: {arr[k].getName()}") for z in range(len(ability)): print(f"{z + 1} {ability[z]}") move = int(input("\nWhich move would you like to use? - ")) - 1 print("\nPlease choose which undead you want to attack - ") for undead, undead_obj in enumerate(arr): if arr[k].getName() != arr[undead].getName(): print(f"{undead + 1} {undead_obj.getName()}") enemy = int(input()) - 1 if ability[move] == "attack" and isinstance(arr[enemy], Ghost): print(f"{arr[k].getName()} attacked {arr[enemy].getName()}") arr[enemy].setHP(arr[enemy].getHP() - (0.1*(arr[k].attack2(arr[enemy].getHP())))) print(f"Name: {arr[k].getName()} HP: {arr[k].getHP()}") print(f"Name: {arr[enemy].getName()} HP: {arr[enemy].getHP()}") elif ability[move] == "attack": arr[enemy].setHP(arr[k].attack(arr[enemy].getHP())) print(f"{arr[k].getName()} attacked {arr[enemy].getName()}") print(f"Name: {arr[k].getName()} HP: {arr[k].getHP()}") print(f"Name: {arr[enemy].getName()} HP: {arr[enemy].getHP()}") if isinstance(arr[enemy], Mummy): if arr[enemy].getHP() <= 0: print("HP Reduced to 0. Reviving...") arr[enemy].setHP(100) elif ability[move] == "eat" or ability[move] == "bite" or ability[move] == "hunt" or ability[ move] == "spell": if ability[move] == "eat": arr[k].eat(arr[enemy].getName(), arr[enemy].getHP()) elif ability[move] == "bite": arr[k].bite(arr[enemy].getName(), arr[enemy].getHP()) elif ability[move] == "hunt": arr[k].hunt(arr[enemy].getName(), arr[enemy].getHP()) elif ability[move] == "spell": arr[enemy].setHP(arr[enemy].getHP() - arr[k].spell(arr[enemy].getName(), arr[enemy].getHP())) print(f"Name: {arr[k].getName()} HP: {arr[k].getHP()}") print(f"Name: {arr[enemy].getName()} HP: {arr[enemy].getHP()}") elif x == 3: print("\n=========================================") print(" U N D E A D C H A R A C T E R S ") print("=========================================") for i in range(len(arr)): print(f"\nName: {arr[i].getName()}") print(f"HP: {arr[i].getHP()}") if isinstance(arr[i], Vampire) or isinstance(arr[i], Lich): print("State: Alive") else: if arr[i].getHP()<=0: arr[i].isDead(True) print("State: Dead") else: print("State: Alive")
Editor is loading...