|
|
|
import os
|
|
|
|
import random
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
|
|
def getGuess(number):
|
|
|
|
validGuess = False
|
|
|
|
guess = ""
|
|
|
|
while not validGuess:
|
|
|
|
guess = str(input("Guess " + str(number) + " / 6: ")).upper()
|
|
|
|
if len(guess) > 5 or len(guess) < 5:
|
|
|
|
print("Invalid guess - please ensure you're guessing a word of 5 letters")
|
|
|
|
else:
|
|
|
|
validGuess = True
|
|
|
|
return guess
|
|
|
|
|
|
|
|
|
|
|
|
# Get absolute path to resource - works when run from script and compiled using PyInstaller
|
|
|
|
def resource_path(relative_path):
|
|
|
|
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
return os.path.join(base_path, relative_path)
|
|
|
|
|
|
|
|
|
|
|
|
def getWord():
|
|
|
|
lines = open(resource_path('words.txt')).read().splitlines()
|
|
|
|
return random.choice(lines)
|
|
|
|
|
|
|
|
|
|
|
|
def checkRight(wordToGuess, guessSoFar):
|
|
|
|
if str(wordToGuess).upper() == str(guessSoFar).upper():
|
|
|
|
return True
|
|
|
|
else:
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
def header():
|
|
|
|
return r" ______ ______ _ _____" + "\n" + \
|
|
|
|
r"| _ \ \ / / _ \| | | ____|" + "\n" + \
|
|
|
|
r"| |_) \ V /| | | | | | _|" + "\n" + \
|
|
|
|
r"| __/ | | | |_| | |___| |___" + "\n" + \
|
|
|
|
r"|_| |_| |____/|_____|_____|"
|
|
|
|
|
|
|
|
|
|
|
|
print("Welcome to...")
|
|
|
|
print(header())
|
|
|
|
print("A totally original guessing game!")
|
|
|
|
emptyWordGuess = ["_"] * 5
|
|
|
|
wrongLetters = set()
|
|
|
|
rightLettersWrongPlace = set()
|
|
|
|
wordToGuess = list(getWord().upper())
|
|
|
|
# print(wordToGuess)
|
|
|
|
|
|
|
|
counter = 1
|
|
|
|
while counter < 6:
|
|
|
|
userGuess = getGuess(counter)
|
|
|
|
emptyWordGuess = ["_"] * 5
|
|
|
|
for i in range(len(userGuess)):
|
|
|
|
if wordToGuess[i] == userGuess[i]:
|
|
|
|
emptyWordGuess[i] = userGuess[i]
|
|
|
|
elif userGuess[i] in wordToGuess:
|
|
|
|
if userGuess[i] in emptyWordGuess and userGuess[i] not in wordToGuess[i:]:
|
|
|
|
break
|
|
|
|
else:
|
|
|
|
rightLettersWrongPlace.add(userGuess[i])
|
|
|
|
else:
|
|
|
|
wrongLetters.add(userGuess[i])
|
|
|
|
if checkRight(wordToGuess, emptyWordGuess):
|
|
|
|
print("Congratulations! The word was", ''.join(wordToGuess).capitalize())
|
|
|
|
exit(420)
|
|
|
|
print("Incorrect letters: " + ', '.join(wrongLetters))
|
|
|
|
|
|
|
|
print("Correct letters in the wrong place: " + ', '.join(rightLettersWrongPlace))
|
|
|
|
print("Result: " + " ".join(emptyWordGuess))
|
|
|
|
counter += 1
|
|
|
|
|
|
|
|
print("Ran out of guesses! The word was: ", "".join(wordToGuess))
|
|
|
|
exit(69)
|