Tutorial Hawk 12 -Clases Parte 2

Hola a todos, en el tutorial anterior vimos algunos ejemplos de clases, esta ocasión haré la extensión de clases en Python.


Enseguida les pondré el código del juego creado en el tutorial 10 y pues como es de esperarse esta vez esta implementado con clases.

Lo dejare completo y al final lo explicare linea por linea.



--------------------------------------------------------------------------------------------------------------------
class Jugador():
    def __init__(self):
        self.puntos=0
        self.tema="ninguno"
       
    def captura_nombre(self,personaje):
        while True:
            self.nombre = raw_input()#Campturamos el nombre
            if self.nombre != "":
                break
            print "Introduce tu nombre por favor"
        print personaje.nombre,":\nMucho gusto",self.nombre, "hoy es un buen dia :D"
   
    def elige_tema(self,personaje):
        print "\nHablar de : \n1)Música   2)Comedia   3)Baile   4)Comida   5)Coqueteo   6)Autos   7)Computación"
        self.tema= raw_input()#Campuramos la respuesta
        personaje.dialogos(self)
       
    def puntuacion(self,personaje):
        print " "
   
        #En base a los puntos obtenidos muestra un mensaje final mas que claro xD
        if self.puntos >= 20:
            print personaje.nombre,":\nEres muy agradable, hay que salir luego, este es mi Google+"
        elif self.puntos >=10:
            print personaje.nombre,":\nMe caíste bien, adiós",self.nombre
        elif self.puntos >= 5:
            print personaje.nombre,":\nAdiós", self.nombre
        elif self.puntos >= 0:
            print personaje.nombre,":\nAdiós"
        elif self.puntos < 0:
            print personaje.nombre,":\nEres todo un idiota no se como me tope contigo"
       
class Personajes():
    def __init__(self,nombre,gustos):
        self.nombre=nombre
        self.gustos=gustos
        self.cara = {"Feliz": ":-)", "Triste": ":-(", "Sonriente": ":-D", "Sorprendido": ":-O","Lengua":":-P"}
       
       
    def dialogos(self,jugador):
       
        if int(jugador.tema) == 1:
            print self.nombre,":\nSi ami también me encanta la música  sobre todo la de ProngonStons", self.cara["Feliz"]
            jugador.puntos+= self.gustos["Música"]#sumamos los puntos
            jugador.tema= "ninguno"#reseteamos los gustos

        elif int(jugador.tema) == 2:
            print self.nombre,":\nHey que buen chiste, ¿de donde lo sacaste? ",self.cara["Lengua"]
            jugador.puntos += self.gustos["Comedia"]#sumamos los puntos
            jugador.tema= "ninguno"#reseteamos los gustos

        elif int(jugador.tema) == 3:
            print self.nombre,":\n...este pues si bailo pero casi nada, ocupo andar entonada...",self.cara["Triste"]
            jugador.puntos += self.gustos["Comedia"]#sumamos los puntos
            jugador.tema= "ninguno"#reseteamos los gustos

        elif int(jugador.tema) == 4:
            print self.nombre,":\nSi, ese restaurante esta de lujo, y el servicio es muy bueno, sin duda iría todos los días",self.cara["Feliz"]
            jugador.puntos+= self.gustos["Comida"]#sumamos los puntos
            jugador.tema= "ninguno"#reseteamos los gustos

        elif int(jugador.tema) == 5:
            print self.nombre,":\nPero que te pasa imbecil? Osea, apenas me conoces... IDIOTA!",self.cara["Sorprendido"]
            jugador.puntos+= self.gustos["Coqueteo"]#sumamos los puntos
            jugador.tema= "ninguno"#reseteamos los gustos
       
        elif int(jugador.tema) == 6:
            print self.nombre,":\nPues si tu lo dices... (pinche carro mugroso) si, esta bonito...",self.cara["Triste"]
            jugador.puntos += self.gustos["Autos"]#sumamos los puntos
            jugador.tema= "ninguno"#reseteamos los gustos

        elif int(jugador.tema) == 7:
            print self.nombre,":\nMe encanta la computación, soy programadora en Python",self.cara["Sonriente"]
            jugador.puntos+= self.gustos["Computación"]#sumamos los puntos
            jugador.tema= "ninguno"#reseteamos los gustos
           
    def saludar(self):
        print "Hola mi nombre es",self.nombre, "¿Cual es tu nombre?"
