コード例 #1
0
    def construir(self):
        """
        Se encargara de construir toda la parte grafica
        """
        self.fondo = Imagen(self.fondo, (0, 0))
        self.fondo.cambiarEscala(0.5)
        self.titulo = Titulo("KACH!", 120, 450, 70, 2, (36, 32, 163))
        self.lblTutorial = Titulo("Tutorial", 450, 30, 40, 2, (36, 32, 163))

        self.btnContinuar = Boton("Continuar")
        self.btnContinuar.modificarPosicion(280, 420)
        self.btnContinuar.modificarTamano(160, 50)
        self.btnContinuar.modificarPosicionTexto(40, 27)
        self.btnContinuar.modificarColor1(234, 234, 216)
        self.btnContinuar.modificarColorLetra1(21, 67, 96)
        self.btnContinuar.modificarColor2(209, 210, 179)
        self.btnContinuar.modificarColorLetra2(21, 67, 96)
        self.btnContinuar.modificarColor3(91, 202, 213)
        self.btnContinuar.modificarColorLetra3(21, 67, 96)
        self.btnContinuar.modificarEvento(7)
        self.btnInicio = Boton("Inicio")
        self.btnInicio.modificarPosicion(460, 420)
        self.btnInicio.modificarTamano(160, 50)
        self.btnInicio.modificarPosicionTexto(30, 27)
        self.btnInicio.modificarColor1(234, 234, 216)
        self.btnInicio.modificarColorLetra1(21, 67, 96)
        self.btnInicio.modificarColor2(209, 210, 179)
        self.btnInicio.modificarColorLetra2(21, 67, 96)
        self.btnInicio.modificarColor3(91, 202, 213)
        self.btnInicio.modificarColorLetra3(21, 67, 96)
        self.btnInicio.modificarEvento(6)

        self.cuadro = Boton("")
        self.cuadro.modificarPosicion(200, 100)
        self.cuadro.modificarTamano(430, 300)
        self.cuadro.modificarPosicionTexto(30, 27)
        self.cuadro.modificarColor1(234, 234, 216)
        self.cuadro.modificarColorLetra1(21, 67, 96)
        self.cuadro.modificarColor2(234, 234, 216)
        self.cuadro.modificarColorLetra2(21, 67, 96)
        self.cuadro.modificarColor3(234, 234, 216)
        self.cuadro.modificarColorLetra3(21, 67, 96)
        self.cuadro.modificarEvento(0)

        self.mensajes()

        #Eventos de los botones
        self.controlador.enviarEventoBoton(self.btnContinuar)
        self.controlador.enviarEventoBoton(self.btnInicio)
コード例 #2
0
    def __init__(self, datoInterno):
        """Cargador principal del boton gestiona en general todas las propiedades
        del la clase

        @param datoInterno: Nombre que habra adentro del boton
        @type datoInterno: str
        """
        self.estadoBoton = 1  #Estado actual del Boton
        self.color1 = (200, 176, 148)  #Color sin pasar por el
        self.color2 = (145, 118, 86)  #Color pasando por el
        self.color3 = (0, 0, 0)  #Color cuando es seleccionado
        self.colorletra1 = (0, 0, 0)  #Color de la letra 1
        self.colorletra2 = (255, 255, 255)  # Color de la letra 2
        self.colorletra3 = (190, 190, 190)  #Color de la letra 3
        self.rectt = (100, 100, 200, 50)  #Tamaño del boton
        self.width = 0  #Tamaño de los bordes
        self.string = datoInterno  #nombre que va a tener que es visible
        self.postextoX = self.rectt[2] + 100
        self.postextoY = self.rectt[3] + 25
        self.texto = Titulo(self.string, self.postextoX, self.postextoY, 15, 2,
                            self.colorletra1)
        self.eventoActivo = 1
        self.activo = True
コード例 #3
0
 def actualizarBoton(self):
     """Actualiza el boton con alguno de los componentes cambiados"""
     if (self.estadoBoton == 1):
         self.texto = Titulo(self.string, self.postextoX, self.postextoY,
                             15, 2, self.colorletra1)
     elif (self.estadoBoton == 2):
         self.texto = Titulo(self.string, self.postextoX, self.postextoY,
                             15, 2, self.colorletra2)
     elif (self.estadoBoton == 3):
         self.texto = Titulo(self.string, self.postextoX, self.postextoY,
                             15, 2, self.colorletra3)
コード例 #4
0
		'tc'  : '5,7',
		'puc' : '1074,20'
	}, {
		'tt'  : 'IPCA+', 
		'dv'  : '15/05/2035',
		'db'  : '23/01/2017',
		'tc'  : '5,56',
		'puc' : '1104,54'
	}, {
		'tt'  : 'IPCA+', 
		'dv'  : '15/05/2035',
		'db'  : '02/02/2017',
		'tc'  : '5,47',
		'puc' : '1125,53'
	}]

	valores_aplicados = [305.88, 303.68, 322.26, 828.40, 438.95]
	precos_atuais = [1347.65, 1347.65, 1347.65, 1347.65, 1347.65]

	array_titulos = []

	for t in titulos:
		titulo = Titulo(t)
		print(titulo)
		array_titulos.append(titulo)


	for i in range(len(array_titulos)):
		operation = Operation(array_titulos[i],'compra', valores_aplicados[i])
		print(round(operation.calculaRendimentoTotal(precos_atuais[i], datetime.now()) * 100, 2))
