Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from Classes.Game import Person, Bcolor
- from Classes.Magic import Spell
- from Classes.inventory import Item
- import random
- print("\n")
- print("NAME HP MP")
- # Black Magic
- Fire = Spell("Fire", 10, 50, "b")
- Thunder = Spell("Thunder", 20, 100, "b")
- Blizzard = Spell("Blizzard", 30, 150, "b")
- Earthquake = Spell("Earthquake", 40, 200, "b")
- Water = Spell("Water", 50, 250, "b")
- # White Magic
- Cure = Spell("Cure", 40, 90, "w")
- MAXcure = Spell("MAXcure", 80, 120, "w")
- MAXIMUM = Spell("MAXIMUM", 20, 5000, "w")
- # Create some items
- potion = Item("Potion", "potion", "Heals 50 HP", 50)
- hipotion = Item("HI-Potion", "potion", "Heals 100 HP", 100)
- superpotion = Item("SUPER-Potion", "potion", "Heals 200 HP", 200)
- elixr = Item("Elixr", "elixr", "Complete restoration of HP/MP for 1 player member", 9999)
- megaelixr = Item("MEGA-Elixr", "elixr", "Complete restoration of HP/MP", 9999)
- grenade = Item("Grenade", "attack", " Deals 500 damage", 500)
- p_s = [Fire, Blizzard, Thunder, Cure, MAXcure]
- e_s = [Fire, Blizzard, MAXIMUM]
- p_i = [{"item":potion, "quantity":15},
- {"item":hipotion, "quantity":5},
- {"item":superpotion, "quantity":5},
- {"item":elixr, "quantity":2},
- {"item":megaelixr, "quantity":1},
- {"item":grenade, "quantity":3}]
- # Instantiate People
- Player1 = Person("Nitin", 4060, 780, 120, 34, p_s, p_i)
- Player2 = Person("Putti", 6060, 990, 380, 44, p_s, p_i)
- Player3 = Person("Budda", 2860, 880, 630, 94, p_s, p_i)
- Players = [Player1, Player2, Player3]
- Enemy1 = Person("Thima", 12200, 550, 45, 25, e_s, [])
- Enemy2 = Person("Hunch", 1200, 800, 550, 90, e_s, [])
- Enemy3 = Person("Sides", 1000, 600, 650, 100, e_s, [])
- Enemy = [Enemy1, Enemy2, Enemy3]
- run = True
- i = 0
- while run:
- for Player in Players:
- Player.g_s()
- for enemy in Enemy:
- enemy.enemy_stat()
- print(Bcolor.FAIL + Bcolor.BOLD + "An Enemy attacks!" + Bcolor.ENDC)
- for Player in Players:
- Player.choose_actions()
- choice = input(" Choose action : ")
- index = int(choice) - 1
- if index ==0:
- dm = Player.gen_dm()
- ene = Player.choose_target(Enemy) # Enemy selects a hero to attack
- Enemy[ene].take_dm(dm)
- print("You attacked " + Enemy[ene].name + " for ", dm, "points of damage.")
- if Enemy[ene].get_hp() == 0: # Delete the dead enemy and display his name
- print(Enemy[ene].name + " has died")
- del Enemy[ene]
- elif index == 1:
- Player.magic_choice()
- magic_choice = int(input(" Choose magic: ")) - 1 # Line 18 and 19 code style merged in a single line
- if magic_choice == -1: # To switch back to the previous menu page
- continue
- Spell = Player.magic[magic_choice]
- magic_dm = Spell.gen_dm()
- current_mp = Player.get_mp()
- if Spell.cost > current_mp:
- print(Bcolor.FAIL + "\nNot enough MP\n" + Bcolor.ENDC)
- continue
- Player.reduce_mp(Spell.cost)
- if Spell.type == "w":
- Player.heal(magic_dm)
- print(Bcolor.OKBLUE + Spell.name + " heals for", str(magic_dm), " HP" + Bcolor.ENDC)
- elif Spell.type == "b":
- ene = Player.choose_target(Enemy)
- Enemy[ene].take_dm(magic_dm)
- print(Bcolor.OKBLUE + Spell.name + " deals", str(magic_dm), " points of damage to " + Enemy[ene].name + Bcolor.ENDC)
- if Enemy[ene].get_hp() == 0: # Delete the dead enemy and display his name
- print(Enemy[ene].name + " has died")
- del Enemy[ene]
- elif index == 2:
- Player.item_choice()
- i_c = int(input(" Choose item: ")) - 1
- if i_c == -1:
- continue # To switch back to the previous menu page
- item = Player.items[i_c]["item"]
- if Player.items[i_c]["quantity"] == 0:
- print(Bcolor.FAIL + "Not enough items" + Bcolor.ENDC)
- continue
- Player.items[i_c]["quantity"] -= 1
- if item.type == "potion":
- Player.heal(item.prop)
- print(Bcolor.OKBLUE + item.name + " heals for", str(item.prop), " HP" + Bcolor.ENDC)
- elif item.type == "elixr":
- if item.name == "MEGA-Elixr": # Complete restoration of HP/MP
- for i in Players:
- i.hp = i.maxhp
- i.mp = i.maxmp
- else:
- Player.hp = Player.maxhp
- Player.mp = Player.maxmp
- print(Bcolor.OKGREEN + item.name + " restores full HP/MP" + Bcolor.ENDC)
- elif item.type == "attack":
- ene = Player.choose_target(Enemy)
- Enemy[ene].take_dm(item.prop)
- print(Bcolor.FAIL + item.name + " deals", str(item.prop), "points of damage to " + Enemy[ene].name + Bcolor.ENDC)
- if Enemy[ene].get_hp() == 0: # Delete the dead enemy and display his name
- print(Enemy[ene].name + " has died")
- del Enemy[ene]
- # Check if battle is over
- defeated_enemy = 0
- defeated_player = 0
- for enemy in Enemy:
- if enemy.get_hp() == 0:
- defeated_enemy += 1
- # Check if Player won
- if defeated_enemy == 2:
- print(Bcolor.OKGREEN + "You win!!" + Bcolor.ENDC)
- run = False
- for player in Players:
- if player.get_hp() == 0:
- defeated_player += 1
- # Check if Enemy has won
- if defeated_player == 2:
- print(Bcolor.FAIL + "You are defeated!!" + Bcolor.ENDC)
- run = False
- # Enemy attack Phase
- for enemy in Enemy:
- enemy_choice = random.randrange(0, 2)
- if enemy_choice == 0:
- target = random.randrange(0, 2)
- Enemy_dm = enemy.gen_dm()
- Players[target].take_dm(Enemy_dm) # Enemy attacks different players
- print("Enemy attacks for ", Enemy_dm)
- elif enemy_choice == 1:
- magic_dm = enemy.enemy_spell()
- print("Enemy chose", Spell.name, "damage is", magic_dm)
- enemy.reduce_mp(Spell.cost)
- if Spell.type == "w":
- enemy.heal(magic_dm)
- print(Bcolor.OKBLUE + Spell.name + " heals " + enemy.name + "for " , str(magic_dm), " HP" + Bcolor.ENDC)
- elif Spell.type == "b":
- target = random.randrange(0, 2)
- Players[target].take_dm(magic_dm)
- print(Bcolor.OKBLUE + enemy.name + "'s" + Spell.name + " deals", str(magic_dm), " points of damage to " + Players[target].name + Bcolor.ENDC)
- if Players[target].get_hp() == 0: # Delete the dead player and display his name
- print(Players[target].name + " has died")
- del Players[target]
Add Comment
Please, Sign In to add comment