Problem A.Bark Scale
Write a function sound(weight) that takes in a single positive integer value weight, representing the weight of a given dog, rounded to the nearest pound. The function returns a string representing what the dogs bark would probably sound like, based on the following scale:
- Less than 13 lbs: Yip
- 13 30 lbs: Ruff
- 31 70 lbs: Bark
- More than 70 lbs: Boof
Constraints:
- Do not import/use any Python modules.
- Do not use the input() function,
- Your submission should have no code outside of function definitions (comments are fine)
Examples:
>>> sound(13)
Ruff
>>> sound(12)
Yip
>>> sound(50)
Bark
>>> sound(10000)
Boof
Problem B. Text Adventure Choice
Some of the earliest computer games developed were Interactive Fiction games, in which the users environment is described in text, and the user makes choices using text commands. In this problem and the next one, well be developing a very simple text-based adventure game. Every choice in this game will have exactly three options, so we can write a function that works for any of them.
Write a function choice(text,option1,option2,option3), that takes in four string values. text is a string representing the prompt for a choice in a text adventure game, and option1, option2, and option3 are strings representing the three possible options. The function should print out the text, and then print out the options (label them with 1., 2., and 3.). Next, the input() function should be used to prompt the user to choose 1, 2, or 3; if the user does not choose one of those options, then the function must print Invalid option and prompt the user again (use a while loop for this).
Finally, the function should return the one character string that represents the users choice: 1, 2, or
3. See the examples below for an idea of how to format the printing and input functions: you dont have to match it exactly but it should be roughly the same.
Constraints:
- Do not import/use any Python modules.
- Your submission should have no code outside of function definitions (comments are fine)
Examples (text in bold is returned, text in red is user input, text in italics is printed):
>>> choice(You have no idea how to approach this problem.,
Go to office hours,
Send an email to the TAs,
Post the problem online, theres no way Ill be caught) You have no idea how to approach this problem.
- Go to office hours
- Send an email to the TAs
- Post the problem online, theres no way Ill be caught
Choose 1, 2, or 3: 1
1
>>> choice(You must decide the fate of the galaxy.,
Destroy the robots,
Control the robots,
Merge with the robots?)
You must decide the fate of the galaxy.
- Destroy the robots
- Control the robots
- Merge with the robots?
Choose 1, 2, or 3: 4
Invalid option
Choose 1, 2, or 3: Sing at the robots
Invalid option
Choose 1, 2, or 3: -2
Invalid option
Choose 1, 2, or 3: 2
2
>>> choice(Choose a house.,
Black Eagles,
Slytherin,
Team Instinct) Choose a house.
- Black Eagles
- Slytherin
- Team Instinct
Choose 1, 2, or 3: Black Eagles
Invalid option
Choose 1, 2, or 3: 3 3
Problem C. (20 points) Text Adventure Game
Using the function from the previous problem, write a function adventure() which takes in no arguments, and gives the user a sequence of choices, leading to one of several endings. Since we want this problem to not be impossible to grade, you need to follow a very specific choice structure, namely the one outlined in the flowchart below:
Each diamond represents a decision, for which you must use your choice function from problem B. Each arrow represents one of the three possible choices for that decision: 1, 2, or 3. Each rounded box represents an ending to the story, which comes in one of two possible types: Good (the user succeeds in some way) or Bad (the user fails). The story itself is entirely up to you, with one exception: you cant use the one in the example below. We will not be grading you based on the storys quality, logic, originality, or grammatical correctness, so if youre lazy and just want to put in empty strings for every single choice, thats fine, but you must follow the choice structure in the flowchart above.
Your function should return the boolean value (not the string) True if the user reached a Good ending, or False if they reached a Bad ending. You can put in a few additional print statements beyond the ones inside the choice function to better explain the story, but this is not required.
Hints:
- There are two basic ways to do this. You could put in nested if statements for every possible combination of decisions, which will result in a lot of repeated code, since there are multiple paths to two of the decision points. Or, you could treat this as a state machine. In particular, if we label each decision as shown below, youll notice that every path through the flowchart passes throughpasses goes through states (decisions) in an increasing order (a path may skip some states, but it will never go from a higher numbered state, down to a lower numbered one).
- You can take advantage of the above by using an extra variable to track what state the user is currently in (what number decision point they are currently at), and changing it every time they make a choice. For each state starting at 1 and ending at 5, check whether the user is in that state, and only give them the respective choice if they are. Since all paths go through states in an increasing numerical order, you only have to check each state once.
Constraints:
- Do not import/use any Python modules
- Your submission should have no code outside of function definitions (comments are fine).
- You must use the choice() function from problem B.
Examples (text in bold is returned, text in red is user input, text in italics is printed. Note that because you are required to have a different story than mine, the printed text should not match, but the same sequence of inputs should lead to the same return value):
>>> adventure()
You sneak into the dragons lair, with your comrades Wizard
McBlastyFace and Steve the Bard. The dragon is fast asleep.
- Tickle the dragon on the nose
- Tell your team to start stealing things
- Tell your team to prepare for battle
Choose 1, 2, or 3: 1
The dragon sneezes out a fireball and incinerates you instantly. False
>>> adventure()
You sneak into the dragons lair, with your comrades Wizard
McBlastyFace and Steve the Bard. The dragon is fast asleep.
- Tickle the dragon on the nose
- Tell your team to start stealing things
- Tell your team to prepare for battle
Choose 1, 2, or 3: 4
Invalid option
Choose 1, 2, or 3: 2
You cant carry the entire hoard of loot.
- Take the pile of silk in the corner
- Take as much gold as you can carry
- Take the huge diamond nestled under the dragons claw
Choose 1, 2, or 3: 1
You and your team easily take all of the silk and escape quietly into the night.
True
>>> adventure()
You sneak into the dragons lair, with your comrades Wizard
McBlastyFace and Steve the Bard. The dragon is fast asleep.
- Tickle the dragon on the nose
- Tell your team to start stealing things
- Tell your team to prepare for battle
Choose 1, 2, or 3: 3
Who will lead the attack?
- Wizard McBlastyFace
- Steve the Bard
- Me, of course
Choose 1, 2, or 3: 2
Steve trips over a rock and the dragon wakes up.
- Tell Steve to sing to the dragon
- CHARGE!
- Run away
Choose 1, 2, or 3: 2
You surprise the dragon, wounding it greatly. But now the dragon turns to you and prepares to scorch you with its fire breath.
- Hide behind a marble pillar
- Hide behind your shield
- Run between its legs
Choose 1, 2, or 3: 1
Your cloak is a little singed, but the marble deflects most of the fire. Wizard McBlastyFace disintegrates the dragon with a single spell. True
Reviews
There are no reviews yet.