Chiar și cei mai de bază inamici trebuie să se miște cumva, așa că inspiră-te despre cum să gestionezi codificarea din spatele tiparelor de atac.

Unul dintre elementele cheie ale unui mare joc video este prezența inamicilor. Fie că sunt zombi, extratereștri sau alți jucători, inamicii pot face un joc mai provocator și mai interesant.

În PyGame, puteți programa cu ușurință o varietate de comportamente de mișcare a inamicului, cum ar fi urmărirea jucătorului, mișcarea aleatorie sau luarea unor căi specifice.

Crearea unui joc simplu

Începeți prin a crea un joc simplu în care un jucător se va mișca orizontal și vertical. Dacă jucătorul atinge inamicul, jucătorul va muri.

Puteți găsi codul complet în aceasta Repoziție GitHub.

Începeți prin a importa modulul PyGame necesar și a-l inițializa.

import pygame

pygame.init()

Apoi, configurați ecranul și creați jucătorul și obiectele inamice folosind pygame. Rect() funcţie.

# Configurați ecranul
ecran = pygame.display.set_mode((800, 600))

# Configurați culorile
negru = (0, 0, 0)
alb = (255, 255, 255)

instagram viewer

# Configurați dreptunghiul jucătorului și obiectul inamic
player = pygame. Rect(350, 500, 50, 50)
enemy = pygame. Rect(350, 0, 50, 50)

După aceea, creați o buclă de joc care rulează până când jucătorul fie se ciocnește de inamicul, fie iese din joc. De asemenea, verificați pentru ciocnire între jucător și inamic, și desenați obiectele jocului pe ecran.

# Configurați bucla de joc
alergare = Adevărat

in timp ce alergare:
pentru eveniment în pygame.event.get():
dacă event.type == pygame. PĂRĂSI:
alergare = Fals

# Umpleți ecranul cu alb
screen.fill (alb)

# Mutați dreptunghiul jucătorului
taste = pygame.key.get_pressed()

dacă chei[pygame. K_LEFT]:
player.x -= 5

dacă chei[pygame. K_RIGHT]:
player.x += 5

dacă chei[pygame. K_UP]:
player.y -= 5

dacă chei[pygame. K_DOWN]:
player.y += 5

# Verificați dacă există o coliziune între jucător și inamic
dacă jucător.coliderect (inamic):
alergare = Fals

# Desenați dreptunghiul jucătorului și obiectul inamic pe ecran
pygame.draw.rect (ecran, negru, jucător)
pygame.draw.rect (ecran, negru, inamic)

# Actualizați ecranul
pygame.display.update()

# Închide jocul
pygame.quit()

Îndreptați inamicii către jucător

Pentru a muta inamicul spre jucător, trebuie să calculați distanța dintre cei doi, ceea ce o puteți face folosind teorema lui Pitagora. Puteți utiliza apoi această distanță pentru a determina viteza și direcția de mișcare a inamicului către jucător.

Pentru a implementa acest lucru, creați o variabilă de viteză și utilizați-o pentru a actualiza poziția inamicului față de jucător.

# Calculați distanța dintre inamic și jucător
distanta_x = jucator.x - inamic.x
distanta_y = jucator.y - inamic.y
distanta = (distanta_x ** 2 + distanta_y ** 2) ** 0.5

# Deplasați inamicul spre jucător
viteza = 2

dacă distanta != 0:
inamic.x += viteza * distanta_x / distanta
inamic.y += viteza * distanta_y / distanta

Randomizați mișcarea inamicului pe ecran

De asemenea, puteți face ca inamicul să se miște aleatoriu pe ecran pentru a face jocul mai provocator.

Pentru a face acest lucru, generați o direcție aleatorie pentru ca inamicul să se deplaseze folosind modulul aleatoriu din Python. Folosește alegere() funcția de a selecta o direcție aleatorie dintr-o listă de direcții în care se poate deplasa inamicul. Apoi actualizați poziția inamicului în funcție de direcția aleasă.

import Aleatoriu

# Mută ​​inamicul la întâmplare pe ecran
direction = random.choice(['stânga', 'dreapta', 'sus', 'jos'])

dacă direcție == 'stânga':
duşman.x -= 5
elif direcție == 'dreapta':
duşman.x += 5
elif direcție == 'sus':
duşman.y -= 5
elif direcție == 'jos':
duşman.y += 5

Mișcarea inamicului bazată pe proximitate

În unele jocuri, inamicul se mișcă numai atunci când jucătorul este aproape de el. Puteți realiza acest lucru calculând distanța dintre inamic și jucător.

Dacă distanța este mai mică decât o anumită valoare, faceți inamicul să se miște spre jucător. Acest lucru face jocul mai strategic și forțează jucătorul să fie mai atent în mișcările lor.

# Mutați inamicul spre jucător dacă acesta este aproape
viteza = 2

