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:
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:
Adicione um objeto de texto para exibir o tempo gasto:hora = clock.get_time()
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:
Você pode adicionar um objeto de texto para exibir a taxa de quadros:fps = clock.get_fps()
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.