#!/usr/bin/env python ### ''' http://www.reddit.com/r/learnpython/comments/19j8un/text_adventure_help/ ''' import time import random class Character: def __init__(self, speed, health, name): self.name = name self.healthmax = health self.health = health self.speed = speed def damage(self, enemy, damage): enemy.health = enemy.health - damage if damage == 0: print "%s evades %s attck!" % (enemy.name, self.name) else: print "%s hurts %s for %s!" % (self.name, enemy.name, damage) return enemy.health <= 0 def speedCheck(self, player, enemy): if player.speed > enemy.speed: return True else: return False class Enemy(Character): def __init__(self, player, name, speed, health): Character.__init__(self, speed, health, name) self.name = name self.health = health self.healthmax = health class Player(Character): def __init__(self, name, speed, health): Character.__init__(self, speed, health, name) self.fight = False self.enemy = None def quit(self): print "%s Exits the game." % self.name self.health = 0 def help(self): global Commands print Commands.keys() def status(self): print "%s health: %s/%s [Combat = %s]" % (self.name, self.health, self.healthmax, self.fight) def startFight(self): print 'What speed do you want the monster to have?' speedIn = int(raw_input("> ")) enemyName = "Downvoter" self.enemy = Enemy(self, enemyName, speedIn, 10) print "%s encounters a %s!" % (self.name, enemyName) self.fight = True def attack(self): if self.fight == False: print "%s bats stupidly at the air..." % self.name else: if self.speedCheck(self, self.enemy): if self.damage(self.enemy, 10): print "%s executes %s!" % (self.name, self.enemy.name) self.enemy = None self.fight = False else: self.enemy_attacks() def enemy_attacks(self): if self.enemy.damage(self, 10): print "%s was murdered by %s" % (self.name, self.enemy.name) def main(): global Commands Commands = { 'quit': Player.quit, 'help': Player.help, 'status': Player.status, 'fight': Player.startFight, 'attack': Player.attack, } print "What is your name?" userName = str(raw_input("> ")) P = Player(userName, 10, 10) while P.health > 0: indicate = raw_input("> ") args = indicate.split() if len(args) > 0: commandFound = False for c in Commands.keys(): if args[0] == c[:len(args[0])]: Commands[c](P) commandFound = True break if not commandFound: print "%s does not understand..." % P.name if __name__ == '__main__': main()