Juego en python: reino del dragon (parte 1)

Juego en python
Reino de Dragones

Otro juego divertido para aprender a programa con python. Espero les guste y cualquier duda o sugerencia espero sus comentarios.

También se pueden ver los demás juegos que vamos aprendiendo en la sección juegos en python.

En el juego de hoy vamos aprender a crear nuestras propias funciones. Una ves que tengamos claro el concepto y la implementación de las funciones, todo sera mas fácil y organizado.

Los temas que se van a tratar en este juego:

  • El modulo time
  • La función time.sleep()
  • La palabra clave return
  • Creación de funciones con la palabra clave def
  • Los operadores booleanos and, or y not
  • Tablas de verdad
  • Variables (locales y globales)
  • Parámetros y argumentos
  • Diagramas de flujo

Como jugar al Reino del Dragón
En este juego, el jugador se encuentra en una tierra llena de dragones. Los dragones viven en sus cuevas y en ellas guardan sus tesoros. Algunos dragones son buenos y compartirán su tesoro, otros dragones son codiciosos y hambrientos y se comerán a cualquiera que pise su cueva. El jugador se encuentra frente a las dos cuevas, una con un dragón amable y otra con un dragón hambriento. El jugador tiene que elegir a cual cueva entrar, sin saber de ante mano donde esta uno u el otro. 
Abre tu editor de python (en mi caso Eclipse + Pydev) y pega el código siguiente. A lo largo de esta entrada explicare como funciona.

#! /usr/bin/env python
# -*- coding: utf-8 -*-



#Reino del Dragon....
import random
import time

def introduccion():
    print ("Estamos en una tierra llena de dragones. Delante de nuestro,")
    print ("se ven dos cuevas. En una cueva, el dragon es amigable")
    print ("y compartira el tesoro contigo. El otro dragon")
    print ("es codicioso y hambriento, y te va a comer ni bien te vea.")
    print ("")

def CambiarCueva():
    cueva = ""
    while cueva != "1" and cueva != "2":
        print ("Ha que cueva quieres entrar? 1 o 2?")
        cueva = raw_input()
       
    return cueva

def cheqcueva(CambiarCueva):
    print ("Te acercas a la Cueva...")
    time.sleep(2)
    print ("Esta oscuro y tenebroso...")
    time.sleep(2)
    print ("Un gran dragon salta delante tuyo, abre su boca y...")
    print ("")
    time.sleep(2)
   
    FriendlyCueva = random.randint (1, 2)
   
    if CambiarCueva == str(FriendlyCueva):
        print ("Te entrega el tesoro...")
    else:
        print ("El dragon te come de un bocado....")
   
EmpezarNuevo = ("si")

while EmpezarNuevo == ("s") or EmpezarNuevo == ("si"):
   
    introduccion()
   
    NumCaverna = CambiarCueva()
   
    cheqcueva(NumCaverna)
   
    print ("Quieres jugar de nuevo? (si o no)")
    EmpezarNuevo = raw_input()
   
Empecemos a trabajar

import random
import time

Empezamos importando 2 módulos: el modulo random y el modulo time. Como vimos en el juego anterior, el modulo random nos va a ser útil para elegir números al azar. En este juego también vamos a usar el modulo time para hacer algunas funciones relacionadas con el tiempo.

Definición de la función introduccion()

def introduccion():
    print ("Estamos en una tierra llena de dragones. Delante de nuestro,")
    print ("se ven dos cuevas. En una cueva, el dragon es amigable")
    print ("y compartira el tesoro contigo. El otro dragon")
    print ("es codicioso y hambriento, y te va a comer ni bien te vea.")
    print ("")

Como su nombre los dice, la función introduccion(), cuando es llamada brinda al usuario la presentación del juego.

Las funciones se componen de la siguiente manera: la palabra clave def, seguido del nombre que va a tener la función con paréntesis, y luego dos puntos, a partir de ahí, todo lo que este con sangría debajo de la función es lo que se llama el bloque de la función, lo que nuestra función va a realizar.
La declaración def significa que estamos creando una función y podemos llamarla cuando la necesitemos. Después de definir nuestra función, podemos llamarla de la misma manera que llamamos a otras funciones. Una ves sea llamada, se ejecuta lo que esta dentro del bloque de dicha función.
También decir que cuando el programa llega al código def, este no es ejecutado, si no que la función se ejecuta una ves sea llamada. Cuando la función es llamada, el código salta al def para saber lo que tiene que hacer.
Cuando llamamos a la función introduccion(), la ejecución del programa salta a la linea def introduccion(): y cuando este bloque de código se termina, el programa vuelve a la linea donde fue llamada la función.

Voy a explicar todas las funciones que utiliza el juego antes de explicar la parte principal del programa. Puede ser un poco confuso conocer el programa en el orden que se ejecuta. Pero tenemos que tener en claro que las funciones permanecen inactivas hasta que son llamadas.

Definiendo la función CambiarCueva()

def CambiarCueva():
    cueva = ""
    while cueva != "1" and cueva != "2":
        print ("Ha que cueva quieres entrar? 1 o 2?")
        cueva = raw_input()
       
    return cueva

Aqui definimos la funcion CambiarCueva(). Esta funcion le hara elegir al usuario entre la cueva 1 o la cueva 2.
Dentro de esta funcion se crea una nueva variable llamada cueva que almacena una cadena vacía. Después, comenzamos con un ciclo while,  que se va a repetir si el usuario no elije 1 o 2 (este ciclo se utiliza para evitar errores, si el usuario elije otro numero o cualquier otro caracter, el ciclo se repite)
La primera ves que se llama la función, la sentencia:
while cueva != "1" and cueva != "2":
Va a evaluar lo que esta dentro de la variable cueva (que en un principio esta vacía), por lo tanto  cueva != "1" es verdadero y cueva != "2" también es verdadero (si estas dos condiciones son verdaderas la función entra en el ciclo)
Una ves que la función entre en el ciclo, va a preguntar al jugador en que cueva quiere entrar. Cualquier cosa que el jugador escriba se va a guardar en la variable cueva: cueva = raw_input(). Si el jugador escribió 1 o 2 el while va a ser falso y por lo tanto va a terminar retornando lo que esta guardado en la variable cueva: return cueva. Si el jugador escribió cualquier otra cosa, el while va a ser verdadero y por lo tanto se va a repetir.

En la segunda parte seguiremos con el juego. Cualquier duda o sugerencia espero sus comentarios.

    1. Xurand Gomez dice:

      Genial, se ve interesante... espero con ansias el sgte tuto!!

      Saludos!!

      1. PythonDiario dice:

        Hola Xurand, me alegro que te haya gustado, voy a tratar de hacer la segunda parte en estos días. Saludos

    2. JAndresPLP dice:

      Genial idea, me has picado al blog. Añadido a marcadores diarios.

      1. PythonDiario dice:

        Me alegro de que te haya gustado.

    3. Anónimo dice:

      esta genial apenas estoy empezando en esto de python y este post me hizo de mucho para entender como funciona espero el siguiente 😉

      1. PythonDiario dice:

        Gracias, me alegro te guste el juego en python. Te cuento que la segunda parte ya la subí hace un tiempo. En el final de este post esta el enlace, si no puedes acceder desde aquí: https://www.pythondiario.com/2013/06/juego-en-python-reino-del-dragon-parte-2.html
        Saludos

    4. WILLIAN JOSE SUAREZ UCHES dice:

      ya la vi que tonto está mas abajo mil disculpas

    Deja una respuesta

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

    Subir
    White Monkey