def game(word): moves = len(character.character) guessed = set( ) # hier gebruik ik een set zodat ik zelf geen rekening hoef te houden met dubbele gokken print( f"Ik heb een woord in gedachten van {color.stylize(len(word), [color.magenta, color.bold])} letters", end="\n" * 2) while moves > 0: if checkIfWon(word, guessed): endSequence(word, True) break # spring uit de while loop print( f"\t{formatWord(word, guessed)}\nJe kunt nog {color.stylize(moves, [color.green, color.bold])} keer raden" ) if len(guessed) > 0: print( f"De dingen die je al geraden hebt zijn: {', '.join(guessed)}" ) # print alleen je geraden letters als je meer dan 0 letters geraden hebt print(color.stylize( character.character[::-1][moves - 1], [color.bold])) # print het juiste poppetje uit character.py guess = input( color.stylize( messages.randomMessage("GUESS_PROMPT") + " ", [color.green, color.bold])).lower() print("\n" * 2) # witregels moves += guessHandler(guess, word, moves, guessed) if len(guess) > 0: guessed.add(guess) if not checkIfWon(word, guessed): endSequence(word, False)
def guessChar(guess, word, guessed): if guess in guessed: print( color.stylize(f"De letter {guess} heb je al geraden", [color.yellow])) return 0 else: print( color.stylize( f"De letter {guess} zit{' niet' if not guess in word else ''} in mijn woord", [color.green if guess in word else color.red])) return int(guess in word) - 1
def guessHandler(guess, word, moves, guessed): if len(guess) > 1: return guessWord(guess, word, moves) elif len(guess) == 1: return guessChar(guess, word, guessed) else: print( color.stylize(messages.randomMessage("ERR_NO_WORD_GUESSED"), [color.yellow])) return 0
def guessWord(guess, word, moves): filteredWord = wordFilter(guess) if filteredWord != True or len(word) != len(guess): # Deze code zet de foutmeldingen van wordFilter() om naar strings die uitleggen wat je fout hebt gedaan error = filteredWord errorMessages = { "word_too_short": messages.randomMessage("ERR_WORD_TOO_SHORT"), "word_too_long": messages.randomMessage("ERR_WORD_TOO_LONG"), "word_contains_invalid_characters": messages.randomMessage("ERR_WORD_INVALID") } if len(guess) < len(word) and error == True: error = "word_too_short" elif len(guess) > len(word) and error == True: error = "word_too_long" print(color.stylize(errorMessages.get(error), [color.yellow])) return 0 if word == guess: endSequence(word, True) return len(moves) * -1 # trek alle beurten af else: print(color.stylize("Dat is niet mijn woord!", [color.red])) return -1
def main(): args = parseArgs() if args.word: clear() color.setColorEnabled( args.color if args.color != None else sys.platform != "win32") # zet kleuren automatisch uit op Windows print(color.stylize(messages.randomMessage("GAME_START"), [color.magenta])) if sys.platform == "win32": print( "Dit programma gebruikt ANSI codes om gekleurde tekst te laten zien, gebruik de --color true vlag om ze aan te forceren op een terminal die ze ondersteunt" ) allWords = list() if not args.word: allWords = createWordList( ) # laad alleen de woordenlijst als er geen aangepast woord is gegeven word = args.word or random.choice( allWords ) # or zorgt er hier voor dat word niet overschreven wordt door random.choice als args.word geen lege string is word = word.lower() # zorg dat het woord geen hoofdletters bevat game(word)