Mesmo os inimigos mais básicos precisam se mover de alguma forma, então inspire-se em como lidar com a codificação por trás dos padrões de ataque.
Um dos elementos-chave de um grande videogame é a presença de inimigos. Sejam zumbis, alienígenas ou outros jogadores, os inimigos podem tornar o jogo mais desafiador e empolgante.
No PyGame, você pode programar facilmente uma variedade de comportamentos de movimento do inimigo, como seguir o jogador, mover-se aleatoriamente ou seguir caminhos específicos.
Criando um jogo simples
Comece criando um jogo simples em que um jogador se moverá horizontal e verticalmente. Se o jogador tocar no inimigo, o jogador morrerá.
Você pode encontrar o código completo neste repositório GitHub.
Comece importando o módulo PyGame necessário e inicializando-o.
importar pygame
pygame.init()
Em seguida, configure a tela e crie o jogador e os objetos inimigos usando o pygame. Rect() função.
# Configure a tela
tela = pygame.display.set_mode((800, 600))# Configure as cores
preto = (0, 0, 0)
branco = (255, 255, 255)
# Configure o retângulo do jogador e o objeto inimigo
jogador = pygame. Rect(350, 500, 50, 50)
inimigo = pygame. Rect(350, 0, 50, 50)
Depois disso, crie um loop de jogo que seja executado até que o jogador colida com o inimigo ou saia do jogo. Além disso, verifique colisão entre o jogador e o inimigo, e desenhe os objetos do jogo na tela.
# Configure o loop do jogo
correndo = Verdadeiroenquanto correndo:
para evento em pygame.event.get():
se event.type == pygame. DESISTIR:
correndo = Falso# Preencha a tela com branco
screen.fill (branco)# Mova o retângulo do jogador
keys = pygame.key.get_pressed()se keys[pygame. K_LEFT]:
jogador.x -= 5se keys[pygame. K_RIGHT]:
jogador.x += 5se keys[pygame. K_UP]:
jogador.y -= 5se keys[pygame. K_BAIXO]:
jogador.y += 5# Verifique se há colisão entre o jogador e o inimigo
se player.colliderect (inimigo):
correndo = Falso# Desenhe o retângulo do jogador e o objeto inimigo na tela
pygame.draw.rect (tela, preto, jogador)
pygame.draw.rect (tela, preto, inimigo)# Atualize a tela
pygame.display.update()
# Sair do jogo
pygame.quit()
Inimigos diretos para o jogador
Para mover o inimigo em direção ao jogador, você precisa calcular a distância entre os dois, o que pode ser feito usando o teorema de Pitágoras. Você pode usar essa distância para determinar a velocidade de movimento do inimigo e a direção em direção ao jogador.
Para implementar isso, crie uma variável de velocidade e use-a para atualizar a posição do inimigo em relação ao jogador.
# Calcule a distância entre o inimigo e o jogador
distância_x = jogador.x - inimigo.x
distância_y = jogador.y - inimigo.y
distância = (distância_x ** 2 + distância_y ** 2) ** 0.5# Mova o inimigo em direção ao jogador
velocidade = 2
se distância != 0:
inimigo.x += velocidade * distance_x / distância
inimigo.y += velocidade * distance_y / distância
Randomize o movimento do inimigo na tela
Você também pode fazer o inimigo se mover aleatoriamente na tela para tornar o jogo mais desafiador.
Para fazer isso, gere uma direção aleatória para o inimigo se mover usando o módulo aleatório em Python. Use o escolha() função para selecionar uma direção aleatória de uma lista de direções em que o inimigo pode se mover. Em seguida, atualize a posição do inimigo com base na direção escolhida.
importar aleatório
# Mova o inimigo aleatoriamente na tela
direção = random.choice(['esquerda', 'certo', 'acima', 'abaixo'])
se direção == 'esquerda':
inimigo.x -= 5
elif direção == 'certo':
inimigo.x += 5
elif direção == 'acima':
inimigo.y -= 5
elif direção == 'abaixo':
inimigo.y += 5
Movimento inimigo baseado em proximidade
Em alguns jogos, o inimigo se move apenas quando o jogador está próximo a ele. Você pode conseguir isso calculando a distância entre o inimigo e o jogador.
Se a distância for menor que um determinado valor, faça o inimigo se mover em direção ao jogador. Isso torna o jogo mais estratégico e obriga o jogador a ter mais cuidado em seus movimentos.
# Mova o inimigo em direção ao jogador se o jogador estiver próximo
velocidade = 2
se distância < 300:
se distância != 0:
inimigo.x += velocidade * distance_x / distância
inimigo.y += velocidade * distance_y / distância
Inimigo se esquiva dos ataques do jogador
Você também pode fazer o inimigo desviar do movimento do jogador. O inimigo tentará evitar o jogador movendo-se perpendicularmente à posição do jogador.
Para conseguir isso, calcule o vetor unitário em direção ao jogador usando a distância_x e a distância_y calculadas anteriormente. Em seguida, calcule o vetor perpendicular para mover o inimigo perpendicularmente ao vetor unitário. Finalmente, calcule o produto escalar do vetor perpendicular e do vetor unitário para determinar a direção do movimento do inimigo.
Para implementar isso, adicione o trecho de código abaixo após o cálculo da distância.
velocidade = 2
se distância < 400:
se distância != 0:
# Calcula o vetor unitário em direção ao jogador
unit_vector_x = distance_x / distância
unit_vector_y = distance_y / distância# Calcula o vetor perpendicular
perpendicular_vector_x = -unit_vector_y
perpendicular_vector_y = unit_vector_x# Calcule o produto escalar do vetor perpendicular e o
# vetor unitário
ponto_produto = perpendicular_vetor_x * unit_vetor_x
+ perpendicular_vector_y * unit_vector_y
# Mova o inimigo perpendicularmente ao vetor unitário
se ponto_produto > 0:
inimigo.x += velocidade * perpendicular_vetor_x
inimigo.y += velocidade * perpendicular_vector_y
outro:
inimigo.x -= velocidade * perpendicular_vetor_x
inimigo.y -= velocidade * perpendicular_vector_y
Com essas modificações, o inimigo tentará evitar chegar muito perto do jogador. Isso torna o jogo mais desafiador e divertido de jogar.
Adicionando Recursos Extras
Você também pode adicionar mais recursos ao seu jogo para torná-lo mais desafiador. Por exemplo, você pode adicionar vários inimigos que se movem aleatoriamente na tela, obstáculos que o jogador precisa evitar enquanto se move, power-ups que aprimoram as habilidades do jogador e assim por diante.
Você pode use o módulo Clock para definir a taxa de quadros do seu jogo e torná-lo mais suave. Segue abaixo a implementação:
# Adicione vários inimigos que se movem aleatoriamente na tela
inimigos = []para eu em faixa(5):
inimigo = pygame. Rect (aleatório.randint(0, 750), randint(0, 550), 50,
50)inimigos.apêndice (inimigo)
# Adicione obstáculos que o jogador precisa evitar
obstáculo = pygame. Rect(200, 250, 50, 50)# Configure o loop do jogo
clock = pygame.time. Relógio()
correndo = Verdadeiroenquanto correndo:
para evento em pygame.event.get():
se event.type == pygame. DESISTIR:
correndo = Falso# Preencha a tela com branco
screen.fill (branco)# Mova o retângulo do jogador
keys = pygame.key.get_pressed()se keys[pygame. K_LEFT]:
jogador.x -= 5
se keys[pygame. K_RIGHT]:
jogador.x += 5
se keys[pygame. K_UP]:
jogador.y -= 5
se keys[pygame. K_BAIXO]:
jogador.y += 5# Mova os inimigos aleatoriamente na tela
para inimigo em inimigos:
direção = random.choice(['esquerda', 'certo', 'acima', 'abaixo'])se direção == 'esquerda':
inimigo.x -= 5
elif direção == 'certo':
inimigo.x += 5
elif direção == 'acima':
inimigo.y -= 5
elif direção == 'abaixo':
inimigo.y += 5# Verifique se há colisão entre o jogador e o inimigo
se player.colliderect (inimigo):
correndo = Falso# Desenhe o retângulo do jogador, os objetos inimigos e o obstáculo
# a tela
pygame.draw.rect (tela, preto, jogador)para inimigo em inimigos:
pygame.draw.rect (tela, preto, inimigo)pygame.draw.rect (tela, preto, obstáculo)
# Atualize a tela
pygame.display.update()# Defina a taxa de quadros do jogo
relógio.tick(60)
# Sair do jogo
pygame.quit()
Melhore sua experiência de jogo com inimigos
Ao adicionar inimigos com movimentos, comportamentos e habilidades únicos, você pode tornar seus jogos mais envolventes e desafiadores para os jogadores. Os jogadores precisarão criar estratégias e adaptar sua jogabilidade para superar diferentes tipos de inimigos. Isso pode aumentar o engajamento, melhorar o valor de replay e manter os jogadores voltando para mais.