import random class Move: def __init__(self, name:str,dmg:range): self.name = name, self.dmg = dmg class Character: def __init__(self, name:str,max_hp:float,hp:float,atk_bonus:float,defense:float,moves:dict): print(type(moves)) self.name = name self.max_hp = max_hp self.hp = hp self.atk_bonus = atk_bonus self.defense = defense self.moves = moves self.chosen_input = None def damage(self, amt:float): self.hp -= amt if self.hp <= 0: print(self.name, "is dead!") def attack(self, char,move:str): dmg_amt = random.choice(self.moves[move].dmg) char.damage(dmg_amt) print(self.name,"attacked",char.name,"and dealed",dmg_amt,"damage!") if char.hp > 0: print(char.name,"is now", str(char.hp)+"/"+str(char.max_hp),"HP") class Enemy(Character): pass players = [] players.append(Character("daniel",100,100,1,4,{"hit" : Move("hit",range(10,20))})) enemies = [] enemies.append(Enemy("cull obsidian",100,100,1,4,{"hit" : Move("hit",range(10,20))})) def make_choices(): for plr in players: print("Current Player:",plr.name) print( "\nActions:","\n", "[a] Attack","\n", "[d] Defend","\n", "[h] Heal","\n", "[x] Quit","\n", ) plr_input = input("Your choice?: ") if plr_input == "a": print("Attacking") #print("Who do you want to attack?: ") for i in range(len(enemies)): print(" ["+str(i)+"]",enemies[i].name,str(enemies[i].hp)+"/"+str(enemies[i].max_hp)) print(" [x] Cancel\n") chosen_enemy = input("Who do you want to attack?: ") if chosen_enemy == "x": print("Cancelling attack...") else: if chosen_enemy.isnumeric(): if int(chosen_enemy) >= 0 and int(chosen_enemy) < len(enemies): plr.attack(enemies[int(chosen_enemy)],"hit") if enemies[int(chosen_enemy)].hp <= 0: enemies.pop(int(chosen_enemy)) else: print("\n ----- Not a valid enemy ----- \n") else: print("Not a valid option.") elif plr_input == "d": print("Defending") elif plr_input == "h": print("Healing") elif plr_input == "x": return else: print("\nInvalid input. Please choose a valid option\n") def ask_input(): print( "\nActions:","\n", "[a] Attack","\n", "[d] Defend","\n", "[h] Heal","\n", "[x] Quit","\n", ) plr_input = input("Your choice?: ") if plr_input == "a": print("Attacking") #print("Who do you want to attack?: ") for i in range(len(enemies)): print(" ["+str(i)+"]",enemies[i].name,str(enemies[i].hp)+"/"+str(enemies[i].max_hp)) print(" [x] Cancel\n") chosen_enemy = input("Who do you want to attack?: ") if chosen_enemy == "x": print("Cancelling attack...") else: if chosen_enemy.isnumeric(): if int(chosen_enemy) >= 0 and int(chosen_enemy) < len(enemies): plr.attack(enemies[int(chosen_enemy)],"hit") if enemies[int(chosen_enemy)].hp <= 0: enemies.pop(int(chosen_enemy)) else: print("\n ----- Not a valid enemy ----- \n") else: print("Not a valid option.") elif plr_input == "d": print("Defending") elif plr_input == "h": print("Healing") elif plr_input == "x": return else: print("\nInvalid input. Please choose a valid option\n") ask_input() ask_input() print("Thanks for playing") print(plr.hp)