# -- This asks the user whether they want to play the game
import time
print()
initialAsk = input("Shall we play a game? Type YES or NO: ")
# -- Function to quit the game
def quitGame():
print("\n"
"Goodbye, I hope to see you again!")
time.sleep(3)
quit()
###
while str.upper(initialAsk) != "YES":
if str.upper(initialAsk) == "NO":
quitGame()
else:
print("\n"
"Sorry, I don't understand. \n")
initialAsk = input("Shall we play a game? Type YES or NO: ")
else:
play = True
print("\n"
"Let's get started! \n")
###
# -- This function is the code for the game
def gameStart():
###
print("This game is called, 'Guess the number!' \n"
"\n"
"Here's how we'll play: \n"
"I generate a random number from 1 to 10, \n"
"and you will have to guess it. \n"
"\n"
"There are 3 difficulties: easy, medium or hard. \n"
"The number ranges for each are as follows: \n"
"EASY: 1 - 10 \n"
"MEDIUM: 1 - 20 \n"
"HARD: 1- 30 \n")
# -- this is the difficulty selection and number generation
guessRangeList = []
import random
modeSelectList = ["EASY", "MEDIUM", "HARD"]
modeSelected = str.upper(input("Please enter your desired difficulty: "))
while modeSelected not in modeSelectList:
print("\n"
"Oops, that's not a valid difficulty. \n")
modeSelected = str.upper(input("Please enter your desired difficulty: "))
else:
if modeSelected == "EASY":
for num in range(1, 11):
guessRangeList.append(num)
randomNumber = random.randint(1, 10)
elif modeSelected == "MEDIUM":
for num in range(1, 21):
guessRangeList.append(num)
randomNumber = random.randint(1, 20)
elif modeSelected == "HARD":
for num in range(1, 31):
guessRangeList.append(num)
randomNumber = random.randint(1, 30)
print("\n"
"%s mode selected. You have 3 tries to guess the correct number. \n" %
(modeSelected))
###
# -- Determines how many hints the user gets based on the selected difficulty
if modeSelected == "EASY":
print("You have up to 3 hints.")
hintsLeft = 3
elif modeSelected == "MEDIUM":
print("You have up to 12 hints.")
hintsLeft = 12
else:
print("You have up to 21 hints.")
hintsLeft = 21
###
# -- This is the guessing portion
triesLeft = 3
numbersAlreadyGuessed = []
print("\n"
"Tips: \n"
"1. Type HINT and I will give you a number is not the correct number. \n"
"2. Type LIST to see your previous guesses. \n")
userGuess = input("Can you guess the number? ")
while userGuess != randomNumber:
# -- If player wants to see a list
if str.upper(userGuess) == "LIST":
if len(numbersAlreadyGuessed) > 0:
numbersAlreadyGuessed.sort()
print("\n"
"The numbers", numbersAlreadyGuessed, "have been guessed
already. \n")
userGuess = input("Can you guess the number? ")
else:
print("\n"
"You have not currently guessed any number. \n")
userGuess = input("Can you guess the number? ")
###
# -- If player wants to use a hint
elif str.upper(userGuess) == "HINT":
if hintsLeft > 0:
numberOptions = [num for num in guessRangeList if num !=
randomNumber and num not in numbersAlreadyGuessed]
hintedNumber = (random.choice(numberOptions))
numbersAlreadyGuessed.append(hintedNumber)
print("\n"
"You used a hint. %d is NOT the number you're looking for. \n"
% (hintedNumber))
hintsLeft -= 1
if hintsLeft > 1 or hintsLeft == 0:
print("You have %d hints left." % (hintsLeft))
else:
print("You have %d hint left." % (hintsLeft))
print()
userGuess = input("Can you guess the number? ")
else:
print("\n"
"Sorry, you have no more hints. \n")
userGuess = input("Can you guess the number? ")
###
# -- if player makes a guess
elif userGuess.isdigit() == True:
if int(userGuess) != randomNumber: # (1A)
print()
if int(userGuess) in guessRangeList: # (2A)
if int(userGuess) not in numbersAlreadyGuessed: # (3A)
print("Oops, that's not the number I'm looking for. \n")
numbersAlreadyGuessed.append(int(userGuess))
triesLeft -= 1
if triesLeft >= 1: # (4A)
if triesLeft > 1: # (4A.1)
print("You have %d tries left." % (triesLeft))
elif triesLeft == 1: # (4A.2)
print("You have %d try left." % (triesLeft))
print()
userGuess = input("Can you guess the number? ")
else: # (4B)
print("Sorry, you have run out of tries. The correct
number was %d. \n" % (randomNumber))
askPlayAgain = input("Type 'EXIT' to exit, or 'PLAY' to
play again: ")
while str.upper(askPlayAgain) != "PLAY": # (5A.1)
if str.upper(askPlayAgain) == "EXIT": # (5B)
quitGame()
else: # (5C)
print("\n"
"Sorry, I don't understand. \n")
askPlayAgain = input("Type 'EXIT' to exit, or
'PLAY' to play again: ")
else: #(5A.2)
print()
gameStart()
else: # (3B)
print("Oops, you've already guessed that number. \n")
userGuess = input("Can you guess the number? ")
else: # (2B)
print("Oops, that's not in the range. \n")
userGuess = input("Can you guess the number? ")
else: # (1B)
print("\n"
"Congratulations! You guessed correctly!")
time.sleep(3)
quit()
# Number Directory:
# (1) - If player guess is wrong or right
# (2) - If player guess is within the range
# (3) - If player guess has been previously been stated
# (4) - Sees how many tries player has left, and what to do if tries = 0
# (5) - Asks the player if he/she wants to play again
###
# -- If the user doesn't type 'hint', 'list' or a string solely made of
intgers
else:
print("\n"
"Sorry, I don't understand. \n")
userGuess = input("Can you guess the number? ")
###
# -- Starts the Game
gameStart()
###