coding: utf-8 -*""" Project: Final Group Project Names: Danayet, Filmon, Furqan, Ken, Nebel Date: """ import random def playRound(userMove, compMove, userDmg, compDmg): # print damage done by move print("You did",userMove,"points of damage to your opponent!") print("Your opponent did",compMove,"points of damage to you!") userDmg+=compMove compDmg+=userMove # print damage print("Total Damage to You: ",userDmg) print("Total Damage to Opponent: ",compDmg) return (userDmg,compDmg) player1 = [5,2,4,3] player2 = [4,2,3,5] play = "y" while play.lower() in ("y","yes"): # creates empty array for user and computer players # will be assigned to player1 and player2 values user = [] computer = [] # sets user and computer damage to 0 for the new game userDmg = 0 compDmg = 0 # STORYBOARDS NEEDED # CHOOSE PLAYER while user==[] and computer==[]: # input to choose player playerChoice = input("Pick a player by entering 1 or 2:") # validate input is 1 or 2 if playerChoice.isdigit(): if int(playerChoice)==1: # if they chose player 1: user = player1 computer = player2 elif int(playerChoice)==2: # if they chose player 2 user = player2 computer = player1 # break; else: print("Error: invalid input") else: print("Error: invalid input") """ PLAY A ROUND Collect the user's choice of move Validate their choice Generate random move for computer Play a round and return total damage """ for t in range(4): # validate input is 1, 2, 3, or 4 moveChoice = -1 while moveChoice not in [1,2,3,4]: moveChoice = input("Select move 1, 2, 3, or 4:") # digit is 1, 2, 3, or 4 if moveChoice.isdigit(): if int(moveChoice) in [1,2,3,4]: moveChoice=int(moveChoice) # translate user move choice into index (starts at 0, not 1) else: print("Error: invalid input") else: print("Error: invalid input") compMove = computer[random.randrange(0,4)] userMove = user[moveChoice-1] # play a round and return total damage done so far userDmg, compDmg = playRound(userMove, compMove, userDmg, compDmg) # WHO WON? if compDmg > userDmg: # user won by doing more damage print("You did {0} points of damage while your opponent did {1} points, so you won this round!".format(userDmg,compDmg)) elif userDmg < compDmg: # computer won by doing more damage print("You did {0} points of damage while your opponent did {1} points, so you lost this round.".format(userDmg,compDmg)) else: print("This round is tied.") # PLAY AGAIN? # Ask user if they want to play another round play = input("Would you like to play again? Enter 'y' for yes or 'n' for no:") # validate input until user types Y/y/N/n while play.lower() not in ("yes","y","no","n"): print("Error: invalid input.") play = input("Would you like to play again? Enter y for yes or n for no:") print("Thanks for playing!") Choose Your Own Adventure Purpose In this assignment you will practice with everything you have learned so far in class to create a custom interactive text based game. This project provides you with the opportunity to practice everything you have learned in this course including: • Mastery of the core components of the programming language • Designing a program with flowcharts and pseudocode • Working within a team to develop a program • Reading and debugging programs written by other coders Background Some of the very first computerized role-playing games were text based adventures such as Zork, Oregon Trail, or Legend of the Red Dragon. Often these games involved exploring a location, encountering a foe or trial, and dying in a spectacularly hilarious way. Other text based games are based on existing pencil and paper games such as Hangman or Mastermind. Task You are going to design a game that your classmates will be able to play in class. You may choose to create your own role playing game, or program a simple version of an existing game. No matter which game you choose to program, there are certain things common to all games that you must include: • A set of instructions to direct the player on the rules • A clear goal so the player knows what they are trying to achieve • A means of keeping score to know how well the player performed • Whether they win or lose, a prompt to ask the user if they want to play again, and make sure their response is an acceptable answer (“yes”/“no”, “y”/“n”). Make sure to check the validity for all of your user inputs throughout the program. Don’t let bad input create errors. Notes and Hints: You should start with this program, as with all programs, by breaking the program down into parts. 1. Make a plan: Begin by mapping out the flow of execution in your program. Break it down into different parts and decide what can be broken out into functions (printing instructions, reading the leaderboard file, printing out the leaderboard, validating input, etc.). Your flowchart and pseudocode are part of your deliverables, so take your time to design something that you know you can code. 2. Reuse where possible: Some of the features and functions that you will need for this project have already been written in your previous assignments such as input validation or printing instructions. Find any logic or code that you have already written and turn it into a reusable function within your program. 3. Test your code often. Make sure you have run through every possible scenario that you mapped out in your flowchart. Make sure to test for the “monkey-at-the-keyboard” scenario to validate all user input. 4. Figure out how you will collect the player’s names and keep score for your leaderboard. For Hangman, number of letters correctly guessed; for Mastermind, fewest moves to solution; or for a role playing game, number of foes vanquished. The leaderboard should maintain a list of the top ten players and their scores. It should be printed out at the end of any gaming session after the user has indicated that they don’t want to play anymore. As new users play, more names can be added to the leaderboard.