Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Você já quis criar um jogo empolgante usando a biblioteca PyGame do Python, mas se sentiu sobrecarregado com o conceito de gerenciamento de tempo? Se assim for, você não está sozinho.

O tempo é um dos componentes mais críticos do desenvolvimento de jogos, e entender como o tempo funciona no PyGame é essencial para criar jogos envolventes e bem-sucedidos. O PyGame fornece várias funções e módulos úteis que permitem controlar o tempo em seus jogos.

Criando um jogo simples

Comece criando um jogo simples em que um retângulo se move para a direita. Começar, instale o pip no seu dispositivo e use o comando abaixo para instalar o módulo PyGame:

pip instalar pygame

Você pode encontrar todos os exemplos de código neste repositório GitHub.

Uma vez instalado, importe o módulo PyGame. Em seguida, crie uma tela com um tamanho de 800x600 e uma cor de fundo branca e adicione um objeto retângulo. O código deve ser algo como isto:

instagram viewer
importar pygame
pygame.init()
tela = pygame.display.set_mode((800, 600))
plano de fundo = pygame. Superfície (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)

Depois disso, use um loop while para manter o jogo rodando e mantenha o objeto reto se movendo para a direita até chegar ao final da tela.

correndo = Verdadeiro

enquanto correndo:
para evento em pygame.event.get():
se event.type == pygame. DESISTIR:
correndo = Falso

rect.x += 1

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

screen.blit (plano de fundo, (0, 0))
pygame.draw.rect (tela, (0, 0, 0), correto)
pygame.display.update()

Você também pode adicionar entradas do usuário e colisões no jogo. Abaixo está a saída:

Visão geral do módulo de tempo do PyGame

Para controlar o tempo neste jogo, você pode usar o pygame.time módulo. Este módulo fornece vários recursos úteis, incluindo um Relógio objeto com métodos como get_ticks(), espere(), e atraso(). Usando essas funções, você pode controlar facilmente o tempo em seu jogo.

Criando um objeto de relógio para controlar o tempo

No PyGame, você pode usar um objeto Clock para rastrear o tempo. Para criar um Clock, basta usar a seguinte linha de código:

clock = pygame.time. Relógio()

Com este objeto Clock, agora você pode acompanhar o tempo em seu jogo. Existem também várias outras funções úteis associadas ao objeto Relógio, como:

  • consiga tempo(): Com a ajuda desta função, você pode recuperar o tempo gasto para cada quadro do jogo. Para usar esta função, basta adicionar a seguinte linha de código após o loop while:
    hora = clock.get_time()
    Adicione um objeto de texto para exibir o tempo gasto:
    fonte = pygame.font. SysFont('Arial', 18)
    texto = fonte.render('Tempo gasto: {} ms'.formato (tempo), Verdadeiro, (0, 0, 0))
    screen.blit (texto, (0, 0))
  • marcação(): Use esta função para definir a taxa de quadros do jogo. Por padrão, a taxa de quadros é definida como 60 FPS. Para configurá-lo para 30 FPS, basta adicionar a seguinte linha de código:
    relógio.tick(30)
  • get_fps(): você pode recuperar a taxa de quadros atual do jogo usando get_fps. Para usar esta função, basta adicionar a seguinte linha de código:
    fps = clock.get_fps()
    Você pode adicionar um objeto de texto para exibir a taxa de quadros:
    fonte = pygame.font. SysFont('Arial', 18)
    texto = fonte.render('FPS: {}'.formato (fps), Verdadeiro, (0, 0, 0))
    screen.blit (texto, (0, 20))
  • tick_busy_loop(): Esta função permite calcular quantos milissegundos se passaram desde a última chamada para o marcação() função. Para usá-lo, basta adicionar a seguinte linha de código:
    clock.tick_busy_loop(30)

Obtendo o tempo usando get_ticks

O get_ticks() A função retorna o tempo em milissegundos desde a inicialização do PyGame. Para usar esta função, adicione a seguinte linha de código:

time_elapsed = pygame.time.get_ticks()

Adicione um objeto de texto para exibir o tempo gasto:

fonte = pygame.font. SysFont('Arial', 18)
texto = fonte.render('Tempo decorrido: {} ms'.format (time_elapsed), Verdadeiro, (0, 0, 0))
screen.blit (texto, (0, 40))

Você pode usar o tempo decorrido para implementar elementos de jogo baseados no tempo, como power-ups que duram um período de tempo específico. Por exemplo, você pode implementar um power-up que aumenta a velocidade do objeto reto por 5 segundos:

se tempo decorrido / 5000 > 0:
rect.x += 5

Abaixo está a saída:

Pausando o jogo Usando as funções de espera e atraso

O PyGame também fornece duas funções que você pode usar para pausar o jogo por um período de tempo específico: o espere função e o atraso função.

Para usar o espere função, basta adicionar a seguinte linha de código no loop while:

pygame.time.wait(1000)

Isso pausará o jogo por 1000 milissegundos (1 segundo). Para usar o atraso função, basta adicionar a seguinte linha de código no loop while:

pygame.time.delay(1000)

Isso atrasará o próximo quadro do jogo por 1000 milissegundos (1 segundo).

Diferenças entre espera e atraso

Existem algumas diferenças entre os espere e atraso funções. O espere função dorme o processo para compartilhar o processador com outros programas. O atraso A função usará o processador para tornar o atraso mais preciso. Isso significa que o atraso função requer mais poder do processador do que o espere função e é adequado para jogos que precisam de temporização precisa.

Criando um evento usando set_timer

Você pode usar o Definir temporizador() função para criar um evento que é acionado após um período de tempo especificado.

Os eventos no PyGame são objetos que contêm informações sobre a entrada do usuário ou mensagens geradas pelo programa. Para usar esta função, crie um evento personalizado e adicione a seguinte linha de código:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Isso criará um evento que será acionado após 1.000 milissegundos - 1 segundo. Existem diferentes tipos de eventos que podem ser acionados, como movimento do mouse, entrada de teclado e eventos de janela. Seu código pode reagir a esses eventos da maneira mais apropriada.

Por exemplo, se você deseja alterar o eixo y do objeto retângulo após 1 segundo ou quando o evento personalizado é acionado, você pode adicionar a seguinte linha de código:

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

Desta forma, você pode facilmente criar eventos baseados em tempo em seu jogo, que você pode usar para criar uma jogabilidade interessante e desafiadora.

Melhore os controles do jogo com o tempo

Com a ajuda do controle de tempo, você pode melhorar os controles do jogo. Você pode usar o tempo para implementar condições de aceleração, desaceleração e até game-over. Muitos jogos introduzem o conceito de bullet time, onde a ação fica mais lenta por um curto período.

Usando as funções de controle de tempo no PyGame, você pode implementar facilmente esses recursos - e mais - em seus próprios jogos.