Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- # 2015 Luther Thompson
- # This program is public domain (Creative Commons 0).
- # Project suggested at:
- # https://www.reddit.com/r/beginnerprojects/comments/1aw0iq/project_turn_based_pokemon_style_game/
- import cmd
- import random
- class Character:
- hp = maxhp = 100
- def __init__(self, name):
- self.name = name
- def damage(self, enemy, lo, hi, description):
- damage = random.randrange(lo, hi)
- enemy.hp -= damage
- return description.format(self.name, damage)
- def bite(self, enemy):
- return self.damage(enemy, 18, 26, '{0} bites for {1} damage.')
- def flame(self, enemy):
- return self.damage(enemy, 10, 36, '{0} flames for {1} damage.')
- def heal(self, enemy):
- amount = random.randrange(18, 26)
- self.hp = min(self.maxhp, self.hp + amount)
- return '{0} heals for {1} HP.'.format(self.name, amount)
- player = Character('Player')
- cpu = Character('CPU')
- def printHP():
- for p in player, cpu:
- print('{0.name} HP: {0.hp}'.format(p))
- def doMove(actor, enemy, move):
- print(getattr(actor, move)(enemy))
- def doTurn(cmd):
- doMove(player, cpu, cmd)
- if cpu.hp <= 0:
- printHP()
- return True
- cpuMove = 'bite' if player.hp <= 18 else 'heal' if cpu.hp <= 35 else 'flame'
- doMove(cpu, player, cpuMove)
- printHP()
- if player.hp <= 0:
- return True
- class Shell(cmd.Cmd):
- prompt = '> '
- def do_bite(self, arg):
- return doTurn('bite')
- def do_flame(self, arg):
- return doTurn('flame')
- def do_heal(self, arg):
- return doTurn('heal')
- Shell().cmdloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement