Juego en python: adivina numero aleatorio (Parte 2)

adivina numero aleatorio
Adivina numero aleatorio

Seguimos con la segunda parte del juego: adivina numero aleatorio, si no viste la primera te dejo el enlace para que puedas acceder: Juego en python: adivina numero aleatorio (Parte 1).
Como he dicho en las entradas anteriores, estas primeras publicaciones nacen del libro: http://inventwithpython.com/chapter4.html que me parecido muy interesante para aprender python diseñando juegos.

El tipo de datos booleano
El tipo de datos booleanos tiene solo dos valores: True o False. Estos valores distinguen las mayúsculas de las minúsculas y no son valores de cadenas, es decir, no necesitan comillas. Vamos a utilizar los valores booleanos con los operadores de comparación para formar condiciones.


Operadores de comparación
while intentos < 6:
Los operadores de comparación se utilizan para comparar dos valores y evaluar si la condición es Verdadera (True) o Falsa (False).

operadores de comparacion
Operadores de comparación

Condiciones
Una condición es una expresión que combina dos valores con un operador de comparación y evalúa a un valor booleano. Una condición es solo otro nombre para una expresión que se evalúa como Verdadera o Falsa.
En nuestro juego almacenamos el valor 0 en la variable intentos. Debido a que 0 es menor que 6, esta condición se evalúa como verdadera, osea, el booleano True.

Probando en el shell interactivo de python:

>>> 0 < 6
True
>>> 6 < 0
False
>>> 50 < 34
False
>>> 5 < 455
True


A seguir probando operadores de comparación:



>>> 10 == 10
True
>>> 10 == 11
False
>>> 11 == 10
False
>>> 10 != 10
False
>>> 10 != 11
True
>>> 'Hola' == 'Hola'
True
>>> 'Hola' == 'Chau'
False
>>> 'Hola' == 'HOLA'
False
>>> 'Chau' != 'Hola'
True


Notar la diferencia que hay entre el operador de asignación (=) y el operador de comparación (==). El signo de igual (=) se utiliza para darle valor a una variable y el signo (==) se utiliza en las expresiones para ver si dos valores son iguales. Al principio podemos equivocarnos con facilidad, pero una ves que tengamos practica sera fácil distinguirlos. 


Bucle While
La declaración while marca el inicio de un bucle. Muchas veces necesitamos que nuestros programas hagan algo una y otra ves. 
Si la condición se evalúa como Verdadera (True), se ejecuta todo lo que esta identado dentro del ciclo While, si no, se corta el ciclo y sale fuera del while. 
En nuestro caso: while intentos < 6: Se traduce: mientras intentos (que en un principio tiene valor 0, sea menor que 6, hacer esto:

    intentos = intentos + 1
    print ("Elige un numero del 1 al 20")
    numero = raw_input()
    numero = int (numero)
    if numero < x:
        print ("Tu numero es mas bajo")
    if numero > x:
        print ("Tu numero es mas alto")
    if numero == x:
        break

Así es como funciona el ciclo While, siempre y cuando la condición sea verdadera, el programa mantiene la ejecución del código dentro del bloque hasta que la condición sea falsa. En nuestro caso, cuando intentos llegue a 6 se rompe el ciclo while porque intentos deja de ser menor a 6.
Nosotros podemos cambiar la dificultad del juego cambiando esta linea, por ejemplo: while intentos < 4 , y ahora el jugador tiene solo 4 intentos. 

Los intentos del jugador

    intentos = intentos + 1
    print ("Elige un numero del 1 al 20")
    numero = raw_input()
    numero = int (numero)

Para comenzar quiero decir que este código lo hice cuando recién estaba aprendiendo, y fue una traducción de un ejercicio en Ingles hecho en la versión 3.3. Ahora con un poquito mas de conocimiento puedo decir que las ultimas 3 lineas de este código se pueden resumir en 1:
numero = input ("Elige un numero del 1 al 20")
Pero ya que en la entrada anterior publique el ejercicio de esta manera, sigamos así.
Una vez dentro del ciclo while lo primero que hacemos es sumarle 1 a intentos. O sea que el jugador entra en el intento 1. También se puede escribir esa linea de la siguiente manera: intentos += 1 . Como la variable intentos es inicializada en 0 la cuenta queda así: intentos = 0 + 1, por lo tanto la próxima ves que entremos en el ciclo while, intentos ya va a valer 1, y así sucesivamente hasta llegar a 6.

Ahora lo que nos sale en pantalla es lo siguiente: Elige un numero del 1 al 20, nosotros o el jugador elige su respuesta que va a ser guardada en la variable numero con la función numero = raw_input().

Ayudando al jugador 
Con este codigo:

    if numero < x:
        print ("Tu numero es mas bajo")
    if numero > x:
        print ("Tu numero es mas alto")
    if x == numero:       

        break

Lo que hacemos es ayudar al jugador usando el condicional if. Si el numero que el eligió es mas chico que el numero aleatorio "x", se cumple la condición del primer if, por lo tanto le va a salir en pantalla: "Tu numero es mas bajo". Si no se cumple esta condición y el numero elegido es mayor que "x", se cumple la condición del segundo if y por lo tanto va a salir en pantalla: "Tu numero es mas alto".
Siempre tenemos que tener en cuenta que a partir de la sangría es lo que va a hacer si la condición se cumple.

Terminando el ciclo con la sentencia break

    if numero == x:
        break

Que pasa si el jugador adivina el numero? Lo mas logico seria que gane, por lo tanto si se cumple que numero == x, la sentencia break hace que se termine el ciclo y salga del while. Si numero no es igual a x vuelve a comenzar el ciclo desde el principio, pidiéndole al jugador que elija un numero y así sucesivamente hasta que el jugador adivine o los intentos sean 6.
Recordar que si el jugador no adivina, intentos seguirá incrementando hasta llegar a 6. O puede ser que el jugador adivine y el ciclo while se rompa con un break, ahí es donde entra el código siguiente:

if numero == x:
    print ("Eres un genio....")
    print (nombre + " lo lograste con %d intentos" % (intentos))
    print ("Nos vemos....")
   
if numero != x:
    print ("Has perdido, sera en otra oportunidad...")
    print ("Nos vemos")

Después de salir del ciclo while, ya sea porque el jugador adivino o el numero de intentos fue 6, entran estas dos condicionales. La primera evalúa si después de salir del ciclo while numero == x, si esta condición es verdadera hace lo que viene después del if, si no, pasa al segundo if que evalúa si numero != x (si numero es distinto de x), si esto se cumple, se ejecuta lo que esta dentro de este if.

Espero este primer juego les sea de ayuda para iniciar en python. Seguire colocando mas juegos con su respectivo analisis.
No duden en dejar comentarios ante cualquier confusión o sugerencia.

  1. Jhon Cerpa dice:

    Buenisimo.

    1. PythonDiario dice:

      Gracias por visitar el blog Jhon 😉

  2. Unknown dice:

    me gusto, me podrias mandar el ejercicio completo ya resuelto para mi mail??, es decir la formula para ejecutarlo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey