def ExitProgram(): # Save & Exit Files.SaveScoreboard(Files.ScoreboardPath, Scoreboard) ConsoleTools.Clear() exit(1)
def Game(): global Dictionary Dictionary = Files.LoadDictionary(Files.DictionaryPath) word = random.choice(Dictionary) word = word.upper() # Get individual characters of the word to compare length to guesses. # This will find whether it's been guessed properly or not. wordCharacters = [] for character in word: if character not in wordCharacters: wordCharacters.append(character) unsuccessfulGuesses = [] successfulGuesses = [] # While guesses are less than the max amount of stages def GetGuesses() -> int: base = len(Text.ArtStages) - len(unsuccessfulGuesses) for char in unsuccessfulGuesses: if char in "AEIOU": base -= 1 return base while GetGuesses() > 0: ConsoleTools.Clear() # Write the ASCII art ConsoleTools.WriteFromPosition( Text.ArtStages[len(unsuccessfulGuesses)], XOffset + 50, YOffset + 2) # Write the word ConsoleTools.WriteFromPosition("Word:", XOffset + 4, YOffset + 2) ConsoleTools.WriteFromPosition( Text.GetPrintableWord(word, successfulGuesses), XOffset + 12, YOffset + 2) # Write unsuccessful guesses if len(unsuccessfulGuesses) > 0: ConsoleTools.WriteErrorFromPosition("Unsuccessful Guesses:", XOffset, YOffset + 4) ConsoleTools.WriteErrorFromPosition( Text.FormatArray(unsuccessfulGuesses), XOffset + 5, YOffset + 5) # Write the guesses left ConsoleTools.WriteFromPosition( "You have " + str(GetGuesses()) + " guesses left.", XOffset, YOffset + 7) # Set cursor position to correct spot for input, then get the letter. ConsoleTools.SetCursor(XOffset, YOffset + 8) guess = input("Enter a letter: ") guess = guess.upper() # Check if it is one letter. if len(guess) != 1: ConsoleTools.DialogError("You must enter one letter.") continue # Check if already guessed this letter if guess in unsuccessfulGuesses or guess in successfulGuesses: ConsoleTools.DialogError("You have already guessed this letter.") continue if guess not in word: # Add to bad guesses unsuccessfulGuesses.append(guess) ConsoleTools.DialogError("Incorrect guess.") else: # Add to successful guesses successfulGuesses.append(guess) ConsoleTools.Dialog("Successful Guess!") # Check if word is fully guessed if len(wordCharacters) == len(successfulGuesses): break # Success / Game Over ConsoleTools.TimeoutTime = 0.5 if len(wordCharacters) == len(successfulGuesses): # Success ConsoleTools.Dialog("You have guessed the word!") ConsoleTools.WriteFromPosition( "The word was: " + word + ".", ConsoleTools.XOffset + ConsoleTools.DialogOffsetX, ConsoleTools.YOffset + ConsoleTools.DialogOffsetY + 1) # Get the score time.sleep(0.25) score = GetGuesses() * Text.UniqueLetters(word) ConsoleTools.WriteFromPosition( "Your score was: " + str(score), ConsoleTools.XOffset + ConsoleTools.DialogOffsetX + 2, ConsoleTools.YOffset + ConsoleTools.DialogOffsetY + 3) # Allow player to enter name ConsoleTools.SetCursor( ConsoleTools.XOffset + ConsoleTools.DialogOffsetX + 2, ConsoleTools.YOffset + ConsoleTools.DialogOffsetY + 5) name = input( "Enter your name if you want to add it to the scoreboard: ") if len(name) > 0: Scoreboard.append((name, score)) Files.SaveScoreboard(Files.ScoreboardPath, Scoreboard) else: # Failed ConsoleTools.DialogError("You have failed to guess the word.") ConsoleTools.WriteErrorFromPosition( "The word was: " + word + ".", ConsoleTools.XOffset + ConsoleTools.DialogOffsetX, ConsoleTools.YOffset + ConsoleTools.DialogOffsetY + 1) time.sleep(5.0) Menu()