Anche i nemici più elementari devono muoversi in qualche modo, quindi prendi ispirazione su come gestire il codice dietro i modelli di attacco.

Uno degli elementi chiave di un grande videogioco è la presenza dei nemici. Che siano zombi, alieni o altri giocatori, i nemici possono rendere il gioco più impegnativo ed emozionante.

In PyGame, puoi facilmente programmare una varietà di comportamenti di movimento del nemico, come seguire il giocatore, muoversi in modo casuale o seguire percorsi specifici.

Creazione di un gioco semplice

Inizia creando un semplice gioco in cui un giocatore si muoverà orizzontalmente e verticalmente. Se il giocatore tocca il nemico, il giocatore morirà.

Puoi trovare il codice completo in questo Repository GitHub.

Inizia importando il modulo PyGame necessario e inizializzandolo.

importare pygame

pygame.init()

Quindi, imposta lo schermo e crea il giocatore e gli oggetti nemici usando il pygame. Rett() funzione.

# Imposta lo schermo
schermo = pygame.display.set_mode((800, 600))

# Imposta i colori
nero = (0, 0, 0)
bianco = (255, 255, 255)

instagram viewer

# Imposta il rettangolo del giocatore e l'oggetto nemico
giocatore = pygame. Rett(350, 500, 50, 50)
nemico = pygame. Rett(350, 0, 50, 50)

Successivamente, crea un ciclo di gioco che si svolga fino a quando il giocatore non si scontra con il nemico o esce dal gioco. Inoltre, controlla per collisione tra il giocatore e il nemicoe disegna gli oggetti del gioco sullo schermo.

# Imposta il ciclo di gioco
correre = VERO

Mentre corsa:
per evento In pygame.event.get():
Se event.type == pygame. ESENTATO:
correre = Falso

# Riempi lo schermo di bianco
screen.fill (bianco)

# Sposta il rettangolo del giocatore
chiavi = pygame.key.get_pressed()

Se chiavi[pygame. K_SINISTRA]:
giocatore.x -= 5

Se chiavi[pygame. K_DESTRA]:
giocatore.x += 5

Se chiavi[pygame. K_UP]:
giocatore.y -= 5

Se chiavi[pygame. K_DOWN]:
giocatore.y += 5

# Controlla la collisione tra giocatore e nemico
Se player.colliderect (nemico):
correre = Falso

# Disegna il rettangolo del giocatore e l'oggetto nemico sullo schermo
pygame.draw.rect (schermo, nero, giocatore)
pygame.draw.rect (schermo, nero, nemico)

# Aggiorna lo schermo
pygame.display.update()

# Esci dal gioco
pygame.quit()

Dirigi i nemici verso il giocatore

Per spostare il nemico verso il giocatore, devi calcolare la distanza tra i due, cosa che puoi fare usando il teorema di Pitagora. Puoi quindi utilizzare questa distanza per determinare la velocità di movimento e la direzione del nemico verso il giocatore.

Per implementare ciò, crea una variabile di velocità e usala per aggiornare la posizione del nemico verso il giocatore.

# Calcola la distanza tra il nemico e il giocatore
distanza_x = giocatore.x - nemico.x
distanza_y = giocatore.y - nemico.y
distanza = (distanza_x ** 2 + distanza_y ** 2) ** 0.5

# Sposta il nemico verso il giocatore
velocità = 2

Se distanza != 0:
nemico.x += velocità * distanza_x / distanza
nemico.y += velocità * distanza_y / distanza

Randomizza il movimento nemico sullo schermo

Puoi anche far muovere il nemico in modo casuale sullo schermo per rendere il gioco più impegnativo.

Per fare ciò, genera una direzione casuale per il movimento del nemico usando il modulo casuale in Python. Usa il scelta() funzione per selezionare una direzione casuale da un elenco di direzioni in cui il nemico può muoversi. Quindi aggiorna la posizione del nemico in base alla direzione scelta.

importare casuale

# Sposta il nemico in modo casuale sullo schermo
direzione = scelta casuale(['Sinistra', 'Giusto', 'su', 'giù'])

Se direzione == 'Sinistra':
nemico.x -= 5
elif direzione == 'Giusto':
nemico.x += 5
elif direzione == 'su':
nemico.y -= 5
elif direzione == 'giù':
nemico.y += 5

Movimento nemico basato sulla prossimità

In alcuni giochi, il nemico si muove solo quando il giocatore gli è vicino. Puoi raggiungere questo obiettivo calcolando la distanza tra il nemico e il giocatore.

Se la distanza è inferiore a un certo valore, fai muovere il nemico verso il giocatore. Questo rende il gioco più strategico e costringe il giocatore a stare più attento nei propri movimenti.

# Sposta il nemico verso il giocatore se il giocatore è vicino
velocità = 2

