Exemple #1
0
def jugar(pantalla, jugador):
    # Creamos al jugador con la imagen p1_walk.png
    jugador_principal = Player(jugador)

    letraparapuntos=pygame.font.SysFont("comicsans",24)
    #letraTiempo = pygame.font.Font("comicsans", 24)

    # 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 = 340
    jugador_principal.rect.y = constantes.LARGO_PISO - jugador_principal.rect.height
    lista_sprites_activos.add(jugador_principal)
    
    #musica
    nivel_actual.sonido.play(-1)

    #Variable booleano que nos avisa cuando el usuario aprieta el botOn salir.
    salir = False

    clock = pygame.time.Clock()
    
    starting_point = time.time() + 700
    
    # -------- Loop Princiapl -----------
    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_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_LSHIFT and pygame.K_RIGHT:
                    jugador_principal.turbo = 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()
                if evento.key == pygame.K_LSHIFT and pygame.K_LEFT:
                    jugador_principal.turbo = False
                    


        # 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
        #print "current pos: ",  current_position
        #print "nivel_actual.limite_izquierdo: ",  nivel_actual.limite_izquierdo
        #print "jugador_principal.rect.x: ",  jugador_principal.rect.x
        #print "nivel_actual.posicion_jugador_nivel: ", nivel_actual.posicion_jugador_nivel
        #print "jugador_principal.direccion:: " , jugador_principal.direccion
        
        if jugador_principal.direccion == "L":
            if nivel_actual.posicion_jugador_nivel > 0:
                if current_position <= nivel_actual.limite_izquierdo:                        
                    jugador_principal.rect.x = 200
        if current_position < nivel_actual.limite_nivel:
            jugador_principal.rect.x = 120
            if numero_del_nivel_actual < len(lista_niveles)-1:
                pygame.mixer.stop()
                numero_del_nivel_actual += 1
                if (numero_del_nivel_actual<=1):
                    nivel_actual = lista_niveles[numero_del_nivel_actual]
                    jugador_principal.nivel = nivel_actual
                    nivel_actual.sonido.play(-1)
                    starting_point = time.time() + 700
            else:
                pantalla.fill(constantes.NEGRO)
                game = pygame.image.load("imagenes/Fin.png").convert()
                pantalla.blit(game,(0,0))
                pygame.display.flip()
                time.sleep(5) 
                pygame.event.wait()                
                main()
                

        if jugador_principal.vidas <= 0:
            pygame.mixer.stop()
            pantalla.fill(constantes.NEGRO)
            game = pygame.image.load("imagenes/Gameover.png").convert()
            pantalla.blit(game,(0,0))
            pygame.display.flip()
            pygame.event.wait()
            main()
            
        elapsed_time = starting_point - time.time ()
        elapsed_time_int = int(elapsed_time)    
        if elapsed_time <= 0:
            pygame.mixer.stop()
            pantalla.fill(constantes.NEGRO)
            game = pygame.image.load("imagenes/Gameover.png").convert()
            pantalla.blit(game,(0,0))
            pygame.display.flip()
            pygame.event.wait()            
            main()


        #print "current pos: ",  current_position
                
        # 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),0, constantes.BLANCO)
        pantalla.blit( textopuntos,(10,10))
        
        textovidas=letraparapuntos.render("Vidas: "+str(jugador_principal.vidas),0, constantes.BLANCO)
        pantalla.blit( textovidas,(10,35))
        
        
        textotiempo = letraparapuntos.render("Tiempo: "+ str(elapsed_time_int), 1, constantes.BLANCO)
        pantalla.blit(textotiempo, (10,60))
        # TODO EL CODIGO PARA DIBUJAR DEBE IR POR ARRIBA DE ESTE COMENTARIO.

        clock.tick(60)

        pygame.display.flip()

    return salir