コード例 #5
0
class Boton(object):
    """Crea Botones con algunas caracteristicas generales para el menu"""
    def __init__(self, datoInterno):
        """Cargador principal del boton gestiona en general todas las propiedades
        del la clase

        @param datoInterno: Nombre que habra adentro del boton
        @type datoInterno: str
        """
        self.estadoBoton = 1  #Estado actual del Boton
        self.color1 = (200, 176, 148)  #Color sin pasar por el
        self.color2 = (145, 118, 86)  #Color pasando por el
        self.color3 = (0, 0, 0)  #Color cuando es seleccionado
        self.colorletra1 = (0, 0, 0)  #Color de la letra 1
        self.colorletra2 = (255, 255, 255)  # Color de la letra 2
        self.colorletra3 = (190, 190, 190)  #Color de la letra 3
        self.rectt = (100, 100, 200, 50)  #Tamaño del boton
        self.width = 0  #Tamaño de los bordes
        self.string = datoInterno  #nombre que va a tener que es visible
        self.postextoX = self.rectt[2] + 100
        self.postextoY = self.rectt[3] + 25
        self.texto = Titulo(self.string, self.postextoX, self.postextoY, 15, 2,
                            self.colorletra1)
        self.eventoActivo = 1
        self.activo = True

    def pintar(self, tamVentana):
        """
        Pinta el Cuadro

        @param tamVentana: Tamano de la ventana
        @type tamVentana: Surface
        """
        if self.activo:
            self.actualizarBoton()
            if (self.estadoBoton == 1):
                pygame.draw.rect(tamVentana, self.color1, self.rectt,
                                 self.width)
            elif (self.estadoBoton == 2):
                pygame.draw.rect(tamVentana, self.color2, self.rectt,
                                 self.width)
            elif (self.estadoBoton == 3):
                pygame.draw.rect(tamVentana, self.color3, self.rectt,
                                 self.width)
            self.texto.pintar(tamVentana)

    def actualizarBoton(self):
        """Actualiza el boton con alguno de los componentes cambiados"""
        if (self.estadoBoton == 1):
            self.texto = Titulo(self.string, self.postextoX, self.postextoY,
                                15, 2, self.colorletra1)
        elif (self.estadoBoton == 2):
            self.texto = Titulo(self.string, self.postextoX, self.postextoY,
                                15, 2, self.colorletra2)
        elif (self.estadoBoton == 3):
            self.texto = Titulo(self.string, self.postextoX, self.postextoY,
                                15, 2, self.colorletra3)

    def estaEncima(self, posX, posY):
        """
        Revisa si las coordenadas que se dan estan dentro del boton

        @param posX: Posicion X que se va a revisar
        @type posX: int
        @param posY: Posicion Y que se va a revisar
        @type posY: int

        @return: Valor True o False diciendo si esta encima
        @rtype: bool
        """
        if self.activo:
            return ((self.rectt[0] <= posX and self.rectt[1] <= posY)
                    and ((self.rectt[0] + self.rectt[2]) >= posX)
                    and ((self.rectt[1] + self.rectt[3]) >= posY))
        return False

    def modificarString(self, string):
        """
        Modifica string visible

        @param string: Nombre nuevo
        @type string: str
        """
        self.string = string

    def modificarTamano(self, posX, posY):
        """
        Modifica el tamano de los botones

        @param posX: tamano por X
        @param posY: tamano por Y
        @type posX: int
        @type posY: int
        """
        self.rectt = (self.rectt[0], self.rectt[1], posX, posY)
        self.actualizarBoton()

    def modificarPosicion(self, tamX, tamY):
        """
        Modifica la posicion que va a aparecer los botones

        @param tamX: posicion por X
        @param tamY: posicion por Y
        @type tamX: int
        @type tamY: int
        """

        self.rectt = (tamX, tamY, self.rectt[2], self.rectt[3])
        self.postextoX = tamX + 100
        self.postextoY = tamY + 25
        self.actualizarBoton()

    def modificarColor1(self, R, G, B):
        """
        Modifica los colores del boton sin estar el cursor encima

        @param R: Seleccion del color para RGB
        @param G: Seleccion del color para RGB
        @param B: Seleccion del color para RGB
        @type R: int
        @type G: int
        @type B: int
        """
        self.color1 = (R, G, B)
        self.actualizarBoton()

    def modificarColor2(self, R, G, B):
        """
        Modifica los colores del boton estando el cursor encima

        @param R: Seleccion del color para RGB
        @param G: Seleccion del color para RGB
        @param B: Seleccion del color para RGB
        @type R: int
        @type G: int
        @type B: int
        """
        self.color2 = (R, G, B)
        self.actualizarBoton()

    def modificarColor3(self, R, G, B):
        """
        Modifica los colores del boton estando el cursor encima

        @param R: Seleccion del color para RGB
        @param G: Seleccion del color para RGB
        @param B: Seleccion del color para RGB
        @type R: int
        @type G: int
        @type B: int
        """
        self.color3 = (R, G, B)
        self.actualizarBoton()

    def modificarColorLetra1(self, R, G, B):
        """
        Modifica los colores de la letra del boton sin estar el cursor encima

        @param R: Seleccion del color para RGB
        @param G: Seleccion del color para RGB
        @param B: Seleccion del color para RGB
        @type R: int
        @type G: int
        @type B: int
        """
        self.colorletra1 = (R, G, B)
        self.actualizarBoton()

    def modificarColorLetra2(self, R, G, B):
        """
        Modifica los colores de la letra del boton estando el cursor encima

        @param R: Seleccion del color para RGB
        @param G: Seleccion del color para RGB
        @param B: Seleccion del color para RGB
        @type R: int
        @type G: int
        @type B: int
        """
        self.colorletra2 = (R, G, B)
        self.actualizarBoton()

    def modificarColorLetra3(self, R, G, B):
        """
        Modifica los colores de la letra del boton estando el cursor encima

        @param R: Seleccion del color para RGB
        @param G: Seleccion del color para RGB
        @param B: Seleccion del color para RGB
        @type R: int
        @type G: int
        @type B: int
        """
        self.colorletra3 = (R, G, B)
        self.actualizarBoton()

    def modificarGrosor(self, width):
        """
        Modifica el grueso del boton

        @param width: Ancho del borde del boton
        @type width: int
        """
        self.width = width
        self.actualizarBoton()

    def modificarEstadoBoton(self, estado):
        """
        Modifica el actual estado del boton

        @param estado: Estado del boton a cambiar
        @type estado: int
        """
        self.estadoBoton = estado

    def modificarEvento(self, evento):
        """
        Evento que se va a enlazar cuando se activa con el cursor oprimido

        @param evento: Numero de enlace para los eventos
        @type evento: int
        """
        self.eventoActivo = evento

    def modificarActivo(self, activo):
        """
        Da la posibilidad de inhabilitar el boton en cuestion, ademas de su evento

        @param activo: situacion actual del boton
        @type activo: boolean
        """
        self.activo = activo

    def modificarPosicionTexto(self, posX, posY):
        """
        Modifica la posicion en la que el texto va a aparecer para el boton

        @param posX: Posicion por X
        @param posY: Posicion por Y
        @type posX: int
        @type posY: int
        """
        self.postextoX = self.rectt[0] + posX
        self.postextoY = self.rectt[1] + posY

    def getColor1(self):
        """
        Retorna el valor del color (R, G, B)

        @return: Color actual del boton
        @rtype: (R, G, B)
        """
        return self.color1

    def getColor2(self):
        """
        Retorna el valor del color2 (R, G, B)

        @return: Color 2 actual del boton
        @rtype: (R, G, B)
        """
        return self.color2

    def getColor3(self):
        """
        Retorna el valor del color3 (R, G, B)

        @return: Color 3 actual del boton
        @rtype: (R, G, B)
        """
        return self.color3

    def getRect(self):
        """
        Retorna el valor del boton, este tiene (TamX, TamY, PosX, PosY)

        @return: Datos con respecto a tamano y posicion
        @rtype: (TamX, TamY, PosX, PosY)
        """
        return self.rectt

    def getWidth(self):
        """
        Retorna el ancho del borde del boton

        @return: Ancho del borde del boton
        @rtype: int
        """
        return self.width

    def getString(self):
        """
        Retorna el valor del string interno

        @return: String interno que se muestra en el boton
        @rtype: str
        """
        return self.string

    def getEstadoBoton(self):
        """
        Retorna el estado del boton sea:
            1. Color1, Letra1 para el boton inactivo
            2. Color2, Letra2 para el boton con el cursor encima
            3. Color3, Letra3 para el boton oprimido

        @return: Entero que da el actual estado del boton
        @rtype: int
        """
        return self.estadoBoton

    def geteventoActivo(self):
        """
        Retorna el Evento del Boton

        @return: Numero del evento del boton
        @rtype: int
        """
        return self.eventoActivo

    def getActivo(self):
        """
        Retorna si el evento esta activo o no

        @return: Boton Activo?
        @rtype: boolean
        """
        return self.activo
コード例 #6
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Importar modulos
import pygame
import director
from director import Director
from fase import Fase
from menu import Menu
from titulo import Titulo

if __name__ == '__main__':
    pygame.font.init()
    # Inicializamos la libreria de pygame
    pygame.init()
    # Creamos el director
    director = Director()
    # Creamos la escena con la pantalla inicial

    escena = Menu(director)

    #escena = Fase(director,'agua.xml')
    escena = Titulo(director)

    # Le decimos al director que apile esta escena
    director.apilarEscena(escena)
    # Y ejecutamos el juego
    director.ejecutar()
    # Cuando se termine la ejecución, finaliza la librería
    pygame.quit()
コード例 #7
0
 def construir(self):
     self.titulo = Titulo("KACH!", 320, 50, 70, 1, (126, 81, 9))
     self.titulo_terminado = Titulo("Juego Terminado!", 320, 100, 40, 3,
                                    (14, 98, 81))
     self.titulo_puntaje = Titulo("Su puntaje es:", 320, 150, 30, 4,
                                  (36, 32, 163))
     self.lblPuntuacion = Titulo("0", 300, 260, 180, 2, (0, 0, 0))
     self.lblinstrucciones = Titulo("Presione <Enter> para continuar", 320,
                                    440, 30, 4, (126, 81, 9))
     self.lblindicacion = Titulo("Ingrese Alias:", 320, 360, 25, 3,
                                 (14, 98, 81))
     self.input = TextBox((220, 380, 200, 30),
                          command=self.enviar_reporte,
                          clear_on_enter=True,
                          inactive_on_enter=False)
コード例 #8
0
class Terminar:
    def __init__(self):
        self.puntuacion = 0
        self.color_fondo = (255, 255, 255)

        self.construir()
        self.desactivarTextBox()

        self.final = False

    def construir(self):
        self.titulo = Titulo("KACH!", 320, 50, 70, 1, (126, 81, 9))
        self.titulo_terminado = Titulo("Juego Terminado!", 320, 100, 40, 3,
                                       (14, 98, 81))
        self.titulo_puntaje = Titulo("Su puntaje es:", 320, 150, 30, 4,
                                     (36, 32, 163))
        self.lblPuntuacion = Titulo("0", 300, 260, 180, 2, (0, 0, 0))
        self.lblinstrucciones = Titulo("Presione <Enter> para continuar", 320,
                                       440, 30, 4, (126, 81, 9))
        self.lblindicacion = Titulo("Ingrese Alias:", 320, 360, 25, 3,
                                    (14, 98, 81))
        self.input = TextBox((220, 380, 200, 30),
                             command=self.enviar_reporte,
                             clear_on_enter=True,
                             inactive_on_enter=False)

    def activarTextBox(self):
        self.input.active = True

    def desactivarTextBox(self):
        self.input.active = False

    def pintar(self, screen):
        screen.fill(self.color_fondo)
        self.titulo.pintar(screen)

        self.titulo_terminado.pintar(screen)
        self.titulo_puntaje.pintar(screen)
        self.lblPuntuacion.pintar(screen)
        self.lblindicacion.pintar(screen)
        self.lblinstrucciones.pintar(screen)

        self.input.update()
        self.input.draw(screen)

    def eventos(self, evento):
        self.input.get_event(evento)

    def enviar_reporte(self, id, final):
        if (final != ""):
            self.conexion = Conexion()
            fecha = time.strftime("%y-%m-%d")
            self.conexion.enviar_registro(self.query_envio(),
                                          (final, fecha, self.puntuacion))
            self.final = True

    def modificar_puntuacion(self, puntuacion):
        self.puntuacion = puntuacion
        self.lblPuntuacion.modificarTexto(str(puntuacion))

    def getFinal(self):
        return self.final

    def reiniciar(self):
        self.final = False

    def query_envio(self):
        return (
            "INSERT INTO Jugador(nombre,fecha,puntuacion) VALUES (%s, %s, %s);"
        )
