Még a legalapvetőbb ellenségeknek is mozogniuk kell valahogy, ezért merítsen ihletet a támadási minták mögötti kódolás kezeléséhez.

Egy nagyszerű videojáték egyik kulcseleme az ellenség jelenléte. Legyen szó zombikról, földönkívüliekről vagy más játékosokról, az ellenségek még nagyobb kihívást és izgalmassá tehetnek egy játékot.

A PyGame-ben könnyedén programozhat különféle ellenséges mozgási viselkedéseket, például a játékos követését, véletlenszerű mozgást vagy meghatározott utakat.

Egyszerű játék létrehozása

Kezdje egy egyszerű játék létrehozásával, amelyben a játékos vízszintesen és függőlegesen mozog. Ha a játékos megérinti az ellenséget, a játékos meghal.

Ebben megtalálod a teljes kódot GitHub repó.

Kezdje a szükséges PyGame modul importálásával és inicializálásával.

import pygame

pygame.init()

Ezután állítsa be a képernyőt, és hozza létre a játékost és az ellenséges objektumokat a segítségével pygame. Rect() funkció.

# Állítsa be a képernyőt
képernyő = pygame.display.set_mode((800, 600))

# Állítsa be a színeket
fekete = (0, 0, 0)
fehér = (255, 255, 255)

instagram viewer

# Állítsa be a játékos téglalapot és az ellenséges objektumot
játékos = pygame. Rect(350, 500, 50, 50)
ellenség = pygame. Rect(350, 0, 50, 50)

Ezután hozzon létre egy játékhurkot, amely addig fut, amíg a játékos vagy ütközik az ellenséggel, vagy kilép a játékból. Ezenkívül ellenőrizze ütközés a játékos és az ellenség között, és rajzold le a játék tárgyait a képernyőre.

# Állítsa be a játékhurkot
futás = Igaz

míg futás:
számára esemény ban ben pygame.event.get():
ha event.type == pygame. KILÉPÉS:
futás = Hamis

# Töltse ki a képernyőt fehérrel
screen.fill (fehér)

# Mozgassa a lejátszó téglalapot
keys = pygame.key.get_pressed()

ha kulcsok[pygame. K_LEFT]:
játékos.x -= 5

ha kulcsok[pygame. K_RIGHT]:
játékos.x += 5

ha kulcsok[pygame. K_UP]:
játékos.y -= 5

ha kulcsok[pygame. K_DOWN]:
játékos.y += 5

# Ellenőrizze, nincs-e ütközés a játékos és az ellenség között
ha player.colliderect (ellenség):
futás = Hamis

# Rajzold a képernyőre a játékos téglalapot és az ellenséges tárgyat
pygame.draw.rect (képernyő, fekete, lejátszó)
pygame.draw.rect (képernyő, fekete, ellenség)

# Frissítse a képernyőt
pygame.display.update()

# Lépjen ki a játékból
pygame.quit()

Irányítsa ellenségeit a játékos felé

Ahhoz, hogy az ellenséget a játékos felé mozgassa, ki kell számítania a kettő közötti távolságot, amit a Pitagorasz-tétel segítségével tehet meg. Ezt a távolságot ezután felhasználhatja az ellenség mozgási sebességének és irányának meghatározására a játékos felé.

Ennek megvalósításához hozz létre egy sebességváltozót, és ezzel frissítsd az ellenség pozícióját a játékos felé.

# Számítsa ki az ellenség és a játékos közötti távolságot
távolság_x = játékos.x - ellenség.x
távolság_y = játékos.y - ellenség.y
távolság = (távolság_x ** 2 + távolság_y** 2) ** 0.5

# Vigye az ellenséget a játékos felé
sebesség = 2

ha távolság != 0:
ellenség.x += sebesség * távolság_x / távolság
ellenség.y += sebesség * távolság_y / távolság

Véletlenszerűvé tétele az ellenséges mozgást a képernyőn

Azt is megteheti, hogy az ellenség véletlenszerűen mozogjon a képernyőn, hogy nagyobb kihívást jelentsen a játék.

Ehhez a Python véletlenszerű moduljával állítson elő egy véletlenszerű irányt az ellenség mozgására. Használja a választás() funkció egy véletlenszerű irány kiválasztásához azon irányok listájából, amelyekben az ellenség mozoghat. Ezután frissítse az ellenség pozícióját a választott irány alapján.

import véletlen

# Mozgassa az ellenséget véletlenszerűen a képernyőn
irány = random.choice(['bal', 'jobb', 'fel', 'le'])

ha irány == 'bal':
ellenség.x -= 5
elif irány == 'jobb':
ellenség.x += 5
elif irány == 'fel':
ellenség.y -= 5
elif irány == 'le':
ellenség.y += 5

Közelség alapú ellenséges mozgalom

Egyes játékokban az ellenség csak akkor mozog, ha a játékos közel van hozzájuk. Ezt úgy érheti el, hogy kiszámítja az ellenség és a játékos közötti távolságot.

Ha a távolság kisebb egy bizonyos értéknél, mozgassa az ellenséget a játékos felé. Ez stratégiaibbá teszi a játékot, és óvatosabb mozgásra kényszeríti a játékost.

# Vigye az ellenséget a játékos felé, ha a játékos közel van
sebesség = 2

