Updates some control flow issues.
- Updates `calc` to return if the user won. - We can then look at the status (win) and continue the loop instead of falling through to the "Try again?..." section. - Adds continuation after a caught error to prevent the secret from resetting - Empties the `secret` before regenerating it. - `generateSecret() appends to the secret so the second game had a len(secret) of 8 - This caused the compare function to out of bounds on the `guess` array. - Changed the output formatting of the hit to help readability. - Some ideas - setting a variable to a length of 4 and referencing that in generateSecret, checkGuess, and compare would allow changing the difficulty, example: - Easy: length 5 - Medium: length 6 - Hard: length 8 - Ask the user for a difficulty before the start of the game.
This commit is contained in:
parent
a6292cd291
commit
30f54f438f
29
main.py
29
main.py
|
@ -41,6 +41,10 @@ and what you got wrong.
|
||||||
* = correct color in correct location
|
* = correct color in correct location
|
||||||
~ = correct color and wrong location
|
~ = correct color and wrong location
|
||||||
# = incorrect color in incorrect location
|
# = incorrect color in incorrect location
|
||||||
|
|
||||||
|
'?' for help.
|
||||||
|
'q' to quit.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,7 +65,6 @@ def checkGuess(guess):
|
||||||
raise LengthException("Your guess is too short.")
|
raise LengthException("Your guess is too short.")
|
||||||
|
|
||||||
for i in guess:
|
for i in guess:
|
||||||
print('i:', i)
|
|
||||||
if i not in colors:
|
if i not in colors:
|
||||||
raise ColorException("You are not guessing from r, g, b, or y.")
|
raise ColorException("You are not guessing from r, g, b, or y.")
|
||||||
|
|
||||||
|
@ -85,11 +88,7 @@ def compare(secret, guess, clue):
|
||||||
|
|
||||||
def calc(secret, guess, clue):
|
def calc(secret, guess, clue):
|
||||||
tmp = ''
|
tmp = ''
|
||||||
if tmp.join(clue) == '****':
|
return tmp.join(clue) == '****'
|
||||||
print('You won!')
|
|
||||||
else:
|
|
||||||
print('Not quite right.')
|
|
||||||
print('Your clue:', clue)
|
|
||||||
|
|
||||||
|
|
||||||
generateSecret(secret)
|
generateSecret(secret)
|
||||||
|
@ -98,7 +97,7 @@ print(rules)
|
||||||
while game_continue:
|
while game_continue:
|
||||||
guess = []
|
guess = []
|
||||||
|
|
||||||
temp = input('Choose your colors. Input \'?\' for help: ')
|
temp = input('Choose your colors: ')
|
||||||
if debug:
|
if debug:
|
||||||
print('Temp =', temp)
|
print('Temp =', temp)
|
||||||
guess = list(temp)
|
guess = list(temp)
|
||||||
|
@ -119,24 +118,36 @@ while game_continue:
|
||||||
|
|
||||||
# Will obviously continue if you don't quit.
|
# Will obviously continue if you don't quit.
|
||||||
|
|
||||||
|
win = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if game_continue:
|
if game_continue:
|
||||||
checkGuess(guess)
|
checkGuess(guess)
|
||||||
clue = compare(secret, guess, clue)
|
clue = compare(secret, guess, clue)
|
||||||
# Finds differences between guess and secret
|
# Finds differences between guess and secret
|
||||||
calc(secret, guess, clue)
|
win = calc(secret, guess, clue)
|
||||||
# Calculates if you won or not and outputs it.
|
# Calculates if you won or not and outputs it.
|
||||||
|
|
||||||
|
if win:
|
||||||
|
print('You won!')
|
||||||
|
else:
|
||||||
|
print('Not quite right.')
|
||||||
|
clue_string = ''.join(clue)
|
||||||
|
print('Your clue: ', clue_string)
|
||||||
|
continue
|
||||||
|
|
||||||
except LengthException as e:
|
except LengthException as e:
|
||||||
print('Error:', e)
|
print('Error:', e)
|
||||||
|
continue
|
||||||
|
|
||||||
except ColorException as e:
|
except ColorException as e:
|
||||||
print('Error:', e)
|
print('Error:', e)
|
||||||
|
continue
|
||||||
|
|
||||||
cont = input('Try again? y/n: ')
|
cont = input('Try again? y/n: ')
|
||||||
if cont == 'y': # Regenerates secret and clears variables.
|
if cont == 'y': # Regenerates secret and clears variables.
|
||||||
|
secret = []
|
||||||
generateSecret(secret)
|
generateSecret(secret)
|
||||||
guess = []
|
|
||||||
elif cont == 'n':
|
elif cont == 'n':
|
||||||
game_continue = False
|
game_continue = False
|
||||||
print('Bye!')
|
print('Bye!')
|
||||||
|
|
Loading…
Reference in New Issue