diff --git a/python/labs/castle_battle_solution.py b/python/labs/castle_battle_solution.py new file mode 100644 index 0000000..1147d65 --- /dev/null +++ b/python/labs/castle_battle_solution.py @@ -0,0 +1,82 @@ +import random + +class Player: + def __init__(self, name): + self.name = name + self.hit_points = 15 + self.barracks = [] + +class Peon: + def __init__(self, name, job): + self.name = name + self.job = job + +player = Player('player') +computer = Player('computer') + +def createPeon(): + user_choice = input("What should the peon's name be? ") + player.barracks.append(Peon(user_choice, 'nothing')) + +def printPeon(index, peon): + print(str(index) + ": " + peon.name + " = " + peon.job) + +def selectPeon(): + for index in range(0, len(player.barracks)): + printPeon(index, player.barracks[index]) + user_choice = input("Select which peon (use list index)? ") + chosen_peon = player.barracks[int(user_choice)] + user_choice = input("What should the peon do? attack or repair? ") + chosen_peon.job = user_choice + +def runPeon(peon): + if peon.job == 'repair': + print(peon.name + " repairs for 1") + player.hit_points += 1 + elif peon.job == 'attack': + print(peon.name + " attacks for 1") + computer.hit_points -= 1 + +def runComputer(): + hit_points = random.randint(1,5) + choice = random.randint(0,1) + if(choice == 0): + print('computer heals for ' + str(hit_points)) + computer.hit_points += hit_points + else: + print('computer attacks for ' + str(hit_points)) + player.hit_points -= hit_points + +def evaluateGame(): + print('player: ' + str(player.hit_points)) + print('computer: ' + str(computer.hit_points)) + if computer.hit_points <= 0 and player.hit_points <= 0: + print("it's a tie") + return 'tie' + elif computer.hit_points <= 0: + print('you win!') + return 'win' + elif player.hit_points <= 0: + print('you lose') + return 'lose' + else: + return 'continue' + +def startRound(): + user_choice = input("create or select a peon? ") + if user_choice == 'create': + createPeon() + elif user_choice == 'select': + selectPeon() + + for peon in player.barracks: + runPeon(peon) + + runComputer() + + gameState = evaluateGame() + + if gameState == 'continue': + startRound() + +startRound()