ha távolság < 300:
ha távolság != 0:
ellenség.x += sebesség * távolság_x / távolság
ellenség.y += sebesség * távolság_y / távolság

Az ellenség kikerüli a játékos támadásait

Azt is megteheti, hogy az ellenség kitérjen a játékos mozgása elől. Az ellenség úgy próbálja elkerülni a játékost, hogy merőlegesen mozog a játékos helyzetére.

Ennek eléréséhez számítsa ki az egységvektort a játékos felé a korábban kiszámított távolság_x és távolság_y segítségével. Ezután számítsa ki a merőleges vektort, hogy az ellenséget merőlegesen mozgassa az egységvektorra. Végül számítsa ki a merőleges vektor és az egységvektor pontszorzatát, hogy meghatározza az ellenség mozgásának irányát.

Ennek megvalósításához adja hozzá az alábbi kódrészletet a távolság kiszámítása után.

sebesség = 2

ha távolság < 400:
ha távolság != 0:
# Számítsa ki az egységvektort a lejátszó felé
egységvektor_x = távolság_x / távolság
unit_vector_y = távolság_y / távolság

# Számítsa ki a merőleges vektort
merőleges_vektor_x = -egységvektor_y
merőleges_vektor_y = egységvektor_x

# Számítsa ki a merőleges vektor pontszorzatát és a
# egységvektor
ponttermék = merőleges_vektor_x * egységvektor_x
+ merőleges_vektor_y * egységvektor_y

# Mozgassa az ellenséget merőlegesen az egységvektorra
ha pont_termék > 0:
ellenség.x += sebesség * merőleges_vektor_x
ellenség.y += sebesség * merőleges_vektor_y
más:
ellenség.x -= sebesség * merőleges_vektor_x
ellenség.y -= sebesség * merőleges_vektor_y

Ezekkel a módosításokkal az ellenség megpróbálja elkerülni, hogy túl közel kerüljön a játékoshoz. Ez nagyobb kihívást és szórakoztatóbbá teszi a játékot.

Extra funkciók hozzáadása

További funkciókat is hozzáadhat a játékhoz, hogy nagyobb kihívást jelentsen. Hozzáadhat például több ellenséget, amelyek véletlenszerűen mozognak a képernyőn, akadályokat, amelyeket a játékosnak el kell kerülnie mozgása közben, olyan erőket, amelyek javítják a játékos képességeit stb.

tudsz használja az Óra modult a képkockasebesség beállításához a játék zökkenőmentesebbé tétele érdekében. Alább látható a megvalósítás:

# Adjon hozzá több ellenséget, amelyek véletlenszerűen mozognak a képernyőn
ellenségek = []

számára én ban ben hatótávolság(5):
ellenség = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

ellenségek.hozzáfűz (ellenség)

# Adjon hozzá akadályokat, amelyeket a játékosnak el kell kerülnie
akadály = pygame. Rect(200, 250, 50, 50)

# Állítsa be a játékhurkot
óra = pygame.time. Óra()
futás = Igaz

míg futás:
számára esemény ban ben pygame.event.get():
ha event.type == pygame. KILÉPÉS:
futás = Hamis

# Töltse ki a képernyőt fehérrel
screen.fill (fehér)

# Mozgassa a lejátszó téglalapot
keys = pygame.key.get_pressed()

ha kulcsok[pygame. K_LEFT]:
játékos.x -= 5
ha kulcsok[pygame. K_RIGHT]:
játékos.x += 5
ha kulcsok[pygame. K_UP]:
játékos.y -= 5
ha kulcsok[pygame. K_DOWN]:
játékos.y += 5

# Mozgassa az ellenséget véletlenszerűen a képernyőn
számára ellenség ban ben ellenségek:
irány = random.choice(['bal', 'jobb', 'fel', 'le'])

ha irány == 'bal':
ellenség.x -= 5
elif irány == 'jobb':
ellenség.x += 5
elif irány == 'fel':
ellenség.y -= 5
elif irány == 'le':
ellenség.y += 5

# Ellenőrizze, nincs-e ütközés a játékos és az ellenség között
ha player.colliderect (ellenség):
futás = Hamis

# Rajzold rá a játékos téglalapot, az ellenséges tárgyakat és az akadályt
# A képernyőn
pygame.draw.rect (képernyő, fekete, lejátszó)

számára ellenség ban ben ellenségek:
pygame.draw.rect (képernyő, fekete, ellenség)

pygame.draw.rect (képernyő, fekete, akadály)

# Frissítse a képernyőt
pygame.display.update()

# Állítsa be a játék képkockasebességét
clock.tick(60)

# Lépjen ki a játékból
pygame.quit()

Növelje játékélményét az ellenségekkel

Ha egyedi mozdulatokkal, viselkedéssel és képességekkel rendelkező ellenségeket ad hozzá, a játékokat vonzóbbá és nagyobb kihívást jelentővé teheti a játékosok számára. A játékosoknak stratégiát kell alakítaniuk és hozzá kell igazítaniuk játékmenetüket, hogy legyőzzék a különböző típusú ellenségeket. Ez növelheti az elköteleződést, javíthatja a visszajátszási értéket, és arra készteti a játékosokat, hogy még többért térjenek vissza.