Apimente seus jogos de fliperama apresentando inimigos.
Os inimigos desempenham um papel crucial na criação de jogos envolventes e desafiadores. Eles fornecem obstáculos e adversários para os jogadores, tornando a experiência de jogo mais emocionante. A biblioteca Arcade do Python oferece uma maneira direta de incorporar inimigos em seus jogos.
Crie um jogo simples
Antes de começar, certifique-se de ter pip instalado no seu dispositivo. Use este comando para instalar o videogames biblioteca:
pip instalar fliperama
Depois disso, comece criando um jogo simples onde o jogador pode se mover para a esquerda e para a direita usando as setas do teclado.
O código usado neste artigo está disponível neste Repositório GitHub e é gratuito para você usar sob a licença do MIT.
importar videogames
# Dimensões da janela
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# Atributos do jogador
PLAYER_RADIUS = 25
PLAYER_SPEED = 5aulaGameWindow(videogames. Janela):
def__iniciar__(auto, largura, altura):
super().__init__(largura, altura)
arcade.set_background_color (arcade.color. BRANCO)
self.player_x = largura // 2defon_draw(auto):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. AZUL)defon_key_press(auto, chave, modificadores):
se chave == arcade.key. ESQUERDA:
self.player_x -= PLAYER_SPEED
elif chave == arcade.key. CERTO:
self.player_x += PLAYER_SPEEDdefatualizar(auto, delta_time):
passardefprincipal():
janela = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
se __nome__ == "__principal__":
principal()
Criando um inimigo simples
Para criar um inimigo que mata o jogador na colisão, crie outro círculo na tela. No on_draw função, você pode desenhar este círculo inimigo e verificar se há colisões no atualizar método. Você também pode usar sprites para inimigos.
# Adicionar à classe GameWindow
aulaGameWindow(videogames. Janela):
# ...def__iniciar__(auto, largura, altura):
# ...# Atributos inimigos
self.enemy_x = largura // 2
self.enemy_y = altura - PLAYER_RADIUS
self.enemy_radius = 20defon_draw(auto):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. VERMELHO)
defatualizar(auto, delta_time):
se self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
imprimir("Game Over!")
defis_collision(próprio, x1, y1, x2, y2, raio1, raio2):
distância ao quadrado = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
retornar distance_squared <= radius_sum_squared
Fazendo o inimigo seguir o jogador
Em alguns jogos, os inimigos podem perseguir o jogador, adicionando um elemento dinâmico à jogabilidade. Para criar um inimigo seguinte, você precisa atualizar sua posição com base na posição do jogador. Em qualquer momento o jogador se move, o inimigo se move na mesma direção. Você pode conseguir isso modificando o atualizar método. Crie um novo arquivo chamado inimigo-follow-player.py e adicione o código com as atualizações abaixo:
# Adicionar à classe GameWindow
aulaGameWindow(videogames. Janela):
# ...defatualizar(auto, delta_time):
se self.player_x < self.enemy_x:
self.enemy_x -= PLAYER_SPEED
elif self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED
se self.is_collision (self.player_x, self.player_y,
self.inimigo_x, self.inimigo_y,
PLAYER_RADIUS, ENEMY_RADIUS):
imprimir("Game Over!")
defis_collision(próprio, x1, y1, x2, y2, raio1, raio2):
distância ao quadrado = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
retornar distance_squared <= radius_sum_squared
Abaixo está a saída:
Adicionando balas inimigas
Para criar um inimigo que atira balas, crie um Bala classe e uma lista para acompanhar os marcadores ativos. O inimigo criará periodicamente uma nova bala e atualizará sua posição. Crie um novo arquivo chamado bullets.py e adicione o código com as atualizações abaixo:
# Adicionar à classe GameWindow
aulaBala:
def__iniciar__(auto, x, y, raio, velocidade):
auto.x = x
self.y = y
self.radius = raio
self.speed = velocidadedefatualizar(auto):
self.y -= self.speedaulaGameWindow(videogames. Janela):
# ...def__iniciar__(auto, largura, altura):
# ...# Atributos inimigos
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Número de quadros entre a geração de balas
self.bullet_timer = 0defon_draw(auto):
# ...
para bala em self.bullets:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, arcade.color. PRETO)defatualizar(auto, delta_time):
# ...self.bullet_timer += 1
se self.bullet_timer >= self.bullet_cooldown:
self.bullets.append (Bala (self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
self.bullet_timer = 0
para bala em self.bullets:
bullet.update()
se self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
imprimir("Game Over!")
defis_collision(próprio, x1, y1, x2, y2, raio1, raio2):
distância ao quadrado = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
retornar distance_squared <= radius_sum_squared
Abaixo está a saída:
Adicionando pontos de saúde para inimigos
Em muitos jogos, os inimigos podem possuir pontos de saúde (HP), permitindo-lhes sustentar vários golpes antes de serem derrotados. Adicionar pontos de saúde aos inimigos pode introduzir elementos de jogabilidade estratégicos e fornecer uma sensação de progressão e desafio. Crie um novo arquivo chamado heath-point.py e adicione o código com as atualizações abaixo:
# Dimensões da janela
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600# Atributos do jogador
PLAYER_RADIUS = 25
PLAYER_SPEED = 5# Atributos inimigos
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100aulaGameWindow(videogames. Janela):
def__iniciar__(auto, largura, altura):
super().__init__(largura, altura)
arcade.set_background_color (arcade.color. BRANCO)
self.player_x = largura // 2
self.player_y = altura // 2
self.enemy_x = largura // 2
self.enemy_y = altura - PLAYER_RADIUS
self.enemy_health = ENEMY_HEALTH
imprimir (self.enemy_health)
defon_draw(auto):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
arcade.color. AZUL)
se self.enemy_health > 0:
arcade.draw_circle_filled (self.enemy_x,
auto.inimigo_y,
ENEMY_RADIUS,
arcade.color. VERMELHO)
defatualizar(auto, delta_time):
se self.is_collision (self.player_x, self.player_y,
self.inimigo_x, self.inimigo_y,
PLAYER_RADIUS, ENEMY_RADIUS):
self.enemy_health -= 10
imprimir (self.enemy_health)
O ENEMY_HEALTH constante tem um valor de 100 para representar os pontos de saúde iniciais do inimigo. Quando o jogador colide com o inimigo, você pode deduzir alguns pontos da saúde do inimigo. Para exibir o valor de saúde atualizado, você pode imprimir um objeto de texto self.health_text que mostra a saúde atual do inimigo.
Ao incorporar pontos de saúde para os inimigos, você pode introduzir uma camada de desafio e estratégia para os jogadores. O valor de saúde exibido fornece feedback visual e permite aos jogadores rastrear a saúde restante do inimigo.
Além disso, você pode expandir o código adicionando mais lógica e recursos visuais, como exibir barras de saúde ou implementar condições de derrota quando a saúde do inimigo chegar a zero.
Melhores práticas para criar inimigos
Ao criar inimigos para o seu jogo, é importante considerar várias práticas recomendadas para garantir que elas contribuam para uma experiência de jogo desafiadora e agradável. Aqui estão algumas diretrizes a seguir ao criar inimigos:
Diversos Atributos
Crie inimigos com atributos variados, como velocidade, tamanho, saúde e poder de ataque. Diferentes tipos de inimigos devem representar diferentes níveis de dificuldade, exigindo que os jogadores adaptem suas estratégias de acordo. Ao introduzir uma mistura de atributos inimigos, você pode manter a jogabilidade nova e envolvente.
Comportamentos únicos
Dê a cada tipo de inimigo seus próprios padrões de comportamento únicos. Alguns inimigos podem se mover de maneira previsível, enquanto outros podem exibir movimentos mais complexos ou erráticos. Considere incorporar algoritmos de IA inimigos para tornar seu comportamento mais inteligente e imprevisível, adicionando uma camada extra de desafio para os jogadores.
Pontos de Saúde (HP)
Implemente pontos de saúde para os inimigos para introduzir uma sensação de progressão e durabilidade. Isso permite que os inimigos sustentem vários golpes antes de serem derrotados. Ao atribuir quantidades variáveis de HP a diferentes tipos de inimigos, você pode criar uma hierarquia de dificuldade e incentivar os jogadores a criar estratégias e priorizar seus alvos.
Torne os jogos mais divertidos com os inimigos
Adicionar inimigos aos seus jogos pode melhorar significativamente a experiência de jogo. Eles introduzem desafios e motivam os jogadores a melhorar suas habilidades. Os inimigos podem vir de várias formas, desde simples obstáculos até complexos adversários controlados por IA. Ao implementar os inimigos de forma eficaz, você pode tornar seus jogos mais envolventes e agradáveis para os jogadores.