コード例 #9
0
    def construir(self):
        """
        Metodo que va a generar la construccion grafica del juego
        """
        self.fondo = Imagen(self.fondo, (0, 0))
        self.fondo.cambiarEscala(0.5)
        self.titulo = Titulo("KACH!", 120, 450, 70, 2, (36, 32, 163))
        self.lblNivel = Titulo("Nivel 1", 550, 30, 40, 2, (36, 32, 163))

        self.cuadro = Boton("")
        self.cuadro.modificarPosicion(10, 50)
        self.cuadro.modificarTamano(620, 200)
        self.cuadro.modificarPosicionTexto(30, 27)
        self.cuadro.modificarColor1(234, 234, 216)
        self.cuadro.modificarColorLetra1(21, 67, 96)
        self.cuadro.modificarColor2(234, 234, 216)
        self.cuadro.modificarColorLetra2(21, 67, 96)
        self.cuadro.modificarColor3(234, 234, 216)
        self.cuadro.modificarColorLetra3(21, 67, 96)
        self.cuadro.modificarEvento(0)

        self.cuadro_corazon = Boton("Vidas:")
        self.cuadro_corazon.modificarPosicion(10, 360)
        self.cuadro_corazon.modificarTamano(180, 40)
        self.cuadro_corazon.modificarPosicionTexto(30, 20)
        self.cuadro_corazon.modificarColor1(255, 255, 255)
        self.cuadro_corazon.modificarColorLetra1(21, 67, 96)
        self.cuadro_corazon.modificarColor2(255, 255, 255)
        self.cuadro_corazon.modificarColorLetra2(21, 67, 96)
        self.cuadro_corazon.modificarColor3(255, 255, 255)
        self.cuadro_corazon.modificarColorLetra3(21, 67, 96)
        self.cuadro_corazon.modificarEvento(0)

        self.cuadro_tiempo = Boton("Tiempo:")
        self.cuadro_tiempo.modificarPosicion(10, 10)
        self.cuadro_tiempo.modificarTamano(180, 40)
        self.cuadro_tiempo.modificarPosicionTexto(30, 20)
        self.cuadro_tiempo.modificarColor1(255, 255, 255)
        self.cuadro_tiempo.modificarColorLetra1(21, 67, 96)
        self.cuadro_tiempo.modificarColor2(255, 255, 255)
        self.cuadro_tiempo.modificarColorLetra2(21, 67, 96)
        self.cuadro_tiempo.modificarColor3(255, 255, 255)
        self.cuadro_tiempo.modificarColorLetra3(21, 67, 96)
        self.cuadro_tiempo.modificarEvento(0)

        self.lblTiempo = Titulo("30", 120, 32, 20, 2, (20, 90, 50))

        self.cuadro_Puntuacion = Boton("Puntuacion:")
        self.cuadro_Puntuacion.modificarPosicion(450, 360)
        self.cuadro_Puntuacion.modificarTamano(180, 40)
        self.cuadro_Puntuacion.modificarPosicionTexto(50, 20)
        self.cuadro_Puntuacion.modificarColor1(255, 255, 255)
        self.cuadro_Puntuacion.modificarColorLetra1(21, 67, 96)
        self.cuadro_Puntuacion.modificarColor2(255, 255, 255)
        self.cuadro_Puntuacion.modificarColorLetra2(21, 67, 96)
        self.cuadro_Puntuacion.modificarColor3(255, 255, 255)
        self.cuadro_Puntuacion.modificarColorLetra3(21, 67, 96)
        self.cuadro_Puntuacion.modificarEvento(0)

        self.lblPuntuacion = Titulo("0", 590, 380, 20, 2, (36, 32, 163))

        img_vidas = "view/img/corazon.jpg"
        self.vida1 = Imagen(img_vidas, (65, 360))
        self.vida1.cambiarEscala(0.25)
        self.vida2 = Imagen(img_vidas, (105, 360))
        self.vida2.cambiarEscala(0.25)
        self.vida3 = Imagen(img_vidas, (145, 360))
        self.vida3.cambiarEscala(0.25)

        self.btnOpcion1 = Boton("Opcion1")
        self.btnOpcion1.modificarPosicion(30, 280)
        self.btnOpcion1.modificarTamano(140, 50)
        self.btnOpcion1.modificarPosicionTexto(60, 27)
        self.btnOpcion1.modificarColor1(234, 234, 216)
        self.btnOpcion1.modificarColorLetra1(21, 67, 96)
        self.btnOpcion1.modificarColor2(209, 210, 179)
        self.btnOpcion1.modificarColorLetra2(21, 67, 96)
        self.btnOpcion1.modificarColor3(91, 202, 213)
        self.btnOpcion1.modificarColorLetra3(21, 67, 96)
        self.btnOpcion1.modificarEvento(8)
        self.btnOpcion2 = Boton("Opcion2")
        self.btnOpcion2.modificarPosicion(180, 280)
        self.btnOpcion2.modificarTamano(140, 50)
        self.btnOpcion2.modificarPosicionTexto(60, 27)
        self.btnOpcion2.modificarColor1(234, 234, 216)
        self.btnOpcion2.modificarColorLetra1(21, 67, 96)
        self.btnOpcion2.modificarColor2(209, 210, 179)
        self.btnOpcion2.modificarColorLetra2(21, 67, 96)
        self.btnOpcion2.modificarColor3(91, 202, 213)
        self.btnOpcion2.modificarColorLetra3(21, 67, 96)
        self.btnOpcion2.modificarEvento(9)
        self.btnOpcion3 = Boton("Opcion3")
        self.btnOpcion3.modificarPosicion(330, 280)
        self.btnOpcion3.modificarTamano(140, 50)
        self.btnOpcion3.modificarPosicionTexto(60, 27)
        self.btnOpcion3.modificarColor1(234, 234, 216)
        self.btnOpcion3.modificarColorLetra1(21, 67, 96)
        self.btnOpcion3.modificarColor2(209, 210, 179)
        self.btnOpcion3.modificarColorLetra2(21, 67, 96)
        self.btnOpcion3.modificarColor3(91, 202, 213)
        self.btnOpcion3.modificarColorLetra3(21, 67, 96)
        self.btnOpcion3.modificarEvento(10)
        self.btnOpcion4 = Boton("Opcion4")
        self.btnOpcion4.modificarPosicion(480, 280)
        self.btnOpcion4.modificarTamano(140, 50)
        self.btnOpcion4.modificarPosicionTexto(60, 27)
        self.btnOpcion4.modificarColor1(234, 234, 216)
        self.btnOpcion4.modificarColorLetra1(21, 67, 96)
        self.btnOpcion4.modificarColor2(209, 210, 179)
        self.btnOpcion4.modificarColorLetra2(21, 67, 96)
        self.btnOpcion4.modificarColor3(91, 202, 213)
        self.btnOpcion4.modificarColorLetra3(21, 67, 96)
        self.btnOpcion4.modificarEvento(11)

        self.btnInicio = Boton("Salir")
        self.btnInicio.modificarPosicion(460, 420)
        self.btnInicio.modificarTamano(160, 50)
        self.btnInicio.modificarPosicionTexto(30, 27)
        self.btnInicio.modificarColor1(234, 234, 216)
        self.btnInicio.modificarColorLetra1(21, 67, 96)
        self.btnInicio.modificarColor2(209, 210, 179)
        self.btnInicio.modificarColorLetra2(21, 67, 96)
        self.btnInicio.modificarColor3(91, 202, 213)
        self.btnInicio.modificarColorLetra3(21, 67, 96)
        self.btnInicio.modificarEvento(6)

        self.pregunta = Titulo("", 320, 60, 17, 3, (36, 32, 163))
        self.pregunta1 = Titulo("", 320, 90, 17, 3, (36, 32, 163))
        self.pregunta2 = Titulo("", 320, 120, 17, 3, (36, 32, 163))
        self.pregunta3 = Titulo("", 320, 150, 17, 3, (36, 32, 163))
        self.pregunta4 = Titulo("", 320, 180, 17, 3, (36, 32, 163))
        self.pregunta5 = Titulo("", 320, 210, 17, 3, (36, 32, 163))
        self.pregunta6 = Titulo("", 320, 240, 17, 3, (36, 32, 163))

        #Enviar al controlador
        self.controlador.enviarEventoBoton(self.btnOpcion1)
        self.controlador.enviarEventoBoton(self.btnOpcion2)
        self.controlador.enviarEventoBoton(self.btnOpcion3)
        self.controlador.enviarEventoBoton(self.btnOpcion4)
        self.controlador.enviarEventoBoton(self.btnInicio)