#===============================================================================
# main      
#===============================================================================
def main():

    gustos_andrea= {"Música": 5, "Comedia": 3, "Baile":-2, "Comida": 1, "Coqueteo":-10, "Autos": -2, "Computación": 10}
    andrea= Personajes("Andrea",gustos_andrea)
   
   
   
    andrea.saludar()
  
    jugador1=Jugador()
    jugador1.captura_nombre(andrea)
   
    for i in range(2):
        jugador1.elige_tema(andrea)
     
    jugador1.puntuacion(andrea)
  
   
    return 0
main()
--------------------------------------------------------------------------------------------------------------------

Nuestro programa comienza en la linea 102, en esta linea hacemos una llamada a la función main.

En la función main() linea 83 contiene:
  •  la linea 85 creamos un diccionario llamado gustos_andrea.
  • en la linea 86 creamos un objeto del tipo Personaje, y le enviamos como parámetros el nombre del personaje y sus gustos
  • en la linea 90 llamamos el método saludar de la clase personaje, como podemos ver, la forma de acceder a los métodos de un objeto es con el nombre del objeto seguido de un punto y luego el nombre del método al que queremos acceder.
  • en la linea 92 creamos un objeto del tipo Jugador y en esta ocasión no se le envían parámetros a la clase.
  • En la lineas 93 accedemos al método capturar_nombre() del objeto jugador1 y le enviamos como parámetro el objeto andrea.
  • En la linea 95 tenemos un ciclo for de dos iteraciones.
  • En la linea 96 encontramos la llamada a un método del objeto jugador1 y le mandamos como parámetro el objeto con el cual habrá interacción (andrea).
  • En la linea 98 mandamos llamar el método puntuacion() del objeto jugador1 y le mandamos como parámetro el objeto con el que se realizo la interacción.
Bien ahora hablemos de las clases creadas y sus métodos.

En la linea 1 tenemos la clase Jugador y contiene 4 métodos:

  • El primer método es el constructor el cual contiene dos variables propias del objeto, puntos y tema, a estas solo podemos acceder con el nombre o dirección del objeto, y las identificamos porque siempre comienzan con self seguido de un punto y luego el nombre de la variable.
  • En el método 2 de la linea 6 tenemos el código para capturar el nombre, esta clase recibe como parámetro al personaje con el que estamos interactuando, en este método creamos una nueva variable de clase llamada nombre.
  • Después tenemos el método elige_tema() de la linea 14, en la linea 17  tenemos la llamada al método diálogos del objeto personaje y le enviamos como parámetro al objeto en si y para eso como parámetro solo le mandamos self. (esta es nuestra primer interacción entre métodos)
  •  En el método de la linea 19 tenemos el análisis de la puntuación  este método solo recibimos como parámetro el objeto personaje.
En la linea 34 tenemos la siguiente clase que se en  llama Personajes()  esta clase solo cuenta con dos métodos.

  • Método constructor en la linea 35, este método contiene tres variables de clase, nombre, gustos y cara y recibe como parámetros el nombre del personaje y sus gustos.
  • En la linea 41 tenemos el ultimo método  dialogos(), este método solo contiene los posibles diálogos a mostrar en la ejecución y recibe como parámetro el jugador.


Bien por hoy es todo, espero que les aya servido, si así fue no olviden dejar su +1 hasta la próxima.

Comentarios

Entradas más populares de este blog