Para já decidimos incluir no estado a palavra que o utilizador está a construir, as letras já tentadas e o número de tentativas de que ainda dispõe. Não é difícil aceitar que a melhor estrutura para guardar esta informação será um dicionário. As operações sobre o estado serão as operações de consulta e de alteração de componentes. Apresentamos a nova versão de hang87.
01.
def
hang89():
02.
# inicialização
03.
# --- palavra secreta
04.
palavras
=
open(
'/tempo/data/palavras.txt'
).read().split()
05.
secreta
=
list(random.choice(palavras))
06.
dicio
=
seq_to_dict(secreta)
07.
# --- parâmetros
08.
TAMANHO
=
len(secreta)
09.
LIMITE
=
limite(TAMANHO)
10.
11.
estado
=
{
'palavra'
:list(
'_'
*
TAMANHO),
'usadas'
:[],
'tentativas'
:LIMITE}
12.
acertou
=
False
13.
# Entra no jogo
14.
for
tentativa
in
range(LIMITE):
15.
# estado actual
16.
mostra_estado(estado)
17.
# joga
18.
letra
=
adivinha(estado[
'usadas'
])
19.
# analisa resposta
20.
if
letra
in
dicio:
21.
# --- Acertou na letra!
22.
indices
=
dicio[letra]
23.
for
ind
in
indices:
24.
estado[
'palavra'
][ind]
=
letra
25.
# --- Acertou na palavra??
26.
if
fim(secreta,estado[
'palavra'
]):
27.
acertou
=
True
28.
mensagem_sim(secreta)
29.
break
30.
# actualiza estado
31.
estado[
'usadas'
]
=
estado[
'usadas'
]
+
[letra]
32.
estado[
'tentativas'
]
=
estado[
'tentativas'
]
-
1
33.
# mensagem final
34.
mensagem_fim(acertou,secreta)
Sem comentários:
Enviar um comentário