コード例 #10
0
class Juego(object):
    """Clase que carga todo lo referente al juego"""
    def __init__(self, ctrl):
        self.controlador = ctrl

        self.mensaje_encriptado = ""
        self.mensaje_desencriptado = ""

        self.consulta_query = "SELECT * FROM Palabra;"
        self.conexion = Conexion()
        self.palabras = self.conexion.enviar_consulta(self.consulta_query)

        self.fondo = "view/img/fondos/Espera-espectral.jpg"

        self.abecedario = [
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
            'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
        ]

        self.mensajes()

        self.construir()

        self.vida_actuales = 2
        self.puntuacion = 0
        self.dificultad = 1
        self.tiempoJuego = 0
        # 1 -> Facil
        # 2 -> medio
        # 3 -> Dificil
        # Para implementar

    def mensajes(self):
        self.titulos = {
            "e_invertir": "Encriptar Invertir",
            "d_invertir": "Desencriptar Invertir",
            "e_atbash": "Encriptar Atbash",
            "d_atbash": "Desencriptar Atbash",
            "e_polibi": "Encriptar Polibi",
            "d_polibi": "Desencriptar Polibi",
            "e_cesar": "Encriptar Cesar",
            "d_cesar": "Desencriptar Cesar"
        }

    def construir(self):
        """
        Metodo que va a generar la construccion grafica del juego
        """
        self.fondo = Imagen(self.fondo, (0, 0))
        self.fondo.cambiarEscala(0.5)
        self.titulo = Titulo("KACH!", 120, 450, 70, 2, (36, 32, 163))
        self.lblNivel = Titulo("Nivel 1", 550, 30, 40, 2, (36, 32, 163))

        self.cuadro = Boton("")
        self.cuadro.modificarPosicion(10, 50)
        self.cuadro.modificarTamano(620, 200)
        self.cuadro.modificarPosicionTexto(30, 27)
        self.cuadro.modificarColor1(234, 234, 216)
        self.cuadro.modificarColorLetra1(21, 67, 96)
        self.cuadro.modificarColor2(234, 234, 216)
        self.cuadro.modificarColorLetra2(21, 67, 96)
        self.cuadro.modificarColor3(234, 234, 216)
        self.cuadro.modificarColorLetra3(21, 67, 96)
        self.cuadro.modificarEvento(0)

        self.cuadro_corazon = Boton("Vidas:")
        self.cuadro_corazon.modificarPosicion(10, 360)
        self.cuadro_corazon.modificarTamano(180, 40)
        self.cuadro_corazon.modificarPosicionTexto(30, 20)
        self.cuadro_corazon.modificarColor1(255, 255, 255)
        self.cuadro_corazon.modificarColorLetra1(21, 67, 96)
        self.cuadro_corazon.modificarColor2(255, 255, 255)
        self.cuadro_corazon.modificarColorLetra2(21, 67, 96)
        self.cuadro_corazon.modificarColor3(255, 255, 255)
        self.cuadro_corazon.modificarColorLetra3(21, 67, 96)
        self.cuadro_corazon.modificarEvento(0)

        self.cuadro_tiempo = Boton("Tiempo:")
        self.cuadro_tiempo.modificarPosicion(10, 10)
        self.cuadro_tiempo.modificarTamano(180, 40)
        self.cuadro_tiempo.modificarPosicionTexto(30, 20)
        self.cuadro_tiempo.modificarColor1(255, 255, 255)
        self.cuadro_tiempo.modificarColorLetra1(21, 67, 96)
        self.cuadro_tiempo.modificarColor2(255, 255, 255)
        self.cuadro_tiempo.modificarColorLetra2(21, 67, 96)
        self.cuadro_tiempo.modificarColor3(255, 255, 255)
        self.cuadro_tiempo.modificarColorLetra3(21, 67, 96)
        self.cuadro_tiempo.modificarEvento(0)

        self.lblTiempo = Titulo("30", 120, 32, 20, 2, (20, 90, 50))

        self.cuadro_Puntuacion = Boton("Puntuacion:")
        self.cuadro_Puntuacion.modificarPosicion(450, 360)
        self.cuadro_Puntuacion.modificarTamano(180, 40)
        self.cuadro_Puntuacion.modificarPosicionTexto(50, 20)
        self.cuadro_Puntuacion.modificarColor1(255, 255, 255)
        self.cuadro_Puntuacion.modificarColorLetra1(21, 67, 96)
        self.cuadro_Puntuacion.modificarColor2(255, 255, 255)
        self.cuadro_Puntuacion.modificarColorLetra2(21, 67, 96)
        self.cuadro_Puntuacion.modificarColor3(255, 255, 255)
        self.cuadro_Puntuacion.modificarColorLetra3(21, 67, 96)
        self.cuadro_Puntuacion.modificarEvento(0)

        self.lblPuntuacion = Titulo("0", 590, 380, 20, 2, (36, 32, 163))

        img_vidas = "view/img/corazon.jpg"
        self.vida1 = Imagen(img_vidas, (65, 360))
        self.vida1.cambiarEscala(0.25)
        self.vida2 = Imagen(img_vidas, (105, 360))
        self.vida2.cambiarEscala(0.25)
        self.vida3 = Imagen(img_vidas, (145, 360))
        self.vida3.cambiarEscala(0.25)

        self.btnOpcion1 = Boton("Opcion1")
        self.btnOpcion1.modificarPosicion(30, 280)
        self.btnOpcion1.modificarTamano(140, 50)
        self.btnOpcion1.modificarPosicionTexto(60, 27)
        self.btnOpcion1.modificarColor1(234, 234, 216)
        self.btnOpcion1.modificarColorLetra1(21, 67, 96)
        self.btnOpcion1.modificarColor2(209, 210, 179)
        self.btnOpcion1.modificarColorLetra2(21, 67, 96)
        self.btnOpcion1.modificarColor3(91, 202, 213)
        self.btnOpcion1.modificarColorLetra3(21, 67, 96)
        self.btnOpcion1.modificarEvento(8)
        self.btnOpcion2 = Boton("Opcion2")
        self.btnOpcion2.modificarPosicion(180, 280)
        self.btnOpcion2.modificarTamano(140, 50)
        self.btnOpcion2.modificarPosicionTexto(60, 27)
        self.btnOpcion2.modificarColor1(234, 234, 216)
        self.btnOpcion2.modificarColorLetra1(21, 67, 96)
        self.btnOpcion2.modificarColor2(209, 210, 179)
        self.btnOpcion2.modificarColorLetra2(21, 67, 96)
        self.btnOpcion2.modificarColor3(91, 202, 213)
        self.btnOpcion2.modificarColorLetra3(21, 67, 96)
        self.btnOpcion2.modificarEvento(9)
        self.btnOpcion3 = Boton("Opcion3")
        self.btnOpcion3.modificarPosicion(330, 280)
        self.btnOpcion3.modificarTamano(140, 50)
        self.btnOpcion3.modificarPosicionTexto(60, 27)
        self.btnOpcion3.modificarColor1(234, 234, 216)
        self.btnOpcion3.modificarColorLetra1(21, 67, 96)
        self.btnOpcion3.modificarColor2(209, 210, 179)
        self.btnOpcion3.modificarColorLetra2(21, 67, 96)
        self.btnOpcion3.modificarColor3(91, 202, 213)
        self.btnOpcion3.modificarColorLetra3(21, 67, 96)
        self.btnOpcion3.modificarEvento(10)
        self.btnOpcion4 = Boton("Opcion4")
        self.btnOpcion4.modificarPosicion(480, 280)
        self.btnOpcion4.modificarTamano(140, 50)
        self.btnOpcion4.modificarPosicionTexto(60, 27)
        self.btnOpcion4.modificarColor1(234, 234, 216)
        self.btnOpcion4.modificarColorLetra1(21, 67, 96)
        self.btnOpcion4.modificarColor2(209, 210, 179)
        self.btnOpcion4.modificarColorLetra2(21, 67, 96)
        self.btnOpcion4.modificarColor3(91, 202, 213)
        self.btnOpcion4.modificarColorLetra3(21, 67, 96)
        self.btnOpcion4.modificarEvento(11)

        self.btnInicio = Boton("Salir")
        self.btnInicio.modificarPosicion(460, 420)
        self.btnInicio.modificarTamano(160, 50)
        self.btnInicio.modificarPosicionTexto(30, 27)
        self.btnInicio.modificarColor1(234, 234, 216)
        self.btnInicio.modificarColorLetra1(21, 67, 96)
        self.btnInicio.modificarColor2(209, 210, 179)
        self.btnInicio.modificarColorLetra2(21, 67, 96)
        self.btnInicio.modificarColor3(91, 202, 213)
        self.btnInicio.modificarColorLetra3(21, 67, 96)
        self.btnInicio.modificarEvento(6)

        self.pregunta = Titulo("", 320, 60, 17, 3, (36, 32, 163))
        self.pregunta1 = Titulo("", 320, 90, 17, 3, (36, 32, 163))
        self.pregunta2 = Titulo("", 320, 120, 17, 3, (36, 32, 163))
        self.pregunta3 = Titulo("", 320, 150, 17, 3, (36, 32, 163))
        self.pregunta4 = Titulo("", 320, 180, 17, 3, (36, 32, 163))
        self.pregunta5 = Titulo("", 320, 210, 17, 3, (36, 32, 163))
        self.pregunta6 = Titulo("", 320, 240, 17, 3, (36, 32, 163))

        #Enviar al controlador
        self.controlador.enviarEventoBoton(self.btnOpcion1)
        self.controlador.enviarEventoBoton(self.btnOpcion2)
        self.controlador.enviarEventoBoton(self.btnOpcion3)
        self.controlador.enviarEventoBoton(self.btnOpcion4)
        self.controlador.enviarEventoBoton(self.btnInicio)

    def activar_botones(self):
        self.btnOpcion1.modificarActivo(True)
        self.btnOpcion2.modificarActivo(True)
        self.btnOpcion3.modificarActivo(True)
        self.btnOpcion4.modificarActivo(True)
        self.btnInicio.modificarActivo(True)

    def desactivar_botones(self):
        self.btnOpcion1.modificarActivo(False)
        self.btnOpcion2.modificarActivo(False)
        self.btnOpcion3.modificarActivo(False)
        self.btnOpcion4.modificarActivo(False)
        self.btnInicio.modificarActivo(False)

    def reiniciar(self):
        #self.seleccionar_pregunta()
        self.vida_actuales = 2
        self.puntuacion = 0
        self.dificultad = 1

    def num_aleatorio(self, ini, fin):
        return random.randint(ini, fin)

    def pintar(self, screen, tiempo):
        """
        Pinta en pantalla la parte grafica

        @param screen: Pantalla en la que se va a pintar
        @type screen: Surface
        """
        self.fondo.ponerImagen(screen)
        self.titulo.pintar(screen)
        self.lblNivel.pintar(screen)

        self.cuadro.pintar(screen)
        self.cuadro_corazon.pintar(screen)

        self.cuadro_tiempo.pintar(screen)
        self.cuadro_Puntuacion.pintar(screen)

        self.tiempoJuego = tiempo
        if (tiempo <= 3):
            self.lblTiempo.modificarColor((148, 49, 38))
        elif (tiempo <= 6):
            self.lblTiempo.modificarColor((229, 175, 32))
        else:
            self.lblTiempo.modificarColor((91, 229, 69))
        self.lblTiempo.modificarTexto(str(tiempo))
        self.lblTiempo.pintar(screen)

        self.lblPuntuacion.modificarTexto(str(self.puntuacion))
        self.lblPuntuacion.pintar(screen)

        if (self.vida_actuales == 2):
            self.vida1.ponerImagen(screen)
            self.vida2.ponerImagen(screen)
            self.vida3.ponerImagen(screen)
        elif (self.vida_actuales == 1):
            self.vida1.ponerImagen(screen)
            self.vida2.ponerImagen(screen)
        elif (self.vida_actuales == 0):
            self.vida1.ponerImagen(screen)
        else:
            #GAME OVER
            pass

        self.pregunta.pintar(screen)
        self.pregunta1.pintar(screen)
        self.pregunta2.pintar(screen)
        self.pregunta3.pintar(screen)
        self.pregunta4.pintar(screen)
        self.pregunta5.pintar(screen)
        self.pregunta6.pintar(screen)

        self.btnOpcion1.pintar(screen)
        self.btnOpcion2.pintar(screen)
        self.btnOpcion3.pintar(screen)
        self.btnOpcion4.pintar(screen)
        self.btnInicio.pintar(screen)

    def seleccionar_pregunta(self):
        self.pregunta.modificarTexto("")
        self.pregunta1.modificarTexto("")
        self.pregunta2.modificarTexto("")
        self.pregunta3.modificarTexto("")
        self.pregunta4.modificarTexto("")
        self.pregunta5.modificarTexto("")
        self.pregunta6.modificarTexto("")
        self.btnOpcion1.modificarString("")
        self.btnOpcion2.modificarString("")
        self.btnOpcion3.modificarString("")
        self.btnOpcion4.modificarString("")
        tipo = self.num_aleatorio(1, 2)
        #decidira si es encriptar o desencriptar
        #1 -> encriptar
        #2 -> Desencriptar
        if (tipo == 1):
            tipo = self.num_aleatorio(0, len(self.palabras) - 1)
            (_, self.mensaje_desencriptado) = self.palabras[tipo]
            tipo = self.num_aleatorio(1, 4)
            self.pregunta1.modificarTexto("La Palabra a Encriptar es:")
            if (tipo == 1):
                #Invertida
                self.pregunta.modificarTexto(self.titulos["e_invertir"])
                self.mensaje_encriptado = self.lista_to_str_espaciado(
                    self.invetirOracion(self.mensaje_desencriptado))
                self.pregunta2.modificarTexto(self.mensaje_desencriptado)
                self.pregunta3.modificarTexto(
                    "Seleccione la encriptacion correcta")
                tipo = self.num_aleatorio(1, 4)  #Pone el correcto
                if (tipo == 1):
                    self.btnOpcion1.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion3.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion4.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                elif (tipo == 2):
                    self.btnOpcion2.modificarString(self.mensaje_encriptado)
                    self.btnOpcion1.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion3.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion4.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                elif (tipo == 3):
                    self.btnOpcion3.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion1.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion4.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                elif (tipo == 4):
                    self.btnOpcion4.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion3.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
                    self.btnOpcion1.modificarString(
                        self.lista_to_str_espaciado(
                            self.invetirOracion(
                                self.palabras[self.num_aleatorio(
                                    0,
                                    len(self.palabras) - 1)][1])))
            elif (tipo == 2):
                #encriptar ATBASH
                self.pregunta.modificarTexto(self.titulos["e_atbash"])
                self.mensaje_encriptado = self.encriptar_atbash(
                    self.mensaje_desencriptado)
                self.pregunta2.modificarTexto(self.mensaje_desencriptado)
                self.pregunta4.modificarTexto(
                    self.lista_to_str_espaciado(self.abecedario))
                self.pregunta5.modificarTexto(
                    self.lista_to_str_espaciado(reversed(self.abecedario)))
                self.pregunta6.modificarTexto(
                    "Seleccione la encripcion Correcta")
                tipo = self.num_aleatorio(1, 4)  #Pone el correcto
                if (tipo == 1):
                    self.btnOpcion1.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion3.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion4.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                elif (tipo == 2):
                    self.btnOpcion2.modificarString(self.mensaje_encriptado)
                    self.btnOpcion1.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion3.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion4.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                elif (tipo == 3):
                    self.btnOpcion3.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion1.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion4.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                elif (tipo == 4):
                    self.btnOpcion4.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion3.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
                    self.btnOpcion1.modificarString(
                        self.encriptar_atbash(self.palabras[self.num_aleatorio(
                            0,
                            len(self.palabras) - 1)][1]))
            elif (tipo == 3):
                #encriptar Polibi
                self.pregunta.modificarTexto(self.titulos["e_polibi"])
                self.mensaje_encriptado = self.encriptar_polibi_5(
                    self.mensaje_desencriptado)
                self.pregunta2.modificarTexto(self.mensaje_desencriptado)
                self.pregunta5.modificarTexto(
                    "Seleccione la encripcion Correcta")
                tipo = self.num_aleatorio(1, 4)  #Pone el correcto
                if (tipo == 1):
                    self.btnOpcion1.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion3.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion4.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                elif (tipo == 2):
                    self.btnOpcion2.modificarString(self.mensaje_encriptado)
                    self.btnOpcion1.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion3.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion4.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                elif (tipo == 3):
                    self.btnOpcion3.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion1.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion4.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                elif (tipo == 4):
                    self.btnOpcion4.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion3.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
                    self.btnOpcion1.modificarString(
                        self.encriptar_polibi_5(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1]))
            elif (tipo == 4):
                #encriptar cesar
                self.pregunta.modificarTexto(self.titulos["e_cesar"])
                self.mensaje_encriptado = self.CodificarCesar(
                    self.mensaje_desencriptado, 3)
                self.pregunta2.modificarTexto(self.mensaje_desencriptado)
                self.pregunta4.modificarTexto(
                    self.lista_to_str_espaciado(self.abecedario))
                self.pregunta5.modificarTexto(
                    self.lista_to_str_espaciado(reversed(self.abecedario)))
                self.pregunta6.modificarTexto(
                    "Seleccione la encripcion Correcta")
                tipo = self.num_aleatorio(1, 4)  #Pone el correcto
                if (tipo == 1):
                    self.btnOpcion1.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion3.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion4.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                elif (tipo == 2):
                    self.btnOpcion2.modificarString(self.mensaje_encriptado)
                    self.btnOpcion1.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion3.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion4.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                elif (tipo == 3):
                    self.btnOpcion3.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion1.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion4.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                elif (tipo == 4):
                    self.btnOpcion4.modificarString(self.mensaje_encriptado)
                    self.btnOpcion2.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion3.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))
                    self.btnOpcion1.modificarString(
                        self.CodificarCesar(
                            self.palabras[self.num_aleatorio(
                                0,
                                len(self.palabras) - 1)][1], 3))

        else:
            tipo = self.num_aleatorio(0, len(self.palabras) - 1)
            (_, self.mensaje_desencriptado) = self.palabras[tipo]
            tipo = self.num_aleatorio(1, 4)
            self.pregunta1.modificarTexto("La Palabra a Desencriptar es:")
            if (tipo == 1):
                #Invertida
                self.pregunta.modificarTexto(self.titulos["d_invertir"])
                self.mensaje_encriptado = self.lista_to_str_espaciado(
                    self.invetirOracion(self.mensaje_desencriptado))
                self.pregunta2.modificarTexto(self.mensaje_encriptado)
                self.pregunta3.modificarTexto(
                    "Seleccione la Desencripcion correcta")
            elif (tipo == 2):
                #encriptar ATBASH
                self.pregunta.modificarTexto(self.titulos["d_atbash"])
                self.mensaje_encriptado = self.encriptar_atbash(
                    self.mensaje_desencriptado)
                self.pregunta2.modificarTexto(self.mensaje_encriptado)
                self.pregunta4.modificarTexto(
                    self.lista_to_str_espaciado(self.abecedario))
                self.pregunta5.modificarTexto(
                    self.lista_to_str_espaciado(reversed(self.abecedario)))
                self.pregunta6.modificarTexto(
                    "Seleccione la encripcion Correcta")
            elif (tipo == 3):
                #encriptar Polibi
                self.pregunta.modificarTexto(self.titulos["d_polibi"])
                self.mensaje_encriptado = self.encriptar_polibi_5(
                    self.mensaje_desencriptado)
                self.pregunta2.modificarTexto(self.mensaje_encriptado)
                self.pregunta5.modificarTexto(
                    "Seleccione la encripcion Correcta")
            elif (tipo == 4):
                #encriptar cesar
                self.pregunta.modificarTexto(self.titulos["d_cesar"])
                self.mensaje_encriptado = self.CodificarCesar(
                    self.mensaje_desencriptado, 3)
                self.pregunta2.modificarTexto(self.mensaje_encriptado)
                self.pregunta4.modificarTexto(
                    self.lista_to_str_espaciado(self.abecedario))
                self.pregunta5.modificarTexto(
                    self.lista_to_str_espaciado(reversed(self.abecedario)))
                self.pregunta6.modificarTexto(
                    "Seleccione la encripcion Correcta")
            tipo = self.num_aleatorio(1, 4)  #Pone el correcto
            if (tipo == 1):
                self.btnOpcion1.modificarString(self.mensaje_desencriptado)
                self.btnOpcion2.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion3.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion4.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
            elif (tipo == 2):
                self.btnOpcion2.modificarString(self.mensaje_desencriptado)
                self.btnOpcion1.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion3.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion4.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
            elif (tipo == 3):
                self.btnOpcion3.modificarString(self.mensaje_desencriptado)
                self.btnOpcion2.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion1.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion4.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
            elif (tipo == 4):
                self.btnOpcion4.modificarString(self.mensaje_desencriptado)
                self.btnOpcion2.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion3.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])
                self.btnOpcion1.modificarString(
                    self.palabras[self.num_aleatorio(0,
                                                     len(self.palabras) -
                                                     1)][1])

    def modificar_tiempo(self, tiempo):
        self.tiempo = tiempo

    def quitar_vida(self):
        self.vida_actuales -= 1

    def get_vidas_actuales(self):
        return self.vida_actuales

    def get_puntuacion(self):
        return self.puntuacion

    def compararOpcion(self, opcion):
        return opcion == self.mensaje_encriptado or opcion == self.mensaje_desencriptado

    def sumarPuntaje(self):
        self.puntuacion += self.tiempoJuego

    def invertirPalabra(self, palabra):
        """
        Invierte Palabra::
            "Hola" -> "aloH"

        @param palabra: palabra que se va a invertir
        @type palabra: str

        @return: Palabra convertida
        @rtype: str
        """
        return ''.join(reversed(palabra))

    def invetirOracion(self, Oracion):
        """
        Invierte Oracion, pero retorna una lista::
            "Hola Mundo" -> ["aloH", "odnuM"]

        @param palabra: Oracion que se va a invertir
        @type palabra: str

        @return: Lista con Oracion Convertida
        @rtype: list
        """
        lista = Oracion.split()
        return list(map(self.invertirPalabra, lista))

    def lista_to_str_espaciado(self, lista):
        """
        Imprime con espaciado una lista::
            ["aloH", "odnuM"] -> "aloH odnuM"

        @param lista: Lista que se va a convertir
        @type lista: list

        @return: Oracion de la lista con espacios
        @rtype: str
        """
        return " ".join(lista)

    def encriptar_atbash(self, message):
        """
        Metodo que encripta con metodo atbash::
            Con el alfabeto
            A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
            Z Y X W V U T S R Q P O Ñ N M L K J I H G F E D C B A
            ----------------------------------------------------
            Lo que trata de hacer es modificar la letra de arriba con la
            respectiva de abajo, el ejemplo:
             "HOLA MUNDO" -> "SLOZ ÑFNWL"

        @param message: mensaje a Encriptar
        @type message: str

        @return: mensaje encriptado
        @rtype: str
        """
        alphabet = u'A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z a b c d e f g h i j k l m n ñ o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9'.split(
        )
        backward = u'Z Y X W V U T S R Q P O Ñ N M L K J I H G F E D C B A z y x w v u t s r q p o ñ n m l k j i h g f e d c b a 9 8 7 6 5 4 3 2 1 0'.split(
        )
        cipher = []

        for letter in message:
            if letter in alphabet:
                for i in xrange(len(alphabet)):
                    if alphabet[i] == letter:
                        pos = i
                cipher.append(backward[pos])
            else:
                cipher.append(letter)

        newMessage = ''.join(cipher)
        return newMessage

    def desencriptar_atbash(self, message):
        """
        Metodo para desencriptar con metodo atbash::
            Con el alfabeto
            A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
            Z Y X W V U T S R Q P O Ñ N M L K J I H G F E D C B A
            ----------------------------------------------------
            Lo que trata de hacer es modificar la letra de arriba con la
            respectiva de abajo, el ejemplo:
             "SLOZ ÑFNWL" -> "HOLA MUNDO"

        @param message: mensaje a Desencriptar
        @type message: str

        @return: mensaje Desencriptado
        @rtype: str
        """
        alphabet = u'A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z a b c d e f g h i j k l m n ñ o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9'.split(
        )
        backward = u'Z Y X W V U T S R Q P O Ñ N M L K J I H G F E D C B A z y x w v u t s r q p o ñ n m l k j i h g f e d c b a 9 8 7 6 5 4 3 2 1 0'.split(
        )
        cipher = []

        for letter in message:
            if letter in backward:
                for i in xrange(len(backward)):
                    if backward[i] == letter:
                        pos = i
                cipher.append(alphabet[pos])
            else:
                cipher.append(letter)

        newMessage = ''.join(cipher)
        return newMessage

    def codificar_polibi_5(self, char):
        """
        Codifica una letra en formato polibi::
            "H" -> (3,3) como ejemplo

        @param char: caracter a convertir
        @type char: str
        @return: Tupla con el valor convertido en polibi
        @rtype: (a, b)
        """
        alfabeto = "abcdefghiklmnopqrstuvwxyz"
        tup = (0, 0)
        if char:
            if alfabeto.find(char) <= 5:
                tup = (1, alfabeto.find(char) + 1)
            elif alfabeto.find(char) <= 10:
                tup = (2, (alfabeto.find(char) + 1) - 5)
            elif alfabeto.find(char) <= 15:
                tup = (3, (alfabeto.find(char) + 1) - 10)
            elif alfabeto.find(char) <= 20:
                tup = (4, (alfabeto.find(char) + 1) - 15)
            elif alfabeto.find(char) <= 25:
                tup = (5, (alfabeto.find(char) + 1) - 20)
        return "".join(map(str, tup))

    def encriptar_str_polibi_5(self, texto):
        """
        Encripta una palabra a codigo polibi::
            "HOLA" -> [(1,2),(2,3),(3,4),(4,5)]

        @param texto: Palabra a encriptar
        @type texto: str
        @return: Lista encriptada en polibi
        @rtype: [(a,b),(c,d)]
        """
        return " ".join(map(self.codificar_polibi_5, texto))

    def encriptar_polibi_5(self, mensaje):
        """
        Encripta una palabra convertida y las une como una lista, imprime un str
        ::
            "HOLA MUNDO" -> "(1,1),(1,2),(1,3),(1,4)-(2,1),(2,2),(2,3),(2,4),(2,5)"

        @param mensaje: Mensaje a encriptar
        @type mensaje: str
        @return: str con mensaje encriptado
        @rtype: str
        """
        mensaje = mensaje.replace("j", "i")
        lista = mensaje.split()
        lista = map(self.encriptar_str_polibi_5, lista)
        return "-".join(lista)
        #return self.lista_to_str_espaciado(lista)

    def CodificarCesar(self, Palabra, Avance):
        """
        Codifica Mensaje con codficacion atbas, sin embargo, el orden del abecderio
        no es el mismo::
        A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
        Y X W V U T S R Q P O Ñ N M L K J I H G F E D C B A Z
        ------------------------------------------------------

        @param Palabra: Palabra a criptar
        @type Palabra: str
        @param Avance: avance o cambio de orden del abecedario
        @type Avance: int

        @return: Palabra invertida
        @rtype: str
        """
        alfabetoMinus = [
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
            'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
            'z'
        ]
        alfabetoMayus = [
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
            'N', 'Ñ', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
            'Z'
        ]
        Clave = ''
        Tope = len(alfabetoMayus)
        Posicion = 0
        for letra in Palabra:
            for i in range(Tope):
                if (i + Avance < Tope):
                    Posicion = i + Avance
                else:
                    Posicion = abs((Tope - i) - Avance)
                if letra == alfabetoMinus[i]:
                    Clave = Clave + alfabetoMinus[Posicion]
                elif letra == alfabetoMayus[i]:
                    Clave = Clave + alfabetoMayus[Posicion]
        return Clave