dacă distanta < 300:
dacă distanta != 0:
inamic.x += viteza * distanta_x / distanta
inamic.y += viteza * distanta_y / distanta

Inamicul se sustrage atacurilor jucătorilor

De asemenea, puteți face ca inamicul să evite mișcarea jucătorului. Inamicul va încerca să evite jucătorul deplasându-se perpendicular pe poziția jucătorului.

Pentru a realiza acest lucru, calculați vectorul unitar către jucător folosind distanța_x și distanța_y calculate mai devreme. Apoi, calculați vectorul perpendicular pentru a muta inamicul perpendicular pe vectorul unitar. În cele din urmă, calculați produsul scalar al vectorului perpendicular și al vectorului unitar pentru a determina direcția de mișcare a inamicului.

Pentru a implementa acest lucru, adăugați fragmentul de cod de mai jos după calculul distanței.

viteza = 2

dacă distanta < 400:
dacă distanta != 0:
# Calculați vectorul unitar către jucător
unit_vector_x = distanta_x / distanta
unit_vector_y = distanta_y / distanta

# Calculați vectorul perpendicular
vector_perpendicular_x = -unit_vector_y
vector_perpendicular_y = vector_unitate_x

# Calculați produsul scalar al vectorului perpendicular și al
# vector unitar
produs_punct = vector_perpendicular_x * vector_unitate_x
+ vector_perpendicular_y * vector_unitate_y

# Mutați inamicul perpendicular pe vectorul unității
dacă dot_product > 0:
inamic.x += viteza * vector_perpendicular_x
inamic.y += viteza * vector_perpendicular_y
altfel:
inamic.x -= viteza * vector_perpendicular_x
inamic.y -= viteza * vector_perpendicular_y

Cu aceste modificări, inamicul va încerca să evite să se apropie prea mult de jucător. Acest lucru face jocul mai provocator și mai distractiv de jucat.

Adăugarea de caracteristici suplimentare

De asemenea, puteți adăuga mai multe funcții în jocul dvs. pentru a-l face mai provocator. De exemplu, puteți adăuga mai mulți inamici care se mișcă aleatoriu pe ecran, obstacole pe care jucătorul trebuie să le evite în timpul mișcării, power-up-uri care sporesc abilitățile jucătorului și așa mai departe.

Puteți utilizați modulul Ceas pentru a seta rata de cadre jocului dvs. și faceți-l să funcționeze mai bine. Mai jos este implementarea:

# Adăugați mai mulți inamici care se mișcă aleatoriu pe ecran
dușmani = []

pentru i în gamă(5):
enemy = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

enemies.append (inamic)

# Adăugați obstacole pe care jucătorul trebuie să le evite
obstacol = pygame. Rect(200, 250, 50, 50)

# Configurați bucla de joc
ceas = pygame.time. Ceas()
alergare = Adevărat

in timp ce alergare:
pentru eveniment în pygame.event.get():
dacă event.type == pygame. PĂRĂSI:
alergare = Fals

# Umpleți ecranul cu alb
screen.fill (alb)

# Mutați dreptunghiul jucătorului
taste = pygame.key.get_pressed()

dacă chei[pygame. K_LEFT]:
player.x -= 5
dacă chei[pygame. K_RIGHT]:
player.x += 5
dacă chei[pygame. K_UP]:
player.y -= 5
dacă chei[pygame. K_DOWN]:
player.y += 5

# Mutați inamicii la întâmplare pe ecran
pentru dusman în inamici:
direction = random.choice(['stânga', 'dreapta', 'sus', 'jos'])

dacă direcție == 'stânga':
duşman.x -= 5
elif direcție == 'dreapta':
duşman.x += 5
elif direcție == 'sus':
duşman.y -= 5
elif direcție == 'jos':
duşman.y += 5

# Verificați dacă există o coliziune între jucător și inamic
dacă jucător.coliderect (inamic):
alergare = Fals

# Desenați dreptunghiul jucătorului, obiectele inamice și obstacolul
# Monitorul
pygame.draw.rect (ecran, negru, jucător)

pentru dusman în inamici:
pygame.draw.rect (ecran, negru, inamic)

pygame.draw.rect (ecran, negru, obstacol)

# Actualizați ecranul
pygame.display.update()

# Setați rata de cadre a jocului
clock.tick(60)

# Închide jocul
pygame.quit()

Îmbunătățiți-vă experiența de joc cu inamicii

Adăugând inamici cu mișcări, comportamente și abilități unice, îți poți face jocurile mai captivante și mai provocatoare pentru jucători. Jucătorii vor trebui să elaboreze strategii și să își adapteze jocul pentru a depăși diferite tipuri de inamici. Acest lucru poate crește implicarea, poate îmbunătăți valoarea de rejucare și poate face pe jucători să revină pentru mai mult.