Aprenda a medir o tempo e a usá-lo para controlar vários aspectos do seu jogo.
No desenvolvimento de jogos, adicionar eventos baseados no tempo pode melhorar muito a mecânica de jogo e tornar os jogos mais envolventes para os jogadores. Ao incorporar cronômetros, você pode introduzir desafios, criar objetivos com tempo limitado ou adicionar um senso de urgência a certos elementos do jogo.
Crie um jogo simples
Comece criando um jogo simples para entender o básico. Construa um jogo onde o jogador pode se mover para a esquerda e para a direita, e haverá uma única plataforma. Crie um novo arquivo chamado simple-game.py e importar o módulo arcade, que fornece as funcionalidades necessárias para a criação do jogo.
O código usado neste artigo está disponível neste Repositório GitHub e é gratuito para você usar sob a licença do MIT.
A seguir, defina o GameWindow classe, que é uma subclasse de videogames. Janela. Dentro da classe GameWindow, defina o __iniciar__ método, que inicializa a janela com a largura, altura e título especificados.
O on_key_press O método detecta o pressionamento das teclas de seta para a esquerda ou para a direita. Pressionar à esquerda diminui jogador_x em 10 unidades enquanto pressiona para a direita aumenta em 10 unidades. Esse permite que o jogador se mova horizontalmente dentro da janela do jogo.
Para executar o jogo, defina a função main, crie uma instância da GameWindow, chame o método setup para configurar a janela do jogo e, finalmente, inicie o loop do jogo usando arcade.run().
Projetando a estrutura da classe Timer
Para implementar timers em seu jogo, você pode criar uma classe Timer com os atributos e métodos necessários. Esta classe fornecerá funcionalidades para iniciar o cronômetro, pará-lo, recuperar o tempo decorrido e verificar se o cronômetro expirou. Aqui está a estrutura básica para a classe Timer:
importar tempo
aulaCronômetro:
def__iniciar__(próprio, duração):
self.duration = duração
self.start_time = 0
self.is_running = Falsodefcomeçar(auto):
self.start_time = time.time()
self.is_running = Verdadeirodefparar(auto):
self.is_running = Falsodefget_elapsed_time(auto):
se self.is_running:
retornar time.time() - self.start_time
retornar0
defestá expirado(auto):
retornar self.get_elapsed_time() >= self.duration
A classe Timer leva um duração parâmetro em segundos durante a inicialização. A classe contém atributos como hora_início para armazenar a hora em que o cronômetro foi iniciado e está correndo para rastrear o estado do temporizador.
O começar() O método define o start_time para a hora atual usando tempo.tempo() e define is_running como Verdadeiro. O parar() método simplesmente define is_running para Falso. O get_elapsed_time() O método calcula o tempo decorrido subtraindo o start_time do tempo atual.
Se o cronômetro estiver em execução, ele retornará o tempo decorrido; caso contrário, retorna 0. O está expirado() O método verifica se o tempo decorrido é maior ou igual à duração, indicando que o timer expirou.
Implementando temporizadores de contagem regressiva
Para demonstrar uma contagem regressiva em seu jogo, você pode iniciar o cronômetro quando o jogador pressionar uma tecla específica, como a barra de espaço. Imprima a contagem regressiva no console usando o comando print do Python. Crie um novo arquivo chamado timer.py e adicione o código com estas atualizações:
importar tempo
aulaGameWindow(videogames. Janela):
def__iniciar__(auto):
super().__init__(WIDTH, HEIGHT, "Jogo Simples")
self.player_x = LARGURA // 2
self.player_y = ALTURA // 2
self.timer = Timer(10)defon_key_press(auto, chave, modificadores):
se chave == arcade.key. ESPAÇO:
self.timer.start()
defon_draw(auto):
# Código existente
se self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - elapsed_time
restante_tempo = max (r_tempo, 0)
imprimir(f"Contagem regressiva: {tempo restante:.1f} segundos")
Certifique-se de que você pode ver a janela do terminal e a janela do jogo ao mesmo tempo. Em seguida, pressione espaço e você verá a contagem regressiva do cronômetro:
Manipulando Eventos de Timer e Acionando Ações
Você também pode acionar uma função que desenha um retângulo quando o cronômetro de contagem regressiva expirar. Crie um novo arquivo chamado handle-event.py e adicione o código com as atualizações abaixo:
defon_draw(auto):
# Código existente
se self.timer.is_expired():
self.draw_rectangle()
defdesenhar_retângulo(auto):
arcade.draw_rectangle_filled (WIDTH // 2, ALTURA // 2, 100, 100, vermelho)
Abaixo está a saída:
Pausa, reinicialização e retomada do cronômetro
Para adicionar funcionalidade para pausar, redefinir e retomar o cronômetro, você pode estender o Cronômetro classe com métodos apropriados. Aqui está um exemplo:
aulaCronômetro:
# Código existentedefpausa(auto):
self.duration -= self.get_elapsed_time()
self.is_running = Falsodefreiniciar(auto):
self.start_time = 0
self.is_running = Falso
defretomar(auto):
self.start_time = time.time()
self.is_running = Verdadeiro
Adicionando feedback visual ao cronômetro
Para fornecer feedback visual para o cronômetro, você pode incorporar texto ou elementos gráficos na tela do jogo. Crie um novo arquivo chamado visual.py e adicione o código com as atualizações abaixo:
defon_draw(auto):
# Código existente
se self.timer.is_running:
texto = f"Contagem regressiva: {tempo restante:.1f} segundos"
arcade.draw_text (texto, 10, 10, preto, 18)
Agora você verá o cronômetro diretamente na janela do jogo em vez do console:
Incluindo Recursos Adicionais
Para aprimorar ainda mais os eventos baseados em tempo, você pode considerar a implementação dos seguintes recursos adicionais em seus jogos.
Power-ups ou bônus baseados no tempo
Introduza power-ups ou bônus que aparecem periodicamente ao longo do jogo. Esses power-ups podem fornecer habilidades temporárias, pontos extras, aumento de velocidade ou armas aprimoradas.
Ao torná-los limitados no tempo, os jogadores devem coletá-los estrategicamente dentro de um período de tempo específico para obter uma vantagem. Isso adiciona emoção e recompensa o pensamento rápido.
Desafios com tempo limitado
Crie desafios com tempo limitado em que os jogadores devem concluir uma tarefa dentro de um determinado período de tempo. Por exemplo, uma seção de quebra-cabeça ou plataforma que requer resolução dentro de um determinado tempo.
Isso desafia os jogadores a pensar e agir rapidamente, adicionando um emocionante senso de urgência ao jogo. A conclusão bem-sucedida desses desafios pode desbloquear recompensas ou progredir na história.
Obstáculos cronometrados ou inimigos
Implemente obstáculos cronometrados ou inimigos que representem uma ameaça para o jogador. Por exemplo, plataformas móveis que aparecem e desaparecem em intervalos regulares ou inimigos que se tornam invencíveis por um tempo limitado.
Os jogadores devem cronometrar suas ações e movimentos corretamente para navegar por esses obstáculos ou derrotar os inimigos antes que o tempo acabe. Isso adiciona uma camada de estratégia e coordenação ao jogo.
Melhores práticas para eventos baseados em tempo
Ao implementar eventos baseados em tempo em seus jogos, é essencial seguir estas práticas recomendadas.
Teste e Equilíbrio
Teste seus eventos baseados em tempo completamente para garantir que sejam justos e equilibrados. Ajuste a duração, dificuldade e recompensas para criar experiências de jogo agradáveis.
Feedback do usuário
Forneça feedback claro e intuitivo aos jogadores sobre o status do cronômetro e quaisquer eventos baseados em tempo. Adicionando efeitos sonoros, indicadores visuais ou dicas textuais podem ajudar os jogadores a entender as restrições de tempo e as consequências de suas ações.
Medição consistente de tempo
Use um sistema de medição de tempo consistente durante todo o jogo. Por exemplo, use segundos como unidade para todos os cronômetros e cálculos relacionados ao tempo. Isso garante consistência e facilidade de compreensão tanto para os jogadores quanto para os desenvolvedores.
Lidar com casos extremos
Considere cenários em que o jogo pode ser pausado, minimizado ou executado em segundo plano. Lide com essas situações graciosamente para manter o tempo preciso e evitar comportamentos não intencionais quando o jogo recomeçar.
Ao seguir essas práticas recomendadas, você pode criar eventos baseados em tempo que aprimoram a jogabilidade, desafiam os jogadores e fornecem uma experiência equilibrada e agradável.
Tornando os jogos mais divertidos com eventos baseados no tempo
Ao incorporar eventos baseados em tempo em seus jogos, você pode criar uma experiência dinâmica e envolvente para os jogadores. Desafios com tempo limitado adicionam emoção e urgência, enquanto power-ups ou obstáculos cronometrados podem criar oportunidades estratégicas de tomada de decisão.
Experimente diferentes mecânicas baseadas no tempo para encontrar o equilíbrio certo para o seu jogo e lembre-se de testar e repetir para maximizar a diversão e o prazer.