Python - Como hacer que en este codigo "Ahorcado" solo sean permitidos 10 intentos

 
Vista:
sin imagen de perfil

Como hacer que en este codigo "Ahorcado" solo sean permitidos 10 intentos

Publicado por eduardo (7 intervenciones) el 02/11/2015 21:01:38
Hola que tal buenas tardes estoy haciendo un juegito en python para niños sobre el ahorcado, y tengo una duda ya todo va bien pero no se como hacer para este codigo que pondre a continuacion haga que solo le de 10 intentos al usuario de equivocarse. Gracias de antemano por su apoyo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import random
 
palabras = 'sombra animal django oveja aprender ejercicios caballo perro vaca computadora python abeja diente conejo mantel mesa basura escritorio ubuntu gorro parque amuleto cama cuarto descargar curso diario pythondiario vaso cuadro foto revista esdrujula parlantes radio tutorial banana naranja manzana celular casco ventana silla pileta juegos televisor heladera modulos cocina timbre lavarropas estufa enchufe futbol pelota pizarron cargador factura papel impresora telefono remedio planta vegetal aves luna electricidad copa fernet google lenguaje internet esposa jarra microondas manual sarten cortina musica pato'.split()
 
def buscarPalabraAleat(listaPalabras):
    # Esta funcion retorna una palabra aleatoria.
    palabraAleatoria = random.randint(0, len(listaPalabras) - 1)
    return listaPalabras[palabraAleatoria]
 
def displayBoard(letraIncorrecta, letraCorrecta, palabraSecreta):
    print([len(letraIncorrecta)])
    print ""
    fin = " "
    print 'Letras incorrectas:', fin
    for letra in letraIncorrecta:
        print (letra, fin)
    print ""
    espacio = '_' * len(palabraSecreta)
    for i in range(len(palabraSecreta)): # Remplaza los espacios en blanco por la letra bien escrita
        if palabraSecreta[i] in letraCorrecta:
            espacio = espacio[:i] + palabraSecreta[i] + espacio[i+1:]
    for letra in espacio: # Mostrará la palabra secreta con espacios entre letras
        print (letra, fin)
    print ""
 
def elijeLetra(algunaLetra):
    # Devuelve la letra que el jugador ingreso. Esta función hace que el jugador ingrese una letra y no cualquier otra cosa
    while True:
        print 'Adivina una letra:'
        letra = raw_input()
        letra = letra.lower()
        if len(letra) != 1:
            print 'Introduce una sola letra.'
        elif letra in algunaLetra:
            print 'Ya has elegido esa letra, elige otra.'
        elif letra not in 'abcdefghijklmnopqrstuvwxyz':
            print 'Elije una letra.'
        else:
            return letra
 
def empezar():
    # Esta funcion devuelve True si el jugador quiere volver a jugar, de lo contrario devuelve False
    print 'Quieres jugar de nuevo? (Si o No)'
    return raw_input().lower().startswith('s')
 
print 'A H O R C A D O'
letraIncorrecta = ""
letraCorrecta = ""
palabraSecreta = buscarPalabraAleat(palabras)
finJuego = False
while True:
    displayBoard(letraIncorrecta, letraCorrecta, palabraSecreta)
    # El usuairo elije una letra.
    letra = elijeLetra(letraIncorrecta + letraCorrecta)
    if letra in palabraSecreta:
        letraCorrecta = letraCorrecta + letra
        # Se fija si el jugador gano
        letrasEncontradas = True
        rango = [10]
        for i in range(len(palabraSecreta)):
            if palabraSecreta[i] not in letraCorrecta:
                letrasEncontradas = False
                break
        if letrasEncontradas:
            print ('Si! La palabra secreta es "' + palabraSecreta + '"! Has ganado!')
            finJuego = True
    else:
        letraIncorrecta = letraIncorrecta + letra
        rango = [10]
        # Comprueba la cantidad de letras que ha ingresado el jugador y si perdió
        if len(letraIncorrecta) == len(rango) - 1:
            displayBoard(letraIncorrecta, letraCorrecta, palabraSecreta)
            print ('Se ha quedado sin letras!\nDespues de ' + str(len(letraIncorrecta)) + ' letras erroneas y ' + str(len(letraCorrecta)) + ' letras correctas, la palabra era "' + palabraSecreta + '"')
            finJuego = True
    # Pregunta al jugador si quiere jugar de nuevo
    if finJuego:
        if empezar():
            letraIncorrecta = ""
            letraCorrecta = ""
            finJuego = False
            palabraSecreta = buscarPalabraAleat(palabras)
        else:
            break
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Como hacer que en este codigo "Ahorcado" solo sean permitidos 10 intentos

Publicado por xve (1646 intervenciones) el 03/11/2015 10:18:01
Hola Eduardo, yo pondría una variable contadora, que cada vez que falle, aumente en uno su valor, para que en el momento que llegue a 10, salga del bucle....

añadiendo algo así:

1
2
3
4
5
6
7
8
9
10
11
...
palabraSecreta = buscarPalabraAleat(palabras)
finJuego = False
contador=0
while True:
    contador+=1
    if contador>10:
        break
 
    displayBoard(letraIncorrecta, letraCorrecta, palabraSecreta)
    ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Como hacer que en este codigo "Ahorcado" solo sean permitidos 10 intentos

Publicado por Eduardo (7 intervenciones) el 03/11/2015 19:28:51
Gracias por tu respuesta! me ayudo mucho
pero podrias deicrme como hacer que en este codigo me regrese al menu principal si elige la opcion 3?
1
2
3
4
5
6
print "Menu: \n\t 1) Alimentar diccionario de palabras \n\t 2) Jugar \n\t 3) Salir"
 
x = int(raw_input(" "))
if x==1:
    print "1) Agregar palabra \n 2) Borrar palabra \n 3) Regresar al menu principal"
    y = raw_input(" ")

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar