Talvez chamar de jogo seja um exagero, mas aqui está. Sei que tem alguns erros, como menu recursivo (opa...) mas estou feliz de consegui fazer esse troço sem tutorial nenhum. Compartilho com vocês meu primeiro projeto de python de verdade. Implementar o Y (numero certo, lugar errado) foi um inferno. Se vc quiser testar e estiver em um mac não esqueça de mudar "cls" para "clear" ou vai problema.
import random
import os
import copy
def exibir_titulo():
print("Bem Vindo ao Senha \n")
def main():
exibir_titulo()
def retornar_ao_menu():
input("digite qualquer tecla para voltar ao menu: ")
menu()
def menu():
os.system("cls")
exibir_titulo()
print("Digite 1 Para regras")
print("Digite 2 para jogar")
user_input = int(input(": "))
if user_input == 1:
exibir_regras()
elif user_input == 2:
game_controller()
else:
print("Seleção inválida. Tente de novo")
def exibir_regras():
os.system("cls")
print('''Regras:
tente adivinhar a senha numerica de 4 digitos!
-- você tem 6 tentativas.
-- Em cada tentativa, sera exibido um "X" se o numero não estiver na sequencia,
-- Um "O" caso o numero estiver na sequencia e no lugar correto;
-- e um "Y" caso o numero estiver na sequencia, mas no lugar errado.
-- O numero 0 não está incluido. ''')
retornar_ao_menu()
def geracao_de_senha():
senha = []
while len(senha) < 4:
numeros_senha = str(random.randint(1, 9))
senha.append(numeros_senha)
print("Senha Gerada!")
#print(senha)
return senha
def senha_checker():
senha_definida = geracao_de_senha()
rodada = 1
guess_result = []
not_used = []
tamanho = len(senha_definida)
while rodada < 9:
try:
guess = input(f"Adivinhe a senha. Tentativa {rodada}:")
if len(guess) != 4:
print("Use 4 digitos!")
continue
else:
guess_result = []
guess = list(guess)
guess_copy = guess.copy()
senha_definida_copy = senha_definida.copy()
for item in range(tamanho):
if senha_definida_copy[item] == guess_copy[item]:
guess_result.append("O")
guess_copy[item] = None
senha_definida_copy[item] = None
if len(guess_result) == tamanho:
print(f"Parabéns! Você acertou a senha! {guess_result}")
retornar_ao_menu()
return
for i, palpite in enumerate(guess_copy):
if palpite is not None:
if palpite in senha_definida_copy:
guess_result.append("Y")
index_na_senha = senha_definida_copy.index(palpite)
senha_definida_copy[index_na_senha] = None
while len(guess_result) < tamanho:
guess_result.append("X")
print(guess_result)
guess_result = []
rodada = rodada + 1
except ValueError:
print("Use só numeros")
print("acabaram as tentativas")
print (f"A senha era {''.join(senha_definida)}")
retornar_ao_menu()
def game_controller():
os.system("cls")
senha_checker()
menu()