import random import time def sleep(): time.sleep(1.5) print("") class Player(): def __init__(self, hitpoints, attack): self.hitpoints = hitpoints self.attack = attack def pAttack(self, monster): sleep() diceRoll = random.randint(1,6) if(diceRoll >= 5): criticalHit = (self.attack * 2) - 1 monster.hitpoints -= criticalHit print("You critically hit the monster!") print("You deal {} damage. The monster now has {} hitpoints left".format(criticalHit, monster.hitpoints)) else: monster.hitpoints -= self.attack print("You manage to hit the monster!") print("You deal {} damage. The monster now has {} hitpoints left".format(self.attack, monster.hitpoints)) def pBlock(self): sleep() print("You manage to block the monster's hit!") print("You still have {} hitpoints left".format(self.hitpoints)) def pMisses(self, monster): sleep() print("You miss your swing at the monster!") print("The monster still has {} hitpoints left.".format(monster.hitpoints)) class Monster(): def __init__(self, color, hitpoints, attack): self.color = color self.hitpoints = hitpoints self.attack = attack def mAttack(self, player): sleep() player.hitpoints -= self.attack print("The monster hits its attack!") print("It deals {} damage. You now have {} hitpoints left.".format(self.attack, player.hitpoints)) def mMisses(self, player): sleep() print("The monster misses its attack!") print("You still have {} hitpoints left".format(player.hitpoints)) def mBlock(self): sleep() print("The monster is able to block your attack!") print("The monster still has {} hitpoints left".format(self.hitpoints)) def fightMonster(player, monster): print("The monster has {} attack and {} hitpoints.".format(monster.attack, monster.hitpoints)) print("You have {} attack and {} hitpoints.".format(player.attack, player.hitpoints)) while(True): mIsStunned = False if(player.hitpoints > 0): wantsToAttack = input("Do you want to attack or block? 'A' / 'B'\n\n").upper() if(wantsToAttack == "A"): pDiceRoll = random.randint(1,6) if(pDiceRoll > 3): player.pAttack(monster) else: player.pMisses(monster) else: pDiceRoll = random.randint(1,6) if(pDiceRoll > 3): player.pBlock() print("You stun the monster, it's a guaranteed hit!") mIsStunned = True player.pAttack(monster) else: monster.mAttack(player) if(monster.hitpoints <= 0): print("The monster is all out of hitpoints! You win the battle!") break else: if(mIsStunned): sleep() print("The monster is stunned and unable to attack") else: print("The monster tries to attack you.") mDiceRoll = random.randint(1,6) if(mDiceRoll > 3): monster.mAttack(player) else: monster.mMisses(player) else: print("You are out of hitpoints! You lose the battle!") break def playGame(): myMonster = Monster("red", 15, 2) myPlayer = Player(20, 4) fightMonster(myPlayer, myMonster) playGame()