vai se rum pouco grande, mas, por favor tenham paciência…
estou tentando fazer um jogo da velha que armazena os 5 melhores jogadores em um arquivo, porém, não estou conseguindo fazer que o programa verifique se o nome de um jogador já está armazenado nesse arquivo ou se ainda não está, nem que o programa verifique se a pontuação do jogador pode mesmo estar entre os 5 melhores. segue o código:
import random
#nesse arquivo chamado palavras_jogo_da_forca.txt é um arquivo separado que tem as palavra do jogo
nome_plr = input('nome> ')
arq_plv = open('palavras_jogo_da_forca.txt', 'r', encoding='utf-8')
lista_palavra = []
#todas as palavras do jogo são repassadas para a lista lista_palavra nesse loop
for i in arq_plv.readlines():
lista_palavra.append(i.split(', '))
#aqui o arquivo que tem as palavras é fechado
arq_plv.close()
#nessa variável é escolhida uma palavra aleatória da lista, q na verdade é matrisz, pois, como pode ver,
#precisou de duas coordenadas para ser encontrada
palavra = lista_palavra[0][random.randint(0, len(lista_palavra[0])-1)]
#aqui são lista criadas para verificar todas as jogadas do jogo
digitadas = []
acertos = []
#aqui é a pontuação, se o jogador vencer a partida ganha um ponto
pontuação = 0
#aqui contam os erros durando o jogo, se erros for igual a 6 o jogador perde
erros = 0
#aqui seriam todos os movimentos do jogo propriamente dito
while True:
senha = ''
for letra in palavra:
senha += letra if letra in acertos else '.'
print(senha)
if senha == palavra:
print('você acertou!')
#aqui é o final da partida, nesse caso, se o jogador venceu a pontuação é somada com 1
pontuação+=1
break
tentativa = input('Digite uma letra: ').lower().strip()
if tentativa in digitadas:
print('você já tentou esta letra!')
continue
else:
digitadas += tentativa
if tentativa in palavra:
acertos += tentativa
else:
erros += 1
print('você errou')
print('X==:==\nX : ')
print('X O ' if erros >= 1 else 'X')
linha2 = ''
if erros == 2:
linha2 = ' | '
elif erros == 3:
linha2 = ' \| '
elif erros >= 4:
linha2 = ' \|/ '
print(f'X{linha2}')
linha3 = ''
if erros == 5:
linha3 += ' / '
elif erros >= 6:
linha3 += ' / \ '
print(f'X{linha3}')
print('X\n==========')
if erros == 6:
print('Enforcado!')
print(f'a palavra secreta era: {palavra}')
break
#aqui é onde estou com dúvidas:
#aqui verifica se o arquivo com a pontuação dos jogadores já existe...
try:
with open('pontuação_melhores_jogo_da_forca.txt', 'r', encoding='utf=8') as arq_plr:
j=0
for i in arq_plr.readlines():
j+=1
#caso não, o arquivo é criado aqui
except:
cria_arq = open('pontuação_melhores_jogo_da_forca.txt', 'w', encoding='utf=8')
finally:
arq_plr = open('pontuação_melhores_jogo_da_forca.txt', 'a+', encoding='utf=8')
#e, finalmente, o programa verifica se as 5 primeiras posições já estão ocupada...
if j > 5:
arq_plr.close()
#caso não, ele deveria verificar se o nome da pessoa já está no arquivo e se estivesse, soma sua pontuação
#com a já arquivada, porém, não funciona. Pelo menos eu não conseguir fazer funcionar.
else:
if pontuação != 0:
if nome_plr not in arq_plr:
arq_plr.write(f'{nome_plr} : ')
arq_plr.write(f'{pontuação}')
arq_plr.write('\n')
else:
arq_plr.write(f'{pontuação}')
arq_plr.write('\n')
arq_plr.close()
gostaria de saber tbm se teria como otimizar o programa a partir do try pois, dessa forma está sendo necessário abrir e fechar o arquivo duas vezes.
quem puder ajudar eu agradeço…