Advertisement
luther9

turnbasedpokemonstylegame

Sep 4th, 2015
380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.67 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. # 2015 Luther Thompson
  4. # This program is public domain (Creative Commons 0).
  5.  
  6. # Project suggested at:
  7. # https://www.reddit.com/r/beginnerprojects/comments/1aw0iq/project_turn_based_pokemon_style_game/
  8.  
  9. import cmd
  10. import random
  11.  
  12.  
  13. class Character:
  14.     hp = maxhp = 100
  15.  
  16.     def __init__(self, name):
  17.         self.name = name
  18.  
  19.     def damage(self, enemy, lo, hi, description):
  20.         damage = random.randrange(lo, hi)
  21.         enemy.hp -= damage
  22.         return description.format(self.name, damage)
  23.  
  24.     def bite(self, enemy):
  25.         return self.damage(enemy, 18, 26, '{0} bites for {1} damage.')
  26.  
  27.     def flame(self, enemy):
  28.         return self.damage(enemy, 10, 36, '{0} flames for {1} damage.')
  29.  
  30.     def heal(self, enemy):
  31.         amount = random.randrange(18, 26)
  32.         self.hp = min(self.maxhp, self.hp + amount)
  33.         return '{0} heals for {1} HP.'.format(self.name, amount)
  34.  
  35.  
  36. player = Character('Player')
  37. cpu = Character('CPU')
  38.  
  39.  
  40. def printHP():
  41.     for p in player, cpu:
  42.         print('{0.name} HP: {0.hp}'.format(p))
  43.  
  44.  
  45. def doMove(actor, enemy, move):
  46.     print(getattr(actor, move)(enemy))
  47.  
  48.  
  49. def doTurn(cmd):
  50.     doMove(player, cpu, cmd)
  51.     if cpu.hp <= 0:
  52.         printHP()
  53.         return True
  54.     cpuMove = 'bite' if player.hp <= 18 else 'heal' if cpu.hp <= 35 else 'flame'
  55.     doMove(cpu, player, cpuMove)
  56.     printHP()
  57.     if player.hp <= 0:
  58.         return True
  59.  
  60.  
  61. class Shell(cmd.Cmd):
  62.     prompt = '> '
  63.  
  64.     def do_bite(self, arg):
  65.         return doTurn('bite')
  66.  
  67.     def do_flame(self, arg):
  68.         return doTurn('flame')
  69.  
  70.     def do_heal(self, arg):
  71.         return doTurn('heal')
  72.  
  73.  
  74. Shell().cmdloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement