Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

¿Alguna vez ha querido crear un juego emocionante utilizando la biblioteca PyGame de Python, pero se sintió abrumado por el concepto de gestión del tiempo? Si es así, no estás solo.

El tiempo es uno de los componentes más críticos del desarrollo de juegos, y comprender cómo funciona el tiempo en PyGame es esencial para crear juegos atractivos y exitosos. PyGame proporciona varias funciones y módulos útiles que le permiten controlar el tiempo en sus juegos.

Crear un juego simple

Comience creando un juego simple en el que un rectángulo se mueva hacia la derecha. Empezar, instala pip en tu dispositivo y use el siguiente comando para instalar el módulo PyGame:

pip instalar pygame

Puedes encontrar todos los ejemplos de código en este repositorio de GitHub.

Una vez instalado, importe el módulo PyGame. Luego cree una pantalla con un tamaño de 800x600 y un color de fondo blanco, y agregue un objeto rect. El código debería ser algo como esto:

instagram viewer
importar Pygame
pygame.init()
pantalla = pygame.display.set_mode((800, 600))
fondo = pygame. Superficie (pantalla.get_size())
fondo.relleno((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)

Después de eso, use un bucle while para mantener el juego en marcha y mantenga el objeto rect moviéndose hacia la derecha hasta que llegue al final de la pantalla.

corriendo = Verdadero

mientras correr:
para evento en pygame.event.get():
si evento.tipo == pygame. ABANDONAR:
corriendo = FALSO

rect.x += 1

si rect.x > 780:
rect.x = 0

pantalla.blit (fondo, (0, 0))
pygame.draw.rect (pantalla, (0, 0, 0), recto)
pygame.display.update()

También puede agregar entradas de usuario y colisiones en el juego. A continuación se muestra la salida:

Descripción general del módulo de tiempo de PyGame

Para controlar el tiempo en este juego, puedes usar el pygame.tiempo módulo. Este módulo proporciona varias características útiles, incluyendo un Reloj objeto con métodos como get_ticks(), esperar(), y demora(). Usando estas funciones, puedes controlar fácilmente el tiempo en tu juego.

Creación de un objeto de reloj para realizar un seguimiento del tiempo

En PyGame, puede usar un objeto Clock para realizar un seguimiento del tiempo. Para crear un reloj, simplemente use la siguiente línea de código:

reloj = pygame.hora. Reloj()

Con este objeto Reloj, ahora puede realizar un seguimiento del tiempo en su juego. También hay varias otras funciones útiles asociadas con el objeto Reloj, como:

  • consigue tiempo(): Con la ayuda de esta función, puede recuperar el tiempo necesario para cada fotograma del juego. Para usar esta función, simplemente agregue la siguiente línea de código después del ciclo while:
    hora = reloj.obtener_hora()
    Agregue un objeto de texto para mostrar el tiempo empleado:
    fuente = pygame.fuente. fuente del sistema ('Arial', 18)
    texto = fuente.render('Tiempo empleado: {} ms'.formato (tiempo), Verdadero, (0, 0, 0))
    pantalla.blit (texto, (0, 0))
  • garrapata(): Utilice esta función para establecer la velocidad de fotogramas del juego. De forma predeterminada, la velocidad de fotogramas se establece en 60 FPS. Para configurarlo a 30 FPS, simplemente agregue la siguiente línea de código:
    reloj.tick(30)
  • obtener_fps(): puede recuperar la velocidad de fotogramas actual del juego usando get_fps. Para usar esta función, simplemente agregue la siguiente línea de código:
    fps = reloj.get_fps()
    Puede agregar un objeto de texto para mostrar la velocidad de fotogramas:
    fuente = pygame.fuente. fuente del sistema ('Arial', 18)
    texto = fuente.render('FPS: {}'.formato (fps), Verdadero, (0, 0, 0))
    pantalla.blit (texto, (0, 20))
  • tick_busy_loop(): Esta función le permite calcular cuántos milisegundos han pasado desde la última llamada al garrapata() función. Para usarlo, simplemente agregue la siguiente línea de código:
    reloj.tick_busy_loop(30)

Obtener el tiempo usando get_ticks

El get_ticks() La función devuelve el tiempo en milisegundos desde que se inicializó PyGame. Para usar esta función, agregue la siguiente línea de código:

time_elapsed = pygame.time.get_ticks()

Agregue un objeto de texto para mostrar el tiempo empleado:

fuente = pygame.fuente. fuente del sistema ('Arial', 18)
texto = fuente.render('Tiempo transcurrido: {} ms'.formato (tiempo_transcurrido), Verdadero, (0, 0, 0))
pantalla.blit (texto, (0, 40))

Puede usar el tiempo transcurrido para implementar elementos de juego basados ​​en el tiempo, como potenciadores que duran una cantidad de tiempo específica. Por ejemplo, puede implementar un encendido que aumente la velocidad del objeto rect durante 5 segundos:

si tiempo transcurrido / 5000 > 0:
rect.x += 5

A continuación se muestra la salida:

Pausa del juego Uso de las funciones de espera y retraso

PyGame también proporciona dos funciones que puede usar para pausar el juego durante un período de tiempo específico: el esperar función y la demora función.

Usar el esperar función, simplemente agregue la siguiente línea de código en el ciclo while:

pygame.tiempo.esperar(1000)

Esto pausará el juego durante 1000 milisegundos (1 segundo). Usar el demora función, simplemente agregue la siguiente línea de código en el ciclo while:

pygame.time.delay(1000)

Esto retrasará el siguiente cuadro del juego durante 1000 milisegundos (1 segundo).

Diferencias entre esperar y retrasar

Hay algunas diferencias entre los esperar y demora funciones El esperar función duerme el proceso para compartir el procesador con otros programas. El demora La función utilizará el procesador para hacer que el retardo sea más preciso. Esto significa que el demora La función requiere más potencia de procesador que la esperar funciona y es adecuado para juegos que necesitan una sincronización precisa.

Crear un evento usando set_timer

Puedes usar el establecer_temporizador() función para crear un evento que se activa después de un período de tiempo específico.

Los eventos en PyGame son objetos que contienen información sobre la entrada del usuario o mensajes generados por programas. Para usar esta función, cree un evento personalizado y agregue la siguiente línea de código:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Esto creará un evento que se desencadenará después de 1000 milisegundos: 1 segundo. Hay diferentes tipos de eventos que puede desencadenar, como el movimiento del mouse, la entrada del teclado y los eventos de ventana. Luego, su código puede reaccionar a estos eventos de la manera que sea más apropiada.

Por ejemplo, si desea cambiar el eje Y del objeto rect después de 1 segundo, o cuando se activa el evento personalizado, puede agregar la siguiente línea de código:

si event.type == CUSTOM_EVENT:
rect.y += 20

De esta manera, puede crear fácilmente eventos basados ​​en el tiempo en su juego que puede usar para crear un juego interesante y desafiante.

Mejora los controles del juego con el tiempo

Con la ayuda del control de tiempo, puedes mejorar los controles del juego. Puede usar el tiempo para implementar condiciones de aceleración, desaceleración e incluso fin del juego. Muchos juegos introducen el concepto de tiempo bala en el que la acción se ralentiza durante un período breve.

Usando las funciones de control de tiempo en PyGame, puede implementar fácilmente tales funciones, y más, en sus propios juegos.