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)

instagram viewer

# 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 = Verdadeiro

enquanto 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

# 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 = Verdadeiro

enquanto 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.