Игра Hangman на Python, проблема с состояниемPython

Программы на Python
Anonymous
Игра Hangman на Python, проблема с состоянием

Сообщение Anonymous »


Я пытаюсь создать игру про палача на моем родном языке (португальском), в которой используется множество специальных символов, таких как "Ç" "À" "Â" "Ã", и я хотел сделать так, чтобы при вводе " Например, раскрываются все символы, связанные с ["Â","Ã","À"], которые присутствуют в секрете.

Другая проблема заключается в том, что если пользователь пытается сыграть еще раз более одного раза, программа завершается

Буду признателен за помощь

Некоторые из моих друзей использовали словари, чтобы написать ту часть, с которой я борюсь, но я пытаюсь использовать другой подход, поэтому, если кто-то может предложить решение без словаря, я был бы признателен. Вот код:

импортировать win32gui, win32con

hwnd = win32gui.GetForegroundWindow() #estas duas linhas são, чтобы максимизировать или вручную ввести данные в начале игры win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)

импортировать систему

import colorama #usamos o colorama для нашего нового проекта, чтобы использовать или использовать Colorama в среде разработки, интегрированной, чтобы получить новый опыт, который можно установить в библиотеке без cmd для компьютера, используя команду «pip install colorama» импортируйте ОС #функцию системы, которую мы используем позже, чтобы очистить линию команд
импортировать случайный из импорта Colorama Fore, init инициализация()

def desenhar_boneco(ошибка): если (ошибка == 0): print(Fore.YELLOW,"\n _____") печать(" | ") печать(" | ") печать(" | ") печать(" ===") элиф(ошибка == 1): print(Fore.YELLOW,"\n _____") печать(" | |") print(" |",Fore.RED, "O ") print(Fore.YELLOW," | ") печать(" | ") печать(" ===") элиф(ошибка == 2): print(Fore.YELLOW,"\n _____") печать(" | |") print(" |",Fore.RED, "O ") print(Fore.YELLOW," |",Fore.RED," | ") print(Fore.YELLOW," | ") печать(" ===") элиф(ошибка == 3): print(Fore.YELLOW,"\n _____") печать(" | |") print(" |",Fore.RED, "O ") print(Fore.YELLOW," |",Fore.RED," /| ") print(Fore.YELLOW," | ") печать(" ===") элиф(ошибка == 4): print(Fore.YELLOW,"\n _____") печать(" | |") print(" |",Fore.RED, "O ") print(Fore.YELLOW," |",Fore.RED," /|\ ") print(Fore.YELLOW," | ") печать(" ===") элиф(ошибка == 5): print(Fore.YELLOW,"\n _____") печать(" | |") print(" |",Fore.RED, "O ") print(Fore.YELLOW," |",Fore.RED," /|\ ") print(Fore.YELLOW," |",Fore.RED," /") печать(Fore.YELLOW,"===") элиф(ошибка == 6): print(Fore.YELLOW,"\n _____") печать(" | |") print(" |",Fore.RED, "O ") print(Fore.YELLOW," |",Fore.RED," /|\ ") print(Fore.YELLOW," |",Fore.RED," / \") print(Fore.YELLOW,"===")

def main(): из списка слов импортировать слова1, слова2

hwnd = win32gui.GetForegroundWindow() win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE) # Узнайте, что интересно для проверки #words =words1 # palavras sem acentos nem cedilhas. #words =words2 # palavras com acentos или cedilhas. слова = слова1 + слова2 # palavras de ambos os typos secret = random.choice(words).upper() # Выбор варианта выполнения # Завершение программы palavra_descoberta=["_" для _ по секрету] tenativas = 6 # Число разрешенных проб palavras_ou_letras_utilizadas = [] ошибка = 0 print("Бем-виндо ао Джого да Форка!") desenhar_boneco (ошибка) abc = [chr(letra) для буквы в диапазоне (65, 91)] acentoscorretoA = ['Á', 'À', 'Â', 'Ã'] acentoscorretoE = ['É', 'Ê'] ацентоскорретоI = ['Í'] acentoscorretoO = ['Ó', 'Ô', 'Õ'] ацентоскорретоU = ['Ú'] ацентоскорретоC = ['Ç'] jogarnovamente = ['s', 'sim', 'SIM'] fimdejogo = ['n', 'nao', 'não', 'NÃO', 'NAO'] пока правда: Распечатать("") print(Fore.BLUE + "=" * 50) letra = input(Fore.WHITE + f"Palavra: {' '.join(palavra_descoberta)}\nTentativas restantes: {tentativas}\nPalavras ou Letras utilizadas: {', '.join(palavras_ou_letras_utilizadas)}\nDigite uma letra ou uma Палавра: ").upper() распечатать (секретно) если len(letra) == len(secret) и letra == secret: print(Fore.BLUE +"#" * 50) print(Fore.GREEN + f"Parabéns! Você adivinhou a palavra: {secret}") print(Fore.BLUE +"#" * 50) перерыв elif len(letra) == len(secret) и letra != secret: print(f"Ошибка Палавра. Попробуйте еще раз.") while (len(буква) != 1 или буква не в abc) и (len(буква) != len(секрет)): print(Fore.RED, «Неверный ввод») Letter = input(Fore.WHITE + "Введите букву:").upper() в то время как письмо в Palavras_ou_letras_utilizados: print(Fore.RED, «Вы уже пробовали это письмо. Попробуйте другое.») Letter = input(Fore.WHITE + "Введите букву:").upper() words_or_used_letters.append(буква) если письмо секретное: draw_doll (ошибки) для i, l в перечислении (секрет): если l в секрете и l в acentoscorretoA и carta == "A": буква = л elif l в секрете и l в акцентоскорретоE и буква == "E": буква = л elif l по секрету и l по акцентоскорретоI и буква == "I": буква = л elif l в секрете и l в акцентоскорретоO и буква == "O": буква = л elif l в секрете и l в акцентоскорретоU и буква == "U": буква = л если l в секрете и l в акцентоскорретоC и буква == "C": буква = л если l == буква или (l == «C» и буква в акцентахcorretoC): Discovery_word = буква если "_" нет в DISCOVERY_WORD: print(f"Поздравляем! Вы угадали слово: {секрет}") перерыв еще: print("Неправильная буква или слово. Повторите попытку.") ошибки += 1 попытки -= 1 draw_doll (ошибки) если ошибки == 6: print(f"Игра окончена! Слово было: {секрет}") response = input("Хотите еще раз jgr? Введите да или нет | ") пока ответ не установлен (конец игры + игра снова): print(Fore.RED, «Неверный ввод») response = input("Хотите еще раз jgr? Введите да или нет | ") если ответ в эндшпиле: sys.exit() Ответ Элиф в playagain: os.system('cls') # эта строка предназначена для очистки командной строки в конце игры основной() sys.exit() if name == "main": основной()

Вернуться в «Python»