Se distanza < 300:
Se distanza != 0:
nemico.x += velocità * distanza_x / distanza
nemico.y += velocità * distanza_y / distanza

Il nemico elude gli attacchi del giocatore

Puoi anche fare in modo che il nemico schivi il movimento del giocatore. Il nemico cercherà di evitare il giocatore muovendosi perpendicolarmente alla posizione del giocatore.

Per ottenere ciò, calcola il vettore unitario verso il giocatore utilizzando la distanza_x e la distanza_y calcolate in precedenza. Quindi, calcola il vettore perpendicolare per spostare il nemico perpendicolarmente al vettore unitario. Infine, calcola il prodotto scalare del vettore perpendicolare e del vettore unitario per determinare la direzione del movimento nemico.

Per implementare ciò, aggiungi lo snippet di codice di seguito dopo il calcolo della distanza.

velocità = 2

Se distanza < 400:
Se distanza != 0:
# Calcola il vettore unitario verso il giocatore
unit_vector_x = distanza_x / distanza
unit_vector_y = distanza_y / distanza

# Calcola il vettore perpendicolare
perpendicular_vector_x = -unit_vector_y
vettore_perpendicolare_y = vettore_unità_x

# Calcola il prodotto scalare del vettore perpendicolare e del
# vettore unitario
prodotto_punto = vettore_perpendicolare_x * vettore_unità_x
+ vettore_perpendicolare_y * vettore_unità_y

# Sposta il nemico perpendicolarmente al vettore unitario
Se prodotto_punto > 0:
nemico.x += velocità * vettore_perpendicolare_x
nemico.y += velocità * vettore_perpendicolare_y
altro:
nemico.x -= velocità * vettore_perpendicolare_x
nemico.y -= velocità * vettore_perpendicolare_y

Con queste modifiche, il nemico cercherà di evitare di avvicinarsi troppo al giocatore. Questo rende il gioco più stimolante e divertente da giocare.

Aggiunta di funzionalità extra

Puoi anche aggiungere più funzionalità al tuo gioco per renderlo più impegnativo. Ad esempio, puoi aggiungere più nemici che si muovono in modo casuale sullo schermo, ostacoli che il giocatore deve evitare mentre si muove, potenziamenti che migliorano le abilità del giocatore e così via.

Puoi utilizzare il modulo Orologio per impostare il frame rate del tuo gioco e farlo funzionare più agevolmente. Di seguito l'implementazione:

# Aggiungi più nemici che si muovono casualmente sullo schermo
nemici = []

per io In allineare(5):
nemico = pygame. Rett (random.randint(0, 750), random.randint(0, 550), 50,
50)

nemici.append (nemico)

# Aggiungi ostacoli che il giocatore deve evitare
ostacolo = pygame. Rett(200, 250, 50, 50)

# Imposta il ciclo di gioco
orologio = pygame.time. Orologio()
correre = VERO

Mentre corsa:
per evento In pygame.event.get():
Se event.type == pygame. ESENTATO:
correre = Falso

# Riempi lo schermo di bianco
screen.fill (bianco)

# Sposta il rettangolo del giocatore
chiavi = pygame.key.get_pressed()

Se chiavi[pygame. K_SINISTRA]:
giocatore.x -= 5
Se chiavi[pygame. K_DESTRA]:
giocatore.x += 5
Se chiavi[pygame. K_UP]:
giocatore.y -= 5
Se chiavi[pygame. K_DOWN]:
giocatore.y += 5

# Sposta i nemici in modo casuale sullo schermo
per nemico In nemici:
direzione = scelta casuale(['Sinistra', 'Giusto', 'su', 'giù'])

Se direzione == 'Sinistra':
nemico.x -= 5
elif direzione == 'Giusto':
nemico.x += 5
elif direzione == 'su':
nemico.y -= 5
elif direzione == 'giù':
nemico.y += 5

# Controlla la collisione tra giocatore e nemico
Se player.colliderect (nemico):
correre = Falso

# Disegna il rettangolo del giocatore, gli oggetti nemici e l'ostacolo
# lo schermo
pygame.draw.rect (schermo, nero, giocatore)

per nemico In nemici:
pygame.draw.rect (schermo, nero, nemico)

pygame.draw.rect (schermo, nero, ostacolo)

# Aggiorna lo schermo
pygame.display.update()

# Imposta la frequenza dei fotogrammi del gioco
clock.tick(60)

# Esci dal gioco
pygame.quit()

Migliora la tua esperienza di gioco con i nemici

Aggiungendo nemici con movimenti, comportamenti e abilità unici, puoi rendere i tuoi giochi più coinvolgenti e stimolanti per i giocatori. I giocatori dovranno elaborare strategie e adattare il proprio gameplay per superare diversi tipi di nemici. Ciò può aumentare il coinvolgimento, migliorare la rigiocabilità e far tornare i giocatori per saperne di più.