Exemplo n.º 1
0
def Play(pantalla, time2, jugador):
    tiempo_comienzo = time() + time2

    # Creamos al jugador con la imagen p1_walk.png
    jugador_principal = Player(jugador)
    letraParaPuntos = pygame.font.Font(None, 24)
    letraParaVidas = pygame.font.Font(None, 24)
    letraTiempo = pygame.font.Font(None, 24)
    Jefe_final = BOSS("imagenes/cheff.png")

    # Creamos todos los niveles del juego
    lista_niveles = []
    #lista_niveles.append(Level_01(jugador_principal))
    lista_niveles.append(Level_02(jugador_principal))

    # Seteamos cual es el primer nivel.
    numero_del_nivel_actual = 0
    nivel_actual = lista_niveles[numero_del_nivel_actual]
    lista_sprites_activos = pygame.sprite.Group()
    jugador_principal.nivel = nivel_actual
    jugador_principal.rect.x = 200
    jugador_principal.rect.y = constantes.LARGO_PANTALLA - jugador_principal.rect.height - 120
    lista_sprites_activos.add(jugador_principal)
    letraParaMarcador1 = pygame.font.Font(None, 56)
    letraParaMarcador2 = pygame.font.Font(None, 36)

    no_aparece_boss = True

    # Variable booleano que nos avisa cuando el usuario aprieta el botOn salir.
    salir = False
    clock = pygame.time.Clock()
    # -------- Loop Principal -----------
    while not salir:
        for evento in pygame.event.get():
            if evento.type == pygame.QUIT:
                salir = True
            if evento.type == pygame.KEYDOWN:
                if evento.key == pygame.K_SPACE:
                    jugador_principal.avanzarr()
                if evento.key == pygame.K_LEFT:
                    jugador_principal.retroceder()
                if evento.key == pygame.K_RIGHT:
                    jugador_principal.avanzar()
                if evento.key == pygame.K_UP:
                    jugador_principal.saltar()
                if evento.key == pygame.K_ESCAPE:
                    salir = True
            if evento.type == pygame.KEYUP:
                if evento.key == pygame.K_LEFT and jugador_principal.mover_x < 0:
                    jugador_principal.parar()
                if evento.key == pygame.K_RIGHT and jugador_principal.mover_x > 0:
                    jugador_principal.parar()

        Jefe_final.avanzar()

        # Actualiza todo el jugador
        lista_sprites_activos.update()
        # Actualiza los elementos del nivel
        nivel_actual.update()
        # Si el jugador se acarca hacia el lado derecho mueve el mundo hacia la izquierda (-x)
        if jugador_principal.rect.x >= 500:
            diff = jugador_principal.rect.x - 500
            jugador_principal.rect.x = 500
            nivel_actual.avance_nivel(-diff)
        # Si el jugador se acarca hacia el lado izquierda mueve el mundo hacia la derecha (-x)
        if jugador_principal.rect.x <= 120:
            diff = 120 - jugador_principal.rect.x
            jugador_principal.rect.x = 120
            nivel_actual.avance_nivel(diff)
        # Si el jugador se mueve hacia el fin del nivel cambia el jugador al siguiente nivel.
        current_position = jugador_principal.rect.x + nivel_actual.posicion_jugador_nivel
        if current_position < nivel_actual.limite_nivel:
            jugador_principal.rect.x = 120
            if numero_del_nivel_actual < len(lista_niveles) - 1:
                current_position = 0
                pygame.event.wait()
                Jefe_final.kill()
                numero_del_nivel_actual += 1
                nivel_actual = lista_niveles[numero_del_nivel_actual]
                jugador_principal.nivel = nivel_actual
                tiempo_comienzo = time() + time2
                no_aparece_boss = True
                jugador_principal.vidas = jugador_principal.vidas + 5
            else:
                pantalla.fill(constantes.NEGRO)
                texto_gameover3 = letraParaMarcador1.render(
                    u"¡Has Ganado!", 1, constantes.ROJO)
                texto_gameover4 = letraParaMarcador2.render(
                    "Presiona cualquier tecla para volver a jugar", 1,
                    constantes.ROJO)
                pantalla.blit(texto_gameover3, [300, 250])
                pantalla.blit(texto_gameover4, [200, 310])
                pygame.display.flip()
                pygame.event.wait()
                main()

        #Lo que modifique fue esto, el menu y la funcion play

        # TODO EL CODIGO PARA DIBUJAR DEBE IR DEBAJO DE ESTE COMENTARIO.
        nivel_actual.draw(pantalla)
        lista_sprites_activos.draw(pantalla)

        textoPuntos = letraParaPuntos.render(
            "Puntos: " + str(jugador_principal.puntos), 1, constantes.NEGRO)
        pantalla.blit(textoPuntos, (10, 10))

        textoVidas = letraParaVidas.render(
            "Vidas: " + str(jugador_principal.vidas), 1, constantes.NEGRO)
        pantalla.blit(textoVidas, (900, 10))

        tiempo_transcurrido = int(tiempo_comienzo - time())
        textoTiempo = letraTiempo.render("Tiempo: " + str(tiempo_transcurrido),
                                         1, constantes.NEGRO)
        pantalla.blit(textoTiempo, (300, 10))

        LetraMensaje = pygame.font.Font(None, 38)
        El_Mensaje = LetraMensaje.render("El chef se acerca, apurate", 1,
                                         constantes.ROJO)

        if tiempo_transcurrido < 30 and no_aparece_boss:
            pantalla.blit(El_Mensaje, (330, 80))

        if tiempo_transcurrido < 20 and no_aparece_boss:
            Jefe_final.nivel = nivel_actual
            Jefe_final.rect.x = jugador_principal.rect.x - 950
            Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height
            Jefe_final.jugador = jugador_principal
            lista_sprites_activos.add(Jefe_final)
            no_aparece_boss = False

        if current_position < nivel_actual.posicion_bigboss and no_aparece_boss:
            Jefe_final.nivel = nivel_actual
            Jefe_final.rect.x = jugador_principal.rect.x - 950
            Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height
            Jefe_final.jugador = jugador_principal
            lista_sprites_activos.add(Jefe_final)
            no_aparece_boss = False
            print current_position

        # TODO EL CODIGO PARA DIBUJAR DEBE IR POR ARRIBA DE ESTE COMENTARIO.
        clock.tick(60)
        pygame.display.flip()
        if jugador_principal.vidas == 0 or tiempo_transcurrido == 0:
            pantalla.fill(constantes.NEGRO)
            print current_position
            texto_gameover1 = letraParaMarcador1.render(
                "GAME OVER", 1, constantes.ROJO)
            texto_gameover2 = letraParaMarcador2.render(
                "Presiona cualquier tecla para volver a jugar", 1,
                constantes.ROJO)
            pantalla.blit(texto_gameover1, [300, 250])
            pantalla.blit(texto_gameover2, [200, 310])
            pygame.display.flip()
            pygame.event.wait()
            main()

        pygame.display.flip()
        if jugador_principal.vidas == -1:
            pantalla.fill(constantes.NEGRO)
            print current_position
            texto_gg = letraParaMarcador1.render(
                "HAS GANADO con " + str(tiempo_transcurrido) +
                "segundos sobrantes", 1, constantes.ROJO)
            texto_gameover2 = letraParaMarcador2.render(
                "Presiona cualquier tecla para volver a jugar", 1,
                constantes.ROJO)
            pantalla.blit(texto_gg, [300, 250])
            pantalla.blit(texto_gameover2)
            pygame.display.flip()
            pygame.event.wait()
            main()

    # Salgo del juego
    return True
Exemplo n.º 2
0
def Play(pantalla,time2, jugador):
    tiempo_comienzo = time() + time2
        
    # Creamos al jugador con la imagen p1_walk.png
    jugador_principal = Player(jugador)
    letraParaPuntos = pygame.font.Font(None, 24)
    letraParaVidas = pygame.font.Font(None, 24)
    letraTiempo = pygame.font.Font(None, 24)
    Jefe_final = BOSS("imagenes/cheff.png")
    
# Creamos todos los niveles del juego
    lista_niveles = []
    #lista_niveles.append(Level_01(jugador_principal))
    lista_niveles.append(Level_02(jugador_principal))
    
# Seteamos cual es el primer nivel.
    numero_del_nivel_actual = 0
    nivel_actual = lista_niveles[numero_del_nivel_actual]
    lista_sprites_activos = pygame.sprite.Group()
    jugador_principal.nivel = nivel_actual
    jugador_principal.rect.x = 200
    jugador_principal.rect.y = constantes.LARGO_PANTALLA - jugador_principal.rect.height - 120
    lista_sprites_activos.add(jugador_principal)
    letraParaMarcador1 = pygame.font.Font(None, 56)
    letraParaMarcador2 = pygame.font.Font(None, 36)
    
    no_aparece_boss = True
    
# Variable booleano que nos avisa cuando el usuario aprieta el botOn salir.
    salir = False
    clock = pygame.time.Clock()
# -------- Loop Principal -----------
    while not salir:
        for evento in pygame.event.get():
            if evento.type == pygame.QUIT:
                salir = True
            if evento.type == pygame.KEYDOWN:
                if evento.key == pygame.K_SPACE:
                    jugador_principal.avanzarr()
                if evento.key == pygame.K_LEFT:
                    jugador_principal.retroceder()
                if evento.key == pygame.K_RIGHT:
                    jugador_principal.avanzar()
                if evento.key == pygame.K_UP:
                    jugador_principal.saltar()
                if evento.key == pygame.K_ESCAPE:
                    salir = True
            if evento.type == pygame.KEYUP:
                if evento.key == pygame.K_LEFT and jugador_principal.mover_x < 0:
                    jugador_principal.parar()
                if evento.key == pygame.K_RIGHT and jugador_principal.mover_x > 0:
                    jugador_principal.parar()
        
        Jefe_final.avanzar()
        
        # Actualiza todo el jugador
        lista_sprites_activos.update()
        # Actualiza los elementos del nivel
        nivel_actual.update()
        # Si el jugador se acarca hacia el lado derecho mueve el mundo hacia la izquierda (-x)
        if jugador_principal.rect.x >= 500:
            diff = jugador_principal.rect.x - 500
            jugador_principal.rect.x = 500
            nivel_actual.avance_nivel(-diff)
        # Si el jugador se acarca hacia el lado izquierda mueve el mundo hacia la derecha (-x)
        if jugador_principal.rect.x <= 120:
            diff = 120 - jugador_principal.rect.x
            jugador_principal.rect.x = 120
            nivel_actual.avance_nivel(diff)
        # Si el jugador se mueve hacia el fin del nivel cambia el jugador al siguiente nivel.
        current_position = jugador_principal.rect.x + nivel_actual.posicion_jugador_nivel
        if current_position < nivel_actual.limite_nivel:
            jugador_principal.rect.x = 120
            if numero_del_nivel_actual < len(lista_niveles) - 1:
                current_position=0
                pygame.event.wait()
                Jefe_final.kill()
                numero_del_nivel_actual += 1
                nivel_actual = lista_niveles[numero_del_nivel_actual]
                jugador_principal.nivel = nivel_actual
                tiempo_comienzo = time() + time2
                no_aparece_boss = True
                jugador_principal.vidas = jugador_principal.vidas + 5
            else:
                pantalla.fill(constantes.NEGRO)
                texto_gameover3 = letraParaMarcador1.render(u"¡Has Ganado!", 1, constantes.ROJO)
                texto_gameover4 = letraParaMarcador2.render("Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO)
                pantalla.blit(texto_gameover3, [300, 250])
                pantalla.blit(texto_gameover4, [200, 310])
                pygame.display.flip()
                pygame.event.wait()
                main()
                
        #Lo que modifique fue esto, el menu y la funcion play
               
        # TODO EL CODIGO PARA DIBUJAR DEBE IR DEBAJO DE ESTE COMENTARIO.
        nivel_actual.draw(pantalla)
        lista_sprites_activos.draw(pantalla)
        
        textoPuntos = letraParaPuntos.render("Puntos: " + str(jugador_principal.puntos), 1, constantes.NEGRO)
        pantalla.blit(textoPuntos, (10, 10))
        
        textoVidas = letraParaVidas.render("Vidas: " + str(jugador_principal.vidas), 1, constantes.NEGRO)
        pantalla.blit(textoVidas, (900, 10))
        
        tiempo_transcurrido = int(tiempo_comienzo - time())
        textoTiempo = letraTiempo.render("Tiempo: " + str(tiempo_transcurrido), 1, constantes.NEGRO)
        pantalla.blit(textoTiempo, (300, 10))
        
        LetraMensaje = pygame.font.Font(None, 38)
        El_Mensaje = LetraMensaje.render("El chef se acerca, apurate", 1, constantes.ROJO)
        
        if tiempo_transcurrido < 30 and no_aparece_boss:
                pantalla.blit(El_Mensaje,(330,80))
            
            
        
        if tiempo_transcurrido < 20 and no_aparece_boss:
                Jefe_final.nivel = nivel_actual
                Jefe_final.rect.x = jugador_principal.rect.x - 950 
                Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height 
                Jefe_final.jugador = jugador_principal
                lista_sprites_activos.add(Jefe_final)
                no_aparece_boss = False
        
                
        if current_position < nivel_actual.posicion_bigboss and no_aparece_boss:
                Jefe_final.nivel = nivel_actual
                Jefe_final.rect.x = jugador_principal.rect.x - 950 
                Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height 
                Jefe_final.jugador = jugador_principal
                lista_sprites_activos.add(Jefe_final)
                no_aparece_boss = False
                print current_position
                
        # TODO EL CODIGO PARA DIBUJAR DEBE IR POR ARRIBA DE ESTE COMENTARIO.
        clock.tick(60)
        pygame.display.flip()
        if jugador_principal.vidas == 0 or tiempo_transcurrido == 0:
            pantalla.fill(constantes.NEGRO)
            print current_position
            texto_gameover1 = letraParaMarcador1.render("GAME OVER", 1, constantes.ROJO)
            texto_gameover2 = letraParaMarcador2.render("Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO)
            pantalla.blit(texto_gameover1, [300, 250])
            pantalla.blit(texto_gameover2, [200, 310])
            pygame.display.flip()
            pygame.event.wait()
            main()
            
        pygame.display.flip()
        if jugador_principal.vidas == -1:
            pantalla.fill(constantes.NEGRO)
            print current_position
            texto_gg = letraParaMarcador1.render("HAS GANADO con "+ str(tiempo_transcurrido) + "segundos sobrantes" , 1, constantes.ROJO)
            texto_gameover2 = letraParaMarcador2.render("Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO)
            pantalla.blit(texto_gg, [300, 250])
            pantalla.blit(texto_gameover2)
            pygame.display.flip()
            pygame.event.wait()
            main()
            
            
    # Salgo del juego
    return True