Example #1
0
def tutorial(surface, fps_clock):
    """ Tutorial con especificaciones de como usar la tienda y de como jugar """

    contador_imagen = 0  # Contador para ir pasando de imagen
    lista_imagenes = []  # Lista con todas las imágenes para el tutorial
    for i in range(5):  # Añadimos todas las imágenes del tutorial a la lista
        lista_imagenes.append(pygame.image.load("imagenes/tutorial/"+str(i)+".png"))
    imagen_actual = lista_imagenes[0]  # Imagen que se está mostrando actualmente en el tutorial

    boton_flecha_der = Boton("boton_flecha_tutorial", (1150, 680))  # Botón para avanzar en el tutorial
    boton_flecha_izq = Boton("boton_flecha_tutorial", (82, 680)) # Botón para retroceder en el tutorial
    boton_flecha_izq.image = pygame.transform.flip(boton_flecha_izq.image, 1, 0)

    #================================BUCLE============================
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

            elif event.type == KEYDOWN:
                if event.key == K_SPACE or event.key == K_RETURN or event.key == K_RIGHT or event.key == K_d:  # Si quiere avanzar en el tutorial
                    contador_imagen += 1  # Se suma uno a la imagen a mostrar
                    if contador_imagen > len(lista_imagenes)-1:  # Si llega al final de las imágenes
                        return
                elif event.key == K_LEFT or event.key == K_a:
                    contador_imagen -= 1
                    if contador_imagen < 0:
                        contador_imagen = 0
                elif event.key == K_ESCAPE:  # Si quiere salir del tutorial
                    return

            elif event.type == MOUSEBUTTONDOWN:
                if event.pos[0] > 80 and event.pos[0] < 130 and event.pos[1] > 678 and event.pos[1] < 703:  # Si pulsa en el botón derecho
                    contador_imagen -= 1
                    if contador_imagen < 0:  # Si el contador es menor que 0 no se le deja darle más para atrás
                        contador_imagen = 0
                elif event.pos[0] > 1149 and event.pos[0] < 1199 and event.pos[1] > 678 and event.pos[1] < 703:  # Si pulsa en el botón izquierdo
                    contador_imagen += 1
                    if contador_imagen > len(lista_imagenes)-1:  # Si llega al final de las imágenes
                        return


        imagen_actual = lista_imagenes[contador_imagen]

        #================================UPDATE============================
        surface.fill((0, 0, 0))

        #------------------Imágenes del tutorial
        surface.blit(imagen_actual, ((ANCHO_SCREEN-imagen_actual.get_rect()[2])//2, (ALTO_SCREEN-imagen_actual.get_rect()[3])//2))

        #------------------Botones
        surface.blit(boton_flecha_der.image, (boton_flecha_der.rect.x, boton_flecha_der.rect.y))
        surface.blit(boton_flecha_izq.image, (boton_flecha_izq.rect.x, boton_flecha_izq.rect.y))

        #------------------Update, FPS
        pygame.display.update()
        fps_clock.tick(FPS)
Example #2
0
def menuInicial():
    winW, winH = 600, 600
    myfont = pygame.font.SysFont('Comic Sans MS', 30)
    window = pygame.display.set_mode((winW, winH))
    pygame.display.set_caption("Bomberman Ultra")
    logo = pygame.image.load("Logo.png").convert_alpha()
    boton1a = pygame.image.load("boton1a.png").convert_alpha()
    boton1b = pygame.image.load("boton1b.png").convert_alpha()
    boton2a = pygame.image.load("boton2a.png").convert_alpha()
    boton2b = pygame.image.load("boton2b.png").convert_alpha()
    Word = myfont.render("Elija una dificultad:", False, (0, 0, 0))
    seleccion, exit = 0, 0
    Cursor1 = Cursor()
    Boton1 = Boton(boton1a, boton1b, 120, 400)
    Boton2 = Boton(boton2a, boton2b, 400, 400)
    while seleccion == 0 and exit == 0:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit = 1
            if (event.type == pygame.MOUSEBUTTONDOWN):
                if (Cursor1.colliderect(Boton1.rect)):
                    seleccion = 1
                if (Cursor1.colliderect(Boton2.rect)):
                    seleccion = 2
        pygame.Surface.fill(window, (255, 255, 255))
        window.blit(logo, pygame.rect.Rect(40, 0, 128, 128))
        window.blit(Word, (170, 300))
        Boton1.update(window, Cursor1)
        Boton2.update(window, Cursor1)
        Cursor1.update()
        #Boton1.update(window,Cursor1)
        pygame.display.update()

    pygame.display.quit()
    return seleccion
Example #3
0
def run_game():
    pygame.init()
    m_settings = Settings()
    stats = Estadisticas(m_settings)
    fj.cargar_puntuacion(stats)
    screen = pygame.display.set_mode((m_settings.screen_width, m_settings.screen_height)) #dibujar pantalla
    nave = Nave(screen, m_settings) #Dibujar nave
    balas = Group() #Un grupo es una lista con funciones añadidas
    marcianitos = Group()
    fj.crear_flota(m_settings, screen, nave, marcianitos)
    icon = pygame.image.load("images/alien.bmp")
    pygame.display.set_icon(icon)
    pygame.display.set_caption("Marcianitos")
    boton = Boton(m_settings, screen, "Jugar")
    hud = Hud(m_settings, screen, stats)
    m.musica_fondo()


    while True:
        fj.comprobar_eventos(m_settings, screen, nave, balas, stats, marcianitos, boton)
        if stats.jugando:
            nave.actualizar_posicion(m_settings)
            fj.actualizar_balas(m_settings, screen, nave, marcianitos, balas, stats, hud)
            fj.actualizar_flota(m_settings, stats, screen, balas, marcianitos, nave, hud)
        fj.actualizar_pantalla(m_settings, screen, nave, marcianitos, balas, boton, stats, hud)
Example #4
0
 def generate_send_buttons(self):
     posx = self.posx + self.sizex + self.spacing + self.text_sx
     posy = self.posy
     sizex = round(self.sizex * 0.257731)
     sizey = self.sizey
     title = "Send"
     normal = Boton(posx,
                    posy,
                    sizex,
                    sizey,
                    title,
                    font_size=self.font_size)
     posx += sizex + self.spacing
     title = "\\r"
     cr = Boton(posx, posy, sizex, sizey, title, font_size=self.font_size)
     posx += sizex + self.spacing
     title = "\\n"
     ln = Boton(posx, posy, sizex, sizey, title, font_size=self.font_size)
     return (normal, cr, ln)
Example #5
0
 def generate_botton(self):
     """
 Genera el boton de limpia pantalla
 """
     posx = self.posx + self.s_left
     return Boton(posx,
                  self.items_pos_y,
                  self.items_sizex,
                  self.items_sizey,
                  "CLEAR",
                  font_size=self.font_size)
Example #6
0
    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)
Example #7
0
 def generate_bottonUp(self):
     """
 Genera el boton up 
 """
     posx = self.posx + self.sizex - 2 * self.sizebotx
     posy = self.posy
     return Boton(posx,
                  posy,
                  self.sizebotx,
                  self.sizeboty,
                  color=(229, 57, 57),
                  color_h=(186, 44, 44),
                  text_color=(0, 0, 0),
                  press_color=(150, 34, 34),
                  font_size=5)
Example #8
0
 def generate_bottonDown(self):
     """
 Genera el boton down
 """
     posx = self.posx + self.sizex - 2 * self.sizebotx
     posy = self.posy + self.sizeboty
     return Boton(posx,
                  posy,
                  self.sizebotx,
                  self.sizeboty,
                  color=(124, 117, 221),
                  color_h=(95, 90, 173),
                  text_color=(0, 0, 0),
                  press_color=(36, 26, 117),
                  font_size=5)
Example #9
0
    def crearTablero(self):
        layout = []
        for i in self.matriz:
            row = []
            for j in i:
                button = Boton(j).get_boton()
                row.append(button)
            layout.append(row)

        window = sg.Window('Tablero', layout)

        while True:
            casillero = window.Read()

        window.close()
Example #10
0
 def generate_bottonSet(self):
     """
 Genera el boton set size
 """
     posx = self.posx + self.sizex - self.sizebotx
     posy = self.posy
     return Boton(posx,
                  posy,
                  self.sizebotx,
                  self.sizey,
                  "Set",
                  color=(210, 232, 125),
                  color_h=(166, 183, 99),
                  press_color=(131, 145, 77),
                  text_color=(0, 0, 0),
                  font_size=10)
Example #11
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)
Example #12
0
def correr_juego():
	pygame.init()
	configuracion_ia = Configuracion()
	pantalla = pygame.display.set_mode(
		(configuracion_ia.ancho_pantalla, configuracion_ia.alto_pantalla))
	pygame.display.set_caption("Invasion Alien")
	boton_jugar = Boton(configuracion_ia, pantalla , "Jugar!")
	estadisticas = EstadisticasJuego(configuracion_ia)
	tp = TablaPuntaje(configuracion_ia, pantalla, estadisticas)
	nave = Nave(configuracion_ia, pantalla)
	balas = Group()
	aliens = Group()
	
	fj.crear_flota(configuracion_ia, pantalla, nave, aliens)
	
	while True:
		
		fj.chequear_events(configuracion_ia, pantalla, estadisticas, tp, boton_jugar, nave, aliens, balas)
		if estadisticas.juego_activo:			
			nave.actualizar()
			fj.actualizar_balas(configuracion_ia,pantalla, estadisticas, tp, nave, aliens, balas)	
			fj.actualizar_aliens(configuracion_ia, estadisticas, tp, pantalla, nave, aliens, balas)			
		fj.actualizar_pantalla(configuracion_ia, pantalla, estadisticas, tp, nave, aliens, balas, boton_jugar)
