(1) iniciado: palavras até 4 caracteres, tentativas igual à soma de 6 com o comprimento da palavra;
(2) normal: palavras até 8 caracteres, tentativas igual à soma de 6 com o número de caracteres diferentes na palavra;
(3) perito: palavra com mais do que 8 caracteres, tentativas igual à soma de 6 com 0.8 * número de letras diferentes.
Posto isto apresentemos as definições que tratam da escolha da palavra (do ficheiro onde estão as palavra do nível escolhido), e do número de tentativas permitido.
01.
def
escolhe_nivel():
02.
""" Escolhe o nível. Implicações para as palavras e o número de tentativas."""
03.
print
04.
print
"Níveis possíveis: Iniciado, Normal, Perito."
05.
nivel
=
raw_input(
'Que nível [I/N/P]? '
)
06.
if
nivel
=
=
'I'
:
07.
return
'/tempo/data/pal_iniciado.txt'
,
'I'
08.
elif
nivel
=
=
'N'
:
09.
return
'/tempo/data/pal_normal.txt'
,
'N'
10.
else
:
11.
return
'/tempo/data/pal_perito.txt'
,
'P'
12.
13.
def
define_tentativas(dicio_pal, nivel):
14.
diferentes
=
len(dicio_pal)
15.
comprimento
=
sum([ len(indices)
for
indices
in
dicio_pal.values()])
16.
if
nivel
=
=
'I'
:
17.
return
6
+
comprimento
18.
elif
nivel
=
=
'N'
:
19.
return
6
+
diferentes
20.
else
:
21.
return
int(
6
+
0.8
*
diferentes)
No programa que joga precisamos introduzir a parte em que se define o nome do ficheiro onde vamos buscar a palavra, e o número de tentativas. O resto é mais do mesmo. O leitor deve consultar as soluções aos problemas anteriores.
01.
def
hang811():
02.
while
True
:
03.
# Definição do nível
04.
ficheiro,nivel
=
escolhe_nivel()
05.
# --- palavra secreta
06.
palavras
=
open(ficheiro).read().split()
07.
secreta
=
list(random.choice(palavras))
08.
dicio
=
seq_to_dict(secreta)
09.
# --- parâmetros
10.
tentativas
=
define_tentativas(dicio,nivel)
11.
acertou
=
False
12.
estado
=
cria_estado(list(
'_'
*
len(secreta)), [],tentativas)
13.
# resto igual
14.
.......
Sem comentários:
Enviar um comentário