Guest User

main

a guest
Apr 1st, 2020
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.10 KB | None | 0 0
  1. from Classes.Game import Person, Bcolor
  2. from Classes.Magic import Spell
  3. from Classes.inventory import Item
  4. import random
  5.  
  6. print("\n")
  7. print("NAME                               HP                                        MP")
  8.  
  9. # Black Magic
  10. Fire = Spell("Fire", 10, 50, "b")
  11. Thunder = Spell("Thunder", 20, 100, "b")
  12. Blizzard = Spell("Blizzard", 30, 150, "b")
  13. Earthquake = Spell("Earthquake", 40, 200, "b")
  14. Water = Spell("Water", 50, 250, "b")
  15.  
  16. # White Magic
  17. Cure = Spell("Cure", 40, 90, "w")
  18. MAXcure = Spell("MAXcure", 80, 120, "w")
  19. MAXIMUM = Spell("MAXIMUM", 20, 5000, "w")
  20.  
  21. # Create some items
  22. potion = Item("Potion", "potion", "Heals 50 HP", 50)
  23. hipotion = Item("HI-Potion", "potion", "Heals 100 HP", 100)
  24. superpotion = Item("SUPER-Potion", "potion", "Heals 200 HP", 200)
  25. elixr = Item("Elixr", "elixr", "Complete restoration of HP/MP for 1 player member", 9999)
  26. megaelixr = Item("MEGA-Elixr", "elixr", "Complete restoration of HP/MP", 9999)
  27.  
  28. grenade = Item("Grenade", "attack", " Deals 500 damage", 500)
  29.  
  30. p_s = [Fire, Blizzard, Thunder, Cure, MAXcure]
  31. e_s = [Fire, Blizzard, MAXIMUM]
  32.  
  33. p_i = [{"item":potion, "quantity":15},
  34.        {"item":hipotion, "quantity":5},
  35.        {"item":superpotion, "quantity":5},
  36.        {"item":elixr, "quantity":2},
  37.        {"item":megaelixr, "quantity":1},
  38.        {"item":grenade, "quantity":3}]
  39.  
  40. # Instantiate People
  41. Player1 = Person("Nitin", 4060, 780, 120, 34, p_s, p_i)
  42. Player2 = Person("Putti", 6060, 990, 380, 44, p_s, p_i)
  43. Player3 = Person("Budda", 2860, 880, 630, 94, p_s, p_i)
  44. Players = [Player1, Player2, Player3]
  45.  
  46. Enemy1 = Person("Thima", 12200, 550, 45, 25, e_s, [])
  47. Enemy2 = Person("Hunch", 1200, 800, 550, 90, e_s, [])
  48. Enemy3 = Person("Sides", 1000, 600, 650, 100, e_s, [])
  49. Enemy = [Enemy1, Enemy2, Enemy3]
  50.  
  51. run = True
  52. i = 0
  53.  
  54. while run:
  55.     for Player in Players:
  56.         Player.g_s()
  57.     for enemy in Enemy:
  58.         enemy.enemy_stat()
  59.     print(Bcolor.FAIL + Bcolor.BOLD + "An Enemy attacks!" + Bcolor.ENDC)
  60.     for Player in Players:
  61.         Player.choose_actions()
  62.         choice = input("     Choose action : ")
  63.         index = int(choice) - 1
  64.  
  65.         if index ==0:
  66.             dm = Player.gen_dm()
  67.             ene = Player.choose_target(Enemy)       # Enemy selects a hero to attack
  68.             Enemy[ene].take_dm(dm)
  69.             print("You attacked " + Enemy[ene].name + " for ", dm, "points of damage.")
  70.  
  71.             if Enemy[ene].get_hp() == 0:              # Delete the dead enemy and display his name
  72.                 print(Enemy[ene].name + " has died")
  73.                 del Enemy[ene]
  74.  
  75.         elif index == 1:
  76.             Player.magic_choice()
  77.             magic_choice = int(input("     Choose magic: ")) - 1    # Line 18 and 19 code style merged in a single line
  78.  
  79.             if magic_choice == -1:        # To switch back to the previous menu page
  80.                 continue
  81.  
  82.             Spell = Player.magic[magic_choice]
  83.             magic_dm = Spell.gen_dm()
  84.  
  85.             current_mp = Player.get_mp()
  86.  
  87.             if Spell.cost > current_mp:
  88.                 print(Bcolor.FAIL + "\nNot enough MP\n" + Bcolor.ENDC)
  89.                 continue
  90.  
  91.             Player.reduce_mp(Spell.cost)
  92.  
  93.             if Spell.type == "w":
  94.                 Player.heal(magic_dm)
  95.                 print(Bcolor.OKBLUE + Spell.name + " heals for", str(magic_dm), " HP" + Bcolor.ENDC)
  96.             elif Spell.type == "b":
  97.                 ene = Player.choose_target(Enemy)
  98.                 Enemy[ene].take_dm(magic_dm)
  99.                 print(Bcolor.OKBLUE + Spell.name + " deals", str(magic_dm), " points of damage to " + Enemy[ene].name + Bcolor.ENDC)
  100.  
  101.                 if Enemy[ene].get_hp() == 0:              # Delete the dead enemy and display his name
  102.                     print(Enemy[ene].name + " has died")
  103.                     del Enemy[ene]
  104.  
  105.         elif index == 2:
  106.             Player.item_choice()
  107.             i_c = int(input("     Choose item: ")) - 1
  108.  
  109.             if i_c == -1:
  110.                 continue        # To switch back to the previous menu page
  111.  
  112.             item = Player.items[i_c]["item"]
  113.  
  114.             if Player.items[i_c]["quantity"] == 0:
  115.                 print(Bcolor.FAIL + "Not enough items" + Bcolor.ENDC)
  116.                 continue
  117.  
  118.             Player.items[i_c]["quantity"] -= 1
  119.  
  120.             if item.type == "potion":
  121.                 Player.heal(item.prop)
  122.                 print(Bcolor.OKBLUE + item.name + " heals for", str(item.prop), " HP" + Bcolor.ENDC)
  123.  
  124.             elif item.type == "elixr":
  125.                 if item.name == "MEGA-Elixr":    # Complete restoration of HP/MP
  126.                     for i in Players:
  127.                         i.hp = i.maxhp
  128.                         i.mp = i.maxmp
  129.                 else:
  130.                     Player.hp = Player.maxhp
  131.                     Player.mp = Player.maxmp
  132.                 print(Bcolor.OKGREEN + item.name + " restores full HP/MP" + Bcolor.ENDC)
  133.  
  134.             elif item.type == "attack":
  135.                 ene = Player.choose_target(Enemy)
  136.                 Enemy[ene].take_dm(item.prop)
  137.                 print(Bcolor.FAIL + item.name + " deals", str(item.prop), "points of damage to " + Enemy[ene].name + Bcolor.ENDC)
  138.  
  139.                 if Enemy[ene].get_hp() == 0:  # Delete the dead enemy and display his name
  140.                     print(Enemy[ene].name + " has died")
  141.                     del Enemy[ene]
  142.  
  143. # Check if battle is over
  144.  
  145.     defeated_enemy = 0
  146.     defeated_player = 0
  147.     for enemy in Enemy:
  148.         if enemy.get_hp() == 0:
  149.             defeated_enemy += 1
  150.  
  151.     # Check if Player won
  152.  
  153.         if defeated_enemy == 2:
  154.             print(Bcolor.OKGREEN + "You win!!" + Bcolor.ENDC)
  155.             run = False
  156.  
  157.     for player in Players:
  158.         if player.get_hp() == 0:
  159.             defeated_player += 1
  160.  
  161.     # Check if Enemy has won
  162.  
  163.         if defeated_player == 2:
  164.             print(Bcolor.FAIL + "You are defeated!!" + Bcolor.ENDC)
  165.             run = False
  166.  
  167.     # Enemy attack Phase
  168.  
  169.     for enemy in Enemy:
  170.         enemy_choice = random.randrange(0, 2)
  171.  
  172.         if enemy_choice == 0:
  173.             target = random.randrange(0, 2)
  174.             Enemy_dm = enemy.gen_dm()
  175.  
  176.             Players[target].take_dm(Enemy_dm)         # Enemy attacks different players
  177.             print("Enemy attacks for ", Enemy_dm)
  178.  
  179.         elif enemy_choice ==  1:
  180.             magic_dm = enemy.enemy_spell()
  181.             print("Enemy chose", Spell.name, "damage is", magic_dm)
  182.  
  183.             enemy.reduce_mp(Spell.cost)
  184.  
  185.             if Spell.type == "w":
  186.                 enemy.heal(magic_dm)
  187.                 print(Bcolor.OKBLUE + Spell.name + " heals " + enemy.name + "for " , str(magic_dm), " HP" + Bcolor.ENDC)
  188.             elif Spell.type == "b":
  189.                 target = random.randrange(0, 2)
  190.                 Players[target].take_dm(magic_dm)
  191.                 print(Bcolor.OKBLUE + enemy.name + "'s" + Spell.name + " deals", str(magic_dm), " points of damage to " + Players[target].name + Bcolor.ENDC)
  192.  
  193.                 if Players[target].get_hp() == 0:  # Delete the dead player and display his name
  194.                     print(Players[target].name + " has died")
  195.                     del Players[target]
Add Comment
Please, Sign In to add comment