Example #13
0
def tienda(surface, fps_clock):
    """ Hace funcionar la tienda, donde se puede seleccionar el coche que se quiera para jugar """

    #-Cargamos la imagen de fondo
    imagen_fondo = pygame.image.load(
        "imagenes/wallpaper_tienda.png")  # Imagen del fondo de la tienda

    #-Cargamos las fonts para el texto de salir
    font_pequeña = pygame.font.Font(
        "Xperia.TTF", 30
    )  # Font para cuando la opción de salir al menú principal no esté seleccionada
    font_grande = pygame.font.Font(
        "Xperia.TTF", 40
    )  # Font para cuando la opción de salir al menú principal esté seleccionada

    #-Cargamos la música
    musica = pygame.mixer.music
    musica.load("Sonidos/Sonido Hangar.mp3")  # Música de fondo
    musica.set_volume(0.6)  # Ajustamos el volumen
    musica.play(-1)

    #-Cargamos algunas imágenes para los marcadores de cada jugador
    # marcador_dinero_j1 = pygame.image.load("imagenes/marcador_dinero.png")  # Cantidad de dinero del J1
    # marcador_dinero_j2 = pygame.transform.flip(1, 0)  # Cantidad de dinero del J2
    # imagen_dinero = pygame.image.load("imagenes/dinero.png")  # Imagen de una moneda

    #--Propiedades de cada coche y la posición de la carta de cada uno
    lista_prop_coches = [(15, 1, 1.3, 6, 0.5), (18, 1.5, 1.5, 7, 1),
                         (20, 2.5, 1.6, 7, 2), (25, 2, 1.4, 4, 4),
                         (20, 4, 1.8, 9, 2.5), (22, 3, 1.5, 6, 1.5),
                         (20, 3.5, 2.5, 8, 3),
                         (25, 5, 2, 10, 3)]  # Propiedades de cada coche
    lista_pos_cartas = [(75, 30), (375, 30), (675, 30), (975, 30), (75, 340),
                        (375, 340), (675, 340),
                        (975, 340)]  # Posición de cada carta

    #------------------Lista con todos los botones para asignar los coches y la posición de cada uno
    lista_botones_asig_coche = {
    }  # Lista con todos los botones de asignar el coche
    lista_pos_botones_asig_coche = [
        (305, 124), (305, 189), (605, 124), (605, 189), (905, 124), (905, 189),
        (1205, 124), (1205, 189), (305, 434), (305, 499), (605, 434),
        (605, 499), (905, 434), (905, 499), (1205, 434), (1205, 499)
    ]  # Posición de cada boton de asignar coche

    for i in range(
            16):  # Creamos los 16 botones (1 por jugador para cada coche)
        boton = Boton("boton_asignar_coche", lista_pos_botones_asig_coche[i],
                      "boton_asignar_coche_pulsado")
        lista_botones_asig_coche[str(i)] = boton

    coche_asignado_j1 = perfil.coche_j1  # Coche asignado actualmente para el J1
    lista_botones_asig_coche[str(coche_asignado_j1 *
                                 2)].pulsar()  # Lo marcamos como asignado

    coche_asignado_j2 = perfil.coche_j2  # Coche asignado actualmente para el J2
    lista_botones_asig_coche[str(coche_asignado_j2 * 2 +
                                 1)].pulsar()  # Lo marcamos como asignado

    #================================BUCLE============================
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == MOUSEBUTTONDOWN:
                if (event.pos[0] > 268 and event.pos[0] < 1010) and (
                        event.pos[1] > 648
                        and event.pos[1] < 690) and opcion_salir == True:
                    musica.pause()
                    return  # Vuelve al menú principal

                #------------------Botones asignar coches
                for i in range(
                        16
                ):  # Recorremos cada botón viendo si el ratón ha pulsado dentro de cada uno, si es así, lo marcamos como asignado
                    if (event.pos[0] > lista_pos_botones_asig_coche[i][0] and
                            event.pos[0] < lista_pos_botones_asig_coche[i][0] +
                            35) and (event.pos[1] >
                                     lista_pos_botones_asig_coche[i][1]
                                     and event.pos[1] <
                                     lista_pos_botones_asig_coche[i][1] + 63):
                        lista_botones_asig_coche[str(i)].pulsar(
                        )  # Pulsamos el botón, tanto si está como asignado o como si está normal
                        if i % 2 == 0:
                            lista_botones_asig_coche[str(
                                coche_asignado_j1 * 2
                            )].pulsar(
                            )  # Desasignamos el coche que tenía asignado el J1
                            perfil.coche_j1 = int(i /
                                                  2)  # Asignamos el coche a J1
                            coche_asignado_j1 = perfil.coche_j1  # Guardamos el coche asignado
                        else:
                            lista_botones_asig_coche[str(
                                coche_asignado_j2 * 2 + 1
                            )].pulsar(
                            )  # Desasignamos el coche que tenía asignado el J2
                            perfil.coche_j2 = int(
                                i / 2 - 0.5)  # Asignamos el coche a J2
                            coche_asignado_j2 = perfil.coche_j2  # Guardamos el coche asignado

            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    musica.pause()
                    return  # Vuelve al menú principal

        pos_mouse = pygame.mouse.get_pos()
        #------------------Texto volver al menú
        if (pos_mouse[0] > 362
                and pos_mouse[0] < 918) and (pos_mouse[1] > 658
                                             and pos_mouse[1] < 691):
            texto_salir = font_grande.render("VOLVER AL MENU PRINCIPAL", True,
                                             (255, 255, 255))
            texto_salir_pos = (((ANCHO_SCREEN - texto_salir.get_rect()[2]) //
                                2,
                                ALTO_SCREEN - texto_salir.get_rect()[3] - 30))
            opcion_salir = True
        elif (pos_mouse[0] < 268
              or pos_mouse[0] > 1010) or (pos_mouse[1] < 648
                                          or pos_mouse[1] > 690):
            texto_salir = font_pequeña.render("VOLVER AL MENU PRINCIPAL", True,
                                              (255, 255, 255))
            texto_salir_pos = ((ANCHO_SCREEN - texto_salir.get_rect()[2]) // 2,
                               ALTO_SCREEN - texto_salir.get_rect()[3] - 30)
            opcion_salir = False

        #================================UPDATE============================
        surface.blit(imagen_fondo, (0, 0))

        #------------------Texto volver al menú principal
        surface.blit(texto_salir, texto_salir_pos)

        #------------------Cartas
        #--Cartas de los coches disponibles
        for i in range(0, 8):  # Dibujamos en el surface cada carta
            crear_carta(surface, lista_pos_cartas[i][0],
                        lista_pos_cartas[i][1],
                        "imagenes/coches/" + str(i) + ".png",
                        lista_prop_coches[i][0], lista_prop_coches[i][1],
                        lista_prop_coches[i][2], lista_prop_coches[i][3],
                        lista_prop_coches[i][4])

        #--Botones de coches asignados
        i = 0
        for boton in lista_botones_asig_coche.values(
        ):  # Dibujamos en el surface cada botón
            surface.blit(boton.image, (boton.rect.x, boton.rect.y))
            i += 1

        #------------------Marcadores
    #   surface.blit(marcador_dinero_j1, (0, ALTO_SCREEN-marcador_dinero_j1.get_rect()[3]))
    #   surface.blit(marcador_dinero_j1, (ANCHO_SCREEN-marcador_dinero_j1.get_rect()[2], ALTO_SCREEN-marcador_dinero_j1.get_rect()[3]))

    #------------------Update, FPS
        pygame.display.update()
        fps_clock.tick(FPS)
Example #14
0
 def generate_button(self):
     posx = self.posx + self.s_left + self.s_text_inter + self.text_sizex
     posy = self.posy + self.s_top + (self.items_sizey + self.s_between) * 4
     text = "CLOSE"
     return Boton(posx, posy, self.items_sizex, self.items_sizey, text)
Example #15
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)
Example #16
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
def run():
    """ Inicio del juego y crea el screen del juego """
    print(platform.python_version())  #Ver version python

    #pygame.init()
    #Alternativa al init para ganar velocidad
    pygame.display.init()
    pygame.font.init()

    configuracion = Configuracion()  #Configuracion inicial del juego

    #Lee la configuracion de pantalla
    pantalla = pygame.display.set_mode(
        (configuracion.ancho_pantalla, configuracion.alto_pantalla))

    pygame.display.set_caption(configuracion.nombre)  #Nombre del juego

    #Crea una instancia de una nave
    nave = Nave(configuracion, pantalla)

    #Crea una instancia de un marciano
    #marciano=Marciano(configuracion,pantalla)

    #Creo la flota de marcianos
    marcianos = Group()

    #Crea la flota de marcianos
    func.crear_flota(configuracion, pantalla, nave, marcianos)

    #Guarda los disparos en un grupo de pygame.sprite
    disparos = Group()

    #Guarda los disparos marcianos en un grupo de pygame.sprite
    disparosM = Group()

    #puntuaciones inicializa puntuaciones , n naves etc
    marcador = Marcador(configuracion)

    #Informacion de las puntuaciones , marcadores
    informacion = Informaciones(configuracion, pantalla, marcador)

    #Crea un boton de play
    boton = Boton(configuracion, pantalla, "Juega")

    #Crea un bunker
    bunkers = pygame.sprite.Group()
    func.crear_bunkers(configuracion, pantalla, bunkers)

    #Sonidos juego
    sonidos = Sonidos()

    #Bucle principal
    while True:
        sleep(0.01)  #CPU usage

        #Mira eventos de teclado o raton
        func.analiza_eventos(configuracion, pantalla, marcador, boton, nave,
                             disparos, sonidos)

        if marcador.juego_activo:  #Juego activo ?Todas las vidas ?
            #Dibuja la nave del jugador
            nave.actualiza()

            #Actualiza TODOS los disparo en el GROUP pero es un disparo
            func.actualiza_disparos(
                configuracion, marcador, pantalla, nave, marcianos, disparos,
                bunkers, sonidos)  #Este update() esta en la clase disparo

            #Actualiza si un marciano ha disparado , falta mostrarlo
            func.actualiza_marcianos(configuracion, marcador, pantalla, nave,
                                     marcianos, disparos, disparosM, bunkers,
                                     sonidos)

            #Actualiza disparos Marcianos
            func.actualiza_disparosMarcianos(
                configuracion, marcador, pantalla, bunkers, nave, marcianos,
                disparosM, sonidos)  #Este update() esta en la clase disparo

        func.actualiza_pantalla(configuracion, pantalla, informacion, marcador,
                                nave, marcianos, disparos, disparosM, boton,
                                bunkers)

        #Muestra en pantalla
        pygame.display.flip()
def main():
    pygame.init() # inicializo el modulo
    pygame.mixer.init()
    # fijo las dimensiones de la pantalla a 500,400 y creo una superficie que va ser la principal
    pantalla=pygame.display.set_mode((WIDTH,HEIGHT))
    pygame.display.set_caption("juego ejercita tu mente") # Titulo de la Ventana
    texto=Boton(load_image('texto.png'),150,-30) #se crea un boton para "perdiste"
    imagenfondo=pygame.image.load("mar.jpg").convert()
    pygame.mixer.music.load("hakuna.mid")# Cargamos la cancion
    pygame.mixer.music.play()  # Le damos al Play
    pytime.wait(11) # 110000 Esperamos un tiempo a que acabe la cancion
    
    fondo = load_image('fondo.png')
    bimages = []
    for indice in range(6):
        bimages.append(load_image(''+str(indice+1)+'.png'))
        
    pantalla.blit(imagenfondo,(0,0)) #se agrega un fondo
    
    x=80 #se dan las pociciones en el eje x
    x1=270 
    x2=460 
    x3=80 
    x4=270 
    x5=460 
    
    boton1=Boton(fondo,x,100) #se crea un boton para cada concha en diferentes posiciones
    boton2=Boton(fondo,x1,100) 
    boton3=Boton(fondo,x2,100) 
    boton4=Boton(fondo,x3,300) 
    boton5=Boton(fondo,x4,300) 
    boton6=Boton(fondo,x5,300) 
    #Creo una lista y añado los botones a la lista para poder manipularlos mejor
    botones = []
    botones.append(boton1);
    botones.append(boton2);
    botones.append(boton3);
    botones.append(boton4);
    botones.append(boton5);
    botones.append(boton6);
    #dar las imagenes a cada boton
    for boton in botones:
        boton.setImageSeleccion(bimages);
    
    nivel = Nivel()
    
    # Aqui daremos numeros en random a los botones  
    def iniciarAleatorio():
        #para los 6 botones
        indices = [0,1,2,3,4,5]
        indices = indices[:nivel.cantidadConchas()]
        #metodo que desordena la lista en random
        random.shuffle(indices)
        
        #cambiamos el valor del indice
        i = 0
        for boton in botones[:nivel.cantidadConchas()]:
            # defino los indices de cada boton
            boton.setIndice(indices[i])
            i+=1
            
    iniciarAleatorio()
    cursor1=Cursor()
    clock = pygame.time.Clock()
    salir=False
    entrar = True
    click = 0
    limiteTiempo = 3000
    actualTiempo = pygame.time.get_ticks()
    ocultar = False
    yaOculte = False
    
    estadoJuego = 'JUGANDO'
    buenCamino = 0 
    ganasteoPerdiste = False

    while salir!=True:
        #esperamos 3 segundos, pasado los tres segundos se ocultaran los numeros
        if(estadoJuego == 'JUGANDO' and pygame.time.get_ticks()-actualTiempo >= limiteTiempo):
            entrar = True
            ocultar = True
        #preguntamos el estado del juego
        if estadoJuego == 'PERDISTE' or estadoJuego == 'GANASTE':
            if not ganasteoPerdiste:
                # capturamos el primer instante de tiempo desde que se ganó o perió
                # para empezar a contar 3 segundo
                actualTiempo = pygame.time.get_ticks()
                #True para asegurar que solo entre una vez
                ganasteoPerdiste = True
                #imprimo el estado del juego en los botones 
                if estadoJuego=='GANASTE':
                    botoni=Boton(load_image('tortuga.png'),270,10) #se crea un boton para "ganaste"
                    botoni.update(pantalla,cursor1,time)
                else:
                    botoni=Boton(load_image('tortuga1.png'),270,10) #se crea un boton para "perdiste"
                    botoni.update(pantalla,cursor1,time)
                    
            # oculto los numeros mientras no pase tres segundos
            if(pygame.time.get_ticks()-actualTiempo <= limiteTiempo):
                ocultar = True
                yaOculte = False
            else:
                #pasado el tiempo  reinicio las variables
                pantalla.blit(imagenfondo,(0,0)) #se agrega un fondo
                iniciarAleatorio()
                ganasteoPerdiste = False
                actualTiempo = pygame.time.get_ticks()
                
                click = 0
                ocultar = False
                yaOculte = False
                estadoJuego = 'JUGANDO'
                buenCamino = 0
            
        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONDOWN:
                if entrar:
                    #recorremos cada boton
                    for boton in botones[:nivel.cantidadConchas()]:
                        #verificamos si el cursor dio click en algun boton
                        if cursor1.colliderect(boton.rect):
                            #almaceno el estado del boton antes de ser presionado
                            bloqueado = boton.getBloquer()
                            #modifico el numero a mostrar en el boton
                            boton.setNumeroImagen(click)
                            #bloqueo el boton para impedir que se le de click despues
                            boton.setBloquer(True)
                            #verifico si el numero de click corresponde con el numro de boton
                            acertaste = boton.verificarIndice(click)
                            
                            if not bloqueado:
                                #si el boton no esta bloqueado procedo a contar el click
                                click += 1
                                # definir la cantidad de botones
                                if click >= len(botones[:nivel.cantidadConchas()]):
                                    click = 0
                                if acertaste:
                                    #vas por buen camino
                                    # contador para verificar si gane el jeugo
                                    buenCamino += 1
                                    if buenCamino >= len(botones[:nivel.cantidadConchas()]):
                                        estadoJuego= 'GANASTE'
                                        nivel.aumentar()
                                        entrar = False
                                else:
                                    #pierdes
                                    estadoJuego= 'PERDISTE'
                                    nivel.disminuir()
                                    
                                    # False para no volver a detectar los eventos de los botones
                                    entrar = False
                            #salgo del ciclo for
                            break
            if event.type == pygame.QUIT:# pygame.QUIT( para que cierre cruz de la ventana)
                salir = True
        cursor1.update() #se actualiza el cuadro invisible que actua como boton del cursor
        time = clock.tick(60)
        for boton in botones[:nivel.cantidadConchas()]:
            #llamo al update de cada boton
            boton.update(pantalla,cursor1,time)
            if ocultar and not yaOculte:
                #oculto los botones
                boton.ocultarNumero() #se actualiza cada boton al acercar el cursor
        if ocultar:
            # True para garantizar que los botones se oculten solo una vez
            yaOculte = True
        texto.update(pantalla,cursor1,time)
        pygame.display.update() #actualizo el display
        
    pygame.quit()
Example #19
0
def run():
    pygame.init()
    pygame.font.init()
    # recursos del juego
    screen = pygame.display.set_mode((799, 464), pygame.RESIZABLE)
    #screen = pygame.display.set_mode((0, 0), pygame.RESIZABLE)
    pygame.display.set_caption("MachineMCD")
    temporizador = pygame.time.Clock()
    power = 0
    maximo = 0
    gameOver = 0
    mcd1 = 1

    haybomba = False
    controlMaximo = True
    texto = pygame.font.Font('digital-7.ttf', 42)
    texto2 = pygame.font.Font('digital-7.ttf', 25)
    textobomba = pygame.font.Font('Crysta.ttf', 26)
    # fondo de pantalla
    fondo = util.cargar_imagen('escenario.png', optimizar=True)
    decoracion = util.cargar_imagen('decoracion.png')
    final = util.cargar_imagen('Final.png')

    bomba = Bomba(-20, -20)
    bombaE = BombaE(100, 100)
    # grupos
    sprites = pygame.sprite.OrderedUpdates()
    explo = pygame.sprite.Group()
    control = pygame.sprite.Group()
    cube1 = pygame.sprite.Group()
    cube2 = pygame.sprite.Group()
    helicopter = pygame.sprite.Group()
    Bomasprites = pygame.sprite.Group()
    botonA = Boton(500, 435, 'a')
    botonB = Boton(600, 435, 's')
    palanca = Palanca(208, 387)
    helicoptero = Helicopter(105, 95)
    control.add([botonA, botonB, palanca])
    helicopter.add([helicoptero])
    sprites.add([cube1, cube2, helicopter])

    salir = False

    def divisoresPropios(n):
        lista = []
        for i in range(1, (n / 2) + 1):
            if (n % i) == 0:
                lista.append(i)
        lista.append(n)
        return lista

    def mcd(a, b):
        a, b = max(abs(a), abs(b)), min(abs(a), abs(b))
        while b > 0:
            a, b = b, a % b
        return a

    def draw_cubes():
        posY1 = 350
        posX1 = 60
        posY2 = 350
        posX2 = 410
        n = 0
        j = 0
        for i in range(numcubes1):
            if j < 11:
                j = j + 1
                posX1 = posX1 + 25
                cube1.add(Cube(posX1, posY1))
            else:
                j = 1
                posX1 = 60 + 25
                posY1 = posY1 - 25
                cube1.add(Cube(posX1, posY1))
        for m in range(numcubes2):
            if n < 11:
                n = n + 1
                posX2 = posX2 + 25
                cube2.add(Cube(posX2, posY2))
            else:
                n = 1
                posX2 = 410 + 25
                posY2 = posY2 - 25
                cube2.add(Cube(posX2, posY2))

    numero1 = random.randint(0, 70)
    numero2 = random.randint(1, 70)

    numcubes1 = numero1
    numcubes2 = numero2
    #numcubes1=4
    #numcubes2=12
    mcd1 = mcd(numero1, numero2)
    div1 = []
    div2 = []
    div1 = divisoresPropios(numero1)
    div2 = divisoresPropios(numero2)
    Text_Divisores1 = ""
    Text_Divisores2 = ""
    for divisor1 in div1:
        Text_Divisores1 += str(divisor1) + " "
    for divisor2 in div2:
        Text_Divisores2 += str(divisor2) + " "

    draw_cubes()
    bombanumero = textobomba.render("00", 1, (176, 0, 0))
    while not salir:
        for e in pygame.event.get():
            if e.type == pygame.QUIT:
                salir = True
            elif e.type == pygame.KEYDOWN:
                if e.unicode == 'a' or e.unicode == 'A':
                    if haybomba == False:
                        power = maximo
                        controlMaximo = False
                        bomba = Bomba(helicoptero.rect.x + 45,
                                      helicoptero.rect.y + 20)
                        sprites.add(bomba)
                        haybomba = True
        #    elif e.type == pygame.JOYBUTTONUP:

        if controlMaximo == True:
            teclasSelect = pygame.key.get_pressed()
            if teclasSelect[K_DOWN] and maximo > 0:
                maximo = maximo - 1
                bombanumero = textobomba.render(str(maximo), 1, (176, 0, 0))
                #text = font.render( str(maximo),1,WHITE)
            elif teclasSelect[K_UP] and maximo < 99:
                maximo = maximo + 1
                bombanumero = textobomba.render(str(maximo), 1, (176, 0, 0))

        if numcubes1 == 0 and numcubes2 == 0:

            gameOver = 2
    #    if (numcubes1>0 or numcubes2>0)and power == 0 and haybomba == True:

    #    if (numcubes1>0 or numcubes2>0):

    #      gameOver = 1

        if power > 0:
            bomba_en_colision2 = pygame.sprite.spritecollide(
                bomba, cube2, False)
            bomba_en_colision1 = pygame.sprite.spritecollide(
                bomba, cube1, False)

            if (bomba_en_colision1):
                if (numcubes2 > 0
                        and numcubes1 < power) or (numcubes2 > 0
                                                   and numcubes1 == 0):
                    gameOver = 1
                    bomba.kill()
            if (bomba_en_colision2):
                if (numcubes1 > 0
                        and numcubes2 < power) or (numcubes1 > 0
                                                   and numcubes2 == 0):
                    gameOver = 1
                    bomba.kill()

                #haybomba = False

            if bomba_en_colision1 and numcubes1 >= power:
                power -= 1
                numcubes1 -= 1

                bomba_en_colision1[0].kill()
                cube1.remove(bomba_en_colision1[0])
                sprites.add(Explosion(bomba_en_colision1[0]))
                sonidos.reproducir_sonido('boom')

            if bomba_en_colision2 and numcubes2 >= power:
                power -= 1
                numcubes2 -= 1
                bomba_en_colision2[0].kill()
                cube2.remove(bomba_en_colision2[0])
                sprites.add(Explosion(bomba_en_colision2[0]))
                sonidos.reproducir_sonido('boom')

        elif power == 0:
            bomba.kill()
            haybomba = False

        cubos1 = texto.render(str(len(cube1.sprites())), 1, (255, 215, 0))
        cubos2 = texto.render(str(len(cube2.sprites())), 1, (255, 215, 0))

        game1 = [
            "Ganaste!! ", "el poder de mayor destruccion es",
            "Casi lo logras!!", "Lo sentimos!!", "Divisores del ", ":"
        ]
        gameMCD = texto2.render(str(mcd1), 1, (255, 255, 255))
        num1 = texto2.render(str(numero1), 1, (255, 255, 255))
        num2 = texto2.render(str(numero2), 1, (255, 255, 255))

        sprites.update()
        screen.blit(fondo, (0, 0))
        cube1.draw(screen)
        cube2.draw(screen)
        sprites.draw(screen)
        helicopter.draw(screen)
        Bomasprites.draw(screen)
        screen.blit(decoracion, (0, 0))
        screen.blit(cubos1, (347, 98))
        screen.blit(cubos2, (417, 98))
        screen.blit(bombanumero, (387, 55))

        if gameOver != 0:
            screen.blit(final, (0, 0))

            if gameOver == 2 and maximo == mcd1:
                textIm1 = texto.render(game1[0], 1, (255, 255, 255))
                textIm2 = texto2.render(game1[1], 1, (255, 255, 255))
            if gameOver == 2 and maximo != mcd1:
                textIm1 = texto.render(game1[2], 1, (255, 255, 255))
                textIm2 = texto2.render(game1[1], 1, (255, 255, 255))
            if gameOver == 1:
                textIm1 = texto.render(game1[3], 1, (255, 255, 255))
                textIm2 = texto2.render(game1[1], 1, (255, 255, 255))
            textIm3 = texto2.render(game1[4], 1, (255, 255, 255))
            # mcd2 = texto2.render(mcd1,1,(255,255,255))
            screen.blit(textIm1, (150, 110))
            screen.blit(textIm2, (150, 145))
            screen.blit(gameMCD, (520, 145))
            #screen.blit(mcd2, (520, 145))
            screen.blit(textIm3, (170, 185))
            screen.blit(num1, (320, 185))
            screen.blit(texto2.render(Text_Divisores1, 1, (255, 255, 255)),
                        (175, 210))
            screen.blit(textIm3, (170, 250))
            screen.blit(num2, (320, 250))
            screen.blit(texto2.render(Text_Divisores2, 1, (255, 255, 255)),
                        (175, 275))

        control.draw(screen)
        control.update()
        pygame.display.flip()
        temporizador.tick(60)
Example #20
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)
Example #21
0
    def __init__(self, horarioPrincipal, filterTotal, bd, **kwargs):
        ''' Inicialización del horario '''

        timeTable = horarioPrincipal
        filterLoad = filterTotal
        self.bd = bd
        super(Boxes, self).__init__(**kwargs)
        #añado los botones al horario
        for dia in horarioPrincipal.dias:
            bx_m = BoxLayout(orientation='vertical')  #mañana
            bx_t = BoxLayout(orientation='vertical')  #tarde
            bx_m_f = BoxLayout(orientation='vertical')  #mañana_free
            bx_t_f = BoxLayout(orientation='vertical')  #tarde_free
            relleno = [
                [9, bx_m, '_morning', horarioPrincipal.clases_manana],
                [15, bx_t, '_afternoon', horarioPrincipal.clases_tarde],
                [9, bx_m_f, '_morning_free', horarioPrincipal.clases_manana],
                [15, bx_t_f, '_afternoon_free', horarioPrincipal.clases_tarde]
            ]
            for hour, bx_iter, turno, asignacion in relleno:

                #añado las cabeceras (dias)
                nombre = dia
                btn = Boton(text=nombre, size_hint_y=0.02)
                btn.setIdent(nombre)
                bx_iter.add_widget(btn)

                #Botones  (Clase/Aula/Hora)
                for texto, porcentaje, asignaturaID, aulaID in asignacion(
                        nombre):
                    btn = Boton(text=texto, size_hint_y=porcentaje)
                    btn.bind(on_release=lambda x: self.intercambia(
                        horario=horarioPrincipal))
                    btn.setIdent(hour)
                    btn.setAsigID(asignaturaID)
                    btn.setAulaID(aulaID)
                    btn.text_size = (300, 100)
                    bx_iter.add_widget(btn)
                    hour = hour + 1
                self.ids[turno].add_widget(bx_iter)

        #Añado los desplegables de selección a la primera pantalla
        profes = FilterDDTrigger(orientation='vertical')
        aulas = FilterDDTrigger(orientation='vertical')
        asigns = FilterDDTrigger(orientation='vertical')
        curs = FilterDDTrigger(orientation='vertical')
        aulas_libres = FilterDDTrigger(orientation='vertical')
        profText = self.bd.all_prof_text()
        profId = self.bd.all_prof_id()
        aulaText = self.bd.all_aula_text()
        aulaId = self.bd.all_aula_id()
        cursoText = self.bd.all_curso_text()
        cursoId = self.bd.all_curso_id()
        asigText = self.bd.all_asignatura_text()
        asigId = self.bd.all_asignatura_id()
        # No voy a dividir a los cursos por grupos de practicas
        temporal = list(
            dedupe([(c_i, c_t[0:-10]) for c_i, c_t in zip(cursoId, cursoText)],
                   key=lambda x: x[1]))
        cursoText = [i[1] for i in temporal]
        cursoId = [i[0] for i in temporal]
        datos_scroll = [(profes, 'Profesores', 350, profText, profId),
                        (aulas, 'Aulas', 250, aulaText, aulaId),
                        (asigns, 'Asignaturas', 350, asigText, asigId),
                        (curs, 'Cursos', 350, cursoText, cursoId)]
        loadSelection = Button(text='Cargar selección',
                               size_hint=(None, None),
                               width=200)
        loadSelection.bind(
            on_release=lambda btn: self.loadTimetable(horarioPrincipal))
        self.ids['_main'].add_widget(loadSelection)
        for tipo_scroll, nombre_scroll, tamano, tupla_text, tupla_id in datos_scroll:
            tipo_scroll.text = nombre_scroll
            tipo_scroll.dropdown = FilterDD(width=tamano,
                                            des=tipo_scroll,
                                            options=zip(tupla_text, tupla_id))
            self.ids['_main'].add_widget(tipo_scroll)
        nInc = 0
        for incidencia in self.bd.colisiones():
            btn = Button(text=incidencia)
            self.ids['_incidences'].add_widget(btn)
            nInc += 1
            if nInc >= self.numIncidences:
                break
        self.children[1].children[0].children[
            2].text = 'Acción: Intercambiar asignaturas'
        self.resetDropdown()