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)
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
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)
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)
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)
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 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)
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)
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()
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)
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 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)
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)
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)
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)
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()
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)
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)
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()