Juego por tiempo

quisiera saber como hacer para que en el juego se pierda cuanto un tiempo llegue a cero pero lo e intentada de varias formas y no puedo hacerlo alguien me diría alguna forma de hacer esto por favor e visto el código del disparar a los monos pero no lo entiendo me marea con tantas cosas si fuera posible también me gustaría que me digan como agregar una escena que diga game over

Hola @Michael_Martinez, para mí lo mas sencillo en estos casos es usar las “tareas” de pilas.

Mediante tareas le podés pedir a pilas que ejecute una función constantemente, por ejemplo cada 1 segundo.

Mirá este ejemplo, puse un actor en la pantalla, un contador en 10 y una tarea que reduce el contador en 1, cada un segundo el contador va a reducirse, 10, 9, 8, 7, 6 … etc, y cuando llegue a cero, bum, elimino al actor :boom:

mono = pilas.actores.Mono()

tiempo = 10
contador = pilas.actores.Texto("...")

# Esta funcion se ejecutara 1 vez por segundo
def descontar_tiempo():
    global tiempo

    tiempo = tiempo - 1
        
    # Si puede seguir jugando, reducimos el contador.
    if tiempo > 0:
        contador.texto = str(tiempo) # tiempo es un numero, asi que lo tenemos que convertir a texto con str.
    
    # Si es tiempo de perder.
    if tiempo == 0:
        mono.eliminar()
        contador.eliminar()
        texto = pilas.actores.Texto("Game Over")
    

# le indicamos a pilas que llame a la funcion cada 1 segundo
pilas.tareas.siempre(1, descontar_tiempo)

Luego, para implementar la pantalla de gameOver podrías usar escenas.

Hay un ejemplo de escenas incluido en pilas, pero creo que tiene bastante código también, voy a tratar de escribir uno más sencillo en estos días; avisame cualquier cosa.

Saludos!

1 Like

gracias por la ayuda un ultimo detalle como podría moverlo el tiempo a una esquina es que intente hacerlo pero me tira error te pido disculpa por la molestias pero recién tengo unos par de días usando el programa y mi nivel de programación es bastante bajo

1 Like

Hola @Michael_Martinez, lo que podrías hacer es cambiar las coordenadas del actor puntaje, algo así:

contador.x = -100
contador.y = 100

Eso sí, para colocarlo en la esquina tendrías que buscar los valores justos, tal vez -150, 190 o algo así.

1 Like

gracias fue de mucha ayuda

hola quisiera preguntar como puedo detener el tiempo por que mi juego se gana cuando se produce un colisión pero entonces el tiempo sigue funciona y se me encima el game over del ganaste

te respondo: eliminás la tarea que descuenta el tiempo dentro del código que se ejecuta al detectar la colisión:

descontar_tiempo.terminar()

1 Like