コード例 #11
0
    def mensajes(self):
        """Mensajes que se podran mostrar en el tutorial"""
        texto1 = []
        texto1.append(
            Titulo("Existen diferentes metodos para", 420, 120, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("transformar un mensaje.", 420, 140, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("A lo largo de la historia se han creado", 420, 160, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("diferentes formas de codificar la", 420, 180, 17, 2,
                   (36, 32, 163)))
        texto1.append(Titulo("informacion.", 420, 200, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("En este juego veremos 7 metodos de", 420, 220, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("<<Encriptar>> y <<Desencriptar>> un mensaje.", 420, 240,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Oculto en la Tabla", 420, 260, 17, 2, (36, 32, 163)))
        texto1.append(Titulo("-Invertir", 420, 280, 17, 2, (36, 32, 163)))
        texto1.append(Titulo("-Codigo ATBAS", 420, 300, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Cifra de Polibi", 420, 320, 17, 2, (36, 32, 163)))
        texto1.append(Titulo("-Cifra de Cesar", 420, 340, 17, 2,
                             (36, 32, 163)))
        texto1.append(
            Titulo("-Rejilla Giratoria", 420, 360, 17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(
            Titulo("Oculto en la Tabla", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El objetivo de oculto en la tabla es relacionar", 420, 140,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("un significado con respecto a otro asi si:", 420, 160, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("Asi relacionariamos <<Estrella>> con <<Entrar>>", 420, 280,
                   17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Invertir", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El objetivo de este metodo es invertir las", 420, 140, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("palabras para que estas no sean legibles", 420, 160, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("a simple vista y que por ende esten del", 420, 180, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("todo complicadas, un ejemplo que se puede", 420, 200, 17,
                   2, (36, 32, 163)))
        texto1.append(Titulo("apreciar:", 420, 220, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("<<Mensaje Secreto>> a la hora de invertir", 420, 260, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("seria <<Ejasnem Oterces>>", 420, 280, 17, 2,
                   (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Codigo Atbas", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El codigo ATBAS es un codigo utilizado en algunos", 420,
                   140, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("textos religiosos hebreos, el objetivo de este", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("metodo es desorganizar el abecedario para que", 420, 180,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("las palabras del uno sean diferentes que las", 420, 200,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("del otro tomando con un significado el que valga", 420,
                   220, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("para que esta regla se cumpla, este necesita de", 420, 240,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("una tabla de valores como el mostrado:", 420, 260, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("Asi si, <<Criptografia>> seria <<Xirkgltizurz>>", 420, 380,
                   17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Cifra de Polibi", 420, 120, 17, 2,
                             (36, 32, 163)))
        texto1.append(
            Titulo("Descrito por el historiador del siglo III a.C.,", 420, 140,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("para codificar cada letra utiliza una tabla de", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("doble entrada, en la que cada letra viene", 420, 180, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("representada por dos numeros:", 420, 200, 17, 2,
                   (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Cifra de Polibi", 420, 120, 17, 2,
                             (36, 32, 163)))
        texto1.append(Titulo("Ejemplo:", 420, 140, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("Se pueden utilizar algunos esquemas graficos", 420, 240,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("para  codificar, las manos en este caso", 420, 260, 17, 2,
                   (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Cifra de Cesar", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El metodo de Cesar consiste en desplazar", 420, 140, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("cualquier alfabeto. La clave del codigo sera el", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("numero de lugares que se desplaza. Muy similar", 420, 180,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("al codigo ATBAS, un ejemplo seria:", 420, 200, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("La codificacion seria de la siguiente manera:", 420, 300,
                   17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(
            Titulo("Rejilla Giratoria", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("Lo primero que debe hacerse es fabricar una", 420, 140, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("tapadera. La rejilla se construye de forma que:", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Tenga tantos huecos como la cuarta parte del", 420, 180,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("total de la rejilla", 420, 200, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Al girar hasta cuatro veces, una casilla no", 420, 220,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("puede quedar destapada dos veces", 420, 240, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("-Todas las casillas han de quedar destapadas", 420, 260,
                   17, 2, (36, 32, 163)))
        texto1.append(Titulo("alguna vez", 420, 280, 17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(
            Titulo("Rejilla Giratoria", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("seria para mostrar una tabla del estilo:", 420, 140, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("la idea es tapar cada uno de los cuadros no", 420, 300, 17,
                   2, (36, 32, 163)))
        texto1.append(Titulo("necesarios", 420, 320, 17, 2, (36, 32, 163)))
        self.textos.append(texto1)
コード例 #12
0
class Tutorial:
    """Clase enfocada en todo lo que carga el tutorial"""
    def __init__(self, ctrl):
        """
        Constructor del Tutorial

        @param ctrl: controlador del los eventos
        @type ctrl: Controlador
        """
        self.controlador = ctrl
        self.fondo = "view/img/fondos/España.jpg"
        self.textos = []
        self.textoActual = 0

        #Cargar Mensajes y ponerlos en la matriz de los textos
        self.construir()
        self.construirTabla1()

        #Imagen ATBAS
        self.ImagenAtbas = Imagen("view/img/codigoAtbas.png", (10, 270))
        self.ImagenAtbas.cambiarEscala(0.65)

        #Cifra de Polibi
        self.tablaPolibi = Imagen("view/img/polibi.png", (285, 240))
        self.tablaPolibi.cambiarEscala(0.5)
        self.manoPolibi = Imagen("view/img/polibiManoEje.png", (380, 300))
        self.manoPolibi.cambiarEscala(0.4)
        self.polibiEje = Imagen("view/img/polibiCodi.png", (300, 160))
        self.polibiEje.cambiarEscala(0.5)

        #Cesar
        self.cesar = Imagen("view/img/Cesar.png", (10, 230))
        self.cesar.cambiarEscala(0.65)
        self.cesarEjemplo = Imagen("view/img/cesarEjemplo.png", (300, 330))
        self.cesarEjemplo.cambiarEscala(0.5)

        #Rejilla
        self.rejilla = Imagen("view/img/Rejilla.png", (350, 300))
        self.rejilla.cambiarEscala(0.6)
        self.rejillaEjemplo = Imagen("view/img/RejillaEjemplo.png", (340, 180))
        self.rejillaEjemplo.cambiarEscala(0.6)

    def mensajes(self):
        """Mensajes que se podran mostrar en el tutorial"""
        texto1 = []
        texto1.append(
            Titulo("Existen diferentes metodos para", 420, 120, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("transformar un mensaje.", 420, 140, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("A lo largo de la historia se han creado", 420, 160, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("diferentes formas de codificar la", 420, 180, 17, 2,
                   (36, 32, 163)))
        texto1.append(Titulo("informacion.", 420, 200, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("En este juego veremos 7 metodos de", 420, 220, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("<<Encriptar>> y <<Desencriptar>> un mensaje.", 420, 240,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Oculto en la Tabla", 420, 260, 17, 2, (36, 32, 163)))
        texto1.append(Titulo("-Invertir", 420, 280, 17, 2, (36, 32, 163)))
        texto1.append(Titulo("-Codigo ATBAS", 420, 300, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Cifra de Polibi", 420, 320, 17, 2, (36, 32, 163)))
        texto1.append(Titulo("-Cifra de Cesar", 420, 340, 17, 2,
                             (36, 32, 163)))
        texto1.append(
            Titulo("-Rejilla Giratoria", 420, 360, 17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(
            Titulo("Oculto en la Tabla", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El objetivo de oculto en la tabla es relacionar", 420, 140,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("un significado con respecto a otro asi si:", 420, 160, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("Asi relacionariamos <<Estrella>> con <<Entrar>>", 420, 280,
                   17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Invertir", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El objetivo de este metodo es invertir las", 420, 140, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("palabras para que estas no sean legibles", 420, 160, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("a simple vista y que por ende esten del", 420, 180, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("todo complicadas, un ejemplo que se puede", 420, 200, 17,
                   2, (36, 32, 163)))
        texto1.append(Titulo("apreciar:", 420, 220, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("<<Mensaje Secreto>> a la hora de invertir", 420, 260, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("seria <<Ejasnem Oterces>>", 420, 280, 17, 2,
                   (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Codigo Atbas", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El codigo ATBAS es un codigo utilizado en algunos", 420,
                   140, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("textos religiosos hebreos, el objetivo de este", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("metodo es desorganizar el abecedario para que", 420, 180,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("las palabras del uno sean diferentes que las", 420, 200,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("del otro tomando con un significado el que valga", 420,
                   220, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("para que esta regla se cumpla, este necesita de", 420, 240,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("una tabla de valores como el mostrado:", 420, 260, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("Asi si, <<Criptografia>> seria <<Xirkgltizurz>>", 420, 380,
                   17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Cifra de Polibi", 420, 120, 17, 2,
                             (36, 32, 163)))
        texto1.append(
            Titulo("Descrito por el historiador del siglo III a.C.,", 420, 140,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("para codificar cada letra utiliza una tabla de", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("doble entrada, en la que cada letra viene", 420, 180, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("representada por dos numeros:", 420, 200, 17, 2,
                   (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Cifra de Polibi", 420, 120, 17, 2,
                             (36, 32, 163)))
        texto1.append(Titulo("Ejemplo:", 420, 140, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("Se pueden utilizar algunos esquemas graficos", 420, 240,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("para  codificar, las manos en este caso", 420, 260, 17, 2,
                   (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(Titulo("Cifra de Cesar", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("El metodo de Cesar consiste en desplazar", 420, 140, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("cualquier alfabeto. La clave del codigo sera el", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("numero de lugares que se desplaza. Muy similar", 420, 180,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("al codigo ATBAS, un ejemplo seria:", 420, 200, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("La codificacion seria de la siguiente manera:", 420, 300,
                   17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(
            Titulo("Rejilla Giratoria", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("Lo primero que debe hacerse es fabricar una", 420, 140, 17,
                   2, (36, 32, 163)))
        texto1.append(
            Titulo("tapadera. La rejilla se construye de forma que:", 420, 160,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Tenga tantos huecos como la cuarta parte del", 420, 180,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("total de la rejilla", 420, 200, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("-Al girar hasta cuatro veces, una casilla no", 420, 220,
                   17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("puede quedar destapada dos veces", 420, 240, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("-Todas las casillas han de quedar destapadas", 420, 260,
                   17, 2, (36, 32, 163)))
        texto1.append(Titulo("alguna vez", 420, 280, 17, 2, (36, 32, 163)))
        self.textos.append(texto1)

        texto1 = []
        texto1.append(
            Titulo("Rejilla Giratoria", 420, 120, 17, 2, (36, 32, 163)))
        texto1.append(
            Titulo("seria para mostrar una tabla del estilo:", 420, 140, 17, 2,
                   (36, 32, 163)))
        texto1.append(
            Titulo("la idea es tapar cada uno de los cuadros no", 420, 300, 17,
                   2, (36, 32, 163)))
        texto1.append(Titulo("necesarios", 420, 320, 17, 2, (36, 32, 163)))
        self.textos.append(texto1)

    def construirTabla1(self):
        """Metodo que construye la primera tabla"""
        self.tablaPalabra = Boton("Palabra")
        self.tablaPalabra.modificarPosicion(340, 180)
        self.tablaPalabra.modificarTamano(100, 40)
        self.tablaPalabra.modificarPosicionTexto(50, 20)
        self.tablaPalabra.modificarColor1(203, 67, 53)
        self.tablaPalabra.modificarColor2(176, 58, 46)
        self.tablaPalabra.modificarColor3(203, 67, 53)
        self.tablaPalabra.modificarColorLetra1(23, 32, 42)
        self.tablaPalabra.modificarColorLetra2(23, 32, 42)
        self.tablaPalabra.modificarColorLetra3(23, 32, 42)
        self.tablaPalabra.modificarEvento(0)
        self.tablaCodigo = Boton("Codigo")
        self.tablaCodigo.modificarPosicion(443, 180)
        self.tablaCodigo.modificarTamano(100, 40)
        self.tablaCodigo.modificarPosicionTexto(50, 20)
        self.tablaCodigo.modificarColor1(203, 67, 53)
        self.tablaCodigo.modificarColor2(176, 58, 46)
        self.tablaCodigo.modificarColor3(203, 67, 53)
        self.tablaCodigo.modificarColorLetra1(23, 32, 42)
        self.tablaCodigo.modificarColorLetra2(23, 32, 42)
        self.tablaCodigo.modificarColorLetra3(23, 32, 42)
        self.tablaCodigo.modificarEvento(0)
        self.tablaPalabra1 = Boton("Entrar")
        self.tablaPalabra1.modificarPosicion(340, 223)
        self.tablaPalabra1.modificarTamano(100, 40)
        self.tablaPalabra1.modificarPosicionTexto(50, 20)
        self.tablaPalabra1.modificarColor1(241, 148, 138)
        self.tablaPalabra1.modificarColor2(236, 112, 99)
        self.tablaPalabra1.modificarColor3(241, 148, 138)
        self.tablaPalabra1.modificarColorLetra1(23, 32, 42)
        self.tablaPalabra1.modificarColorLetra2(23, 32, 42)
        self.tablaPalabra1.modificarColorLetra3(23, 32, 42)
        self.tablaPalabra1.modificarEvento(0)
        self.tablaCodigo1 = Boton("Estrella")
        self.tablaCodigo1.modificarPosicion(443, 223)
        self.tablaCodigo1.modificarTamano(100, 40)
        self.tablaCodigo1.modificarPosicionTexto(50, 20)
        self.tablaCodigo1.modificarColor1(217, 136, 128)
        self.tablaCodigo1.modificarColor2(205, 97, 85)
        self.tablaCodigo1.modificarColor3(217, 136, 128)
        self.tablaCodigo1.modificarColorLetra1(23, 32, 42)
        self.tablaCodigo1.modificarColorLetra2(23, 32, 42)
        self.tablaCodigo1.modificarColorLetra3(23, 32, 42)
        self.tablaCodigo1.modificarEvento(0)

        self.controlador.enviarEventoBoton(self.tablaCodigo)
        self.controlador.enviarEventoBoton(self.tablaCodigo1)
        self.controlador.enviarEventoBoton(self.tablaPalabra)
        self.controlador.enviarEventoBoton(self.tablaPalabra1)

    def activarBotones(self):
        """Activa el conjunto de botones"""
        self.btnContinuar.modificarActivo(True)
        self.btnInicio.modificarActivo(True)
        self.activarTabla()

    def desactivarBotones(self):
        """Desactiva el conjunto de botones"""
        self.btnContinuar.modificarActivo(False)
        self.btnInicio.modificarActivo(False)
        self.desactivarTabla()

    def activarTabla(self):
        """Activa el conjunto de botones de la tabla"""
        self.tablaCodigo.modificarActivo(True)
        self.tablaCodigo1.modificarActivo(True)
        self.tablaPalabra.modificarActivo(True)
        self.tablaPalabra1.modificarActivo(True)

    def desactivarTabla(self):
        """Desactiva el conjunto de botones de la tabla"""
        self.tablaCodigo.modificarActivo(False)
        self.tablaCodigo1.modificarActivo(False)
        self.tablaPalabra.modificarActivo(False)
        self.tablaPalabra1.modificarActivo(False)

    def construir(self):
        """
        Se encargara de construir toda la parte grafica
        """
        self.fondo = Imagen(self.fondo, (0, 0))
        self.fondo.cambiarEscala(0.5)
        self.titulo = Titulo("KACH!", 120, 450, 70, 2, (36, 32, 163))
        self.lblTutorial = Titulo("Tutorial", 450, 30, 40, 2, (36, 32, 163))

        self.btnContinuar = Boton("Continuar")
        self.btnContinuar.modificarPosicion(280, 420)
        self.btnContinuar.modificarTamano(160, 50)
        self.btnContinuar.modificarPosicionTexto(40, 27)
        self.btnContinuar.modificarColor1(234, 234, 216)
        self.btnContinuar.modificarColorLetra1(21, 67, 96)
        self.btnContinuar.modificarColor2(209, 210, 179)
        self.btnContinuar.modificarColorLetra2(21, 67, 96)
        self.btnContinuar.modificarColor3(91, 202, 213)
        self.btnContinuar.modificarColorLetra3(21, 67, 96)
        self.btnContinuar.modificarEvento(7)
        self.btnInicio = Boton("Inicio")
        self.btnInicio.modificarPosicion(460, 420)
        self.btnInicio.modificarTamano(160, 50)
        self.btnInicio.modificarPosicionTexto(30, 27)
        self.btnInicio.modificarColor1(234, 234, 216)
        self.btnInicio.modificarColorLetra1(21, 67, 96)
        self.btnInicio.modificarColor2(209, 210, 179)
        self.btnInicio.modificarColorLetra2(21, 67, 96)
        self.btnInicio.modificarColor3(91, 202, 213)
        self.btnInicio.modificarColorLetra3(21, 67, 96)
        self.btnInicio.modificarEvento(6)

        self.cuadro = Boton("")
        self.cuadro.modificarPosicion(200, 100)
        self.cuadro.modificarTamano(430, 300)
        self.cuadro.modificarPosicionTexto(30, 27)
        self.cuadro.modificarColor1(234, 234, 216)
        self.cuadro.modificarColorLetra1(21, 67, 96)
        self.cuadro.modificarColor2(234, 234, 216)
        self.cuadro.modificarColorLetra2(21, 67, 96)
        self.cuadro.modificarColor3(234, 234, 216)
        self.cuadro.modificarColorLetra3(21, 67, 96)
        self.cuadro.modificarEvento(0)

        self.mensajes()

        #Eventos de los botones
        self.controlador.enviarEventoBoton(self.btnContinuar)
        self.controlador.enviarEventoBoton(self.btnInicio)

    def pintar(self, screen, paso=0):
        """
        Se encargara de mostrar toda la parte grafica

        @param screen: Pantalla en la que se va a pintar
        @type screen: Surface
        """
        self.fondo.ponerImagen(screen)
        self.titulo.pintar(screen)
        self.lblTutorial.pintar(screen)

        self.btnInicio.pintar(screen)
        self.btnContinuar.pintar(screen)

        self.cuadro.pintar(screen)
        if (paso == 0):
            self.textoActual = 0
            for x in self.textos[self.textoActual]:
                x.pintar(screen)
        elif (paso == 1):
            self.textoActual = 1
            for x in self.textos[self.textoActual]:
                x.pintar(screen)

            self.tablaCodigo.pintar(screen)
            self.tablaPalabra.pintar(screen)
            self.tablaCodigo1.pintar(screen)
            self.tablaPalabra1.pintar(screen)
        elif (paso == 2):
            self.textoActual = 2
            for x in self.textos[self.textoActual]:
                x.pintar(screen)
        elif (paso == 3):
            self.textoActual = 3
            for x in self.textos[self.textoActual]:
                x.pintar(screen)

            self.ImagenAtbas.ponerImagen(screen)
        elif (paso == 4):
            self.textoActual = 4
            for x in self.textos[self.textoActual]:
                x.pintar(screen)

            self.tablaPolibi.ponerImagen(screen)
        elif (paso == 5):
            self.textoActual = 5
            for x in self.textos[self.textoActual]:
                x.pintar(screen)

            self.manoPolibi.ponerImagen(screen)
            self.polibiEje.ponerImagen(screen)
        elif (paso == 6):
            self.textoActual = 6
            for x in self.textos[self.textoActual]:
                x.pintar(screen)

            self.cesar.ponerImagen(screen)
            self.cesarEjemplo.ponerImagen(screen)
        elif (paso == 7):
            self.textoActual = 7
            for x in self.textos[self.textoActual]:
                x.pintar(screen)

            self.rejilla.ponerImagen(screen)
        else:
            self.textoActual = 8
            for x in self.textos[self.textoActual]:
                x.pintar(screen)

            self.rejillaEjemplo.ponerImagen(screen)