Isegi kõige elementaarsemad vaenlased peavad kuidagi liikuma, nii et hankige inspiratsiooni, kuidas rünnakumustrite taga kodeerimisega hakkama saada.

Suurepärase videomängu üks põhielemente on vaenlaste olemasolu. Olenemata sellest, kas nad on zombid, tulnukad või teised mängijad, võivad vaenlased muuta mängu väljakutsuvamaks ja põnevamaks.

PyGame'is saate hõlpsalt programmeerida erinevaid vaenlase liikumisviise, nagu mängija järgimine, juhuslik liikumine või kindlate radade võtmine.

Lihtsa mängu loomine

Alustage lihtsa mängu loomisega, kus mängija liigub horisontaalselt ja vertikaalselt. Kui mängija puudutab vaenlast, siis mängija sureb.

Täieliku koodi leiate siit GitHubi repo.

Alustage vajaliku PyGame mooduli importimisest ja selle lähtestamisest.

importida pygame

pygame.init()

Järgmisena seadistage ekraan ja looge mängija ja vaenlase objektid kasutades pygame. Õige() funktsiooni.

# Seadistage ekraan
ekraan = pygame.display.set_mode((800, 600))

# Seadistage värvid
must = (0, 0, 0)
valge = (255, 255, 255)

instagram viewer

# Seadistage mängija ristkülik ja vaenlase objekt
mängija = mängumäng. Rect(350, 500, 50, 50)
vaenlane = mängumäng. Rect(350, 0, 50, 50)

Pärast seda looge mängutsükkel, mis kestab seni, kuni mängija kas vaenlasega kokku põrkub või mängust lahkub. Samuti kontrollige kokkupõrge mängija ja vaenlase vahelja joonistage mänguobjektid ekraanile.

# Seadistage mängusilmus
jookseb = Tõsi

samal ajal jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == mängumäng. VÄLJA:
jookseb = Vale

# Täitke ekraan valgega
screen.fill (valge)

# Liigutage mängija ristkülikut
võtmed = pygame.key.get_pressed()

kui võtmed[pygame. K_LEFT]:
mängija.x -= 5

kui võtmed[pygame. K_RIGHT]:
mängija.x += 5

kui võtmed[pygame. K_UP]:
mängija.y -= 5

kui võtmed[pygame. K_DOWN]:
mängija.y += 5

# Kontrollige kokkupõrget mängija ja vaenlase vahel
kui player.colliderect (vaenlane):
jookseb = Vale

# Joonistage ekraanile mängija ristkülik ja vaenlase objekt
pygame.draw.rect (ekraan, must, mängija)
pygame.draw.rect (ekraan, must, vaenlane)

# Värskendage ekraani
pygame.display.update()

# Lõpeta mäng
pygame.quit()

Suunake vaenlased mängija poole

Vaenlase liigutamiseks mängija poole peate arvutama nende kahe vahelise kauguse, mida saate teha Pythagorase teoreemi abil. Seejärel saate selle vahemaa abil määrata vaenlase liikumiskiiruse ja suuna mängija poole.

Selle rakendamiseks loo kiirusmuutuja ja kasuta seda vaenlase positsiooni värskendamiseks mängija suhtes.

# Arvutage kaugus vaenlase ja mängija vahel
kaugus_x = mängija.x - vaenlane.x
kaugus_y = mängija.y - vaenlane.y
kaugus = (kaugus_x ** 2 + kaugus_y ** 2) ** 0.5

# Liigutage vaenlane mängija poole
kiirus = 2

kui kaugus != 0:
vaenlane.x += kiirus * kaugus_x / vahemaa
vaenlane.y += kiirus * kaugus_y / vahemaa

Juhuslikuks muutke vaenlase liikumine ekraanil

Mängu keerukamaks muutmiseks saate vaenlase ka ekraanil juhuslikult liikuma panna.

Selleks genereerige Pythoni juhusliku mooduli abil vaenlase liikumiseks juhuslik suund. Kasuta valik() funktsioon, et valida suundade loendist juhuslik suund, milles vaenlane saab liikuda. Seejärel värskendage valitud suuna põhjal vaenlase positsiooni.

importida juhuslik

# Liigutage vaenlast ekraanil juhuslikult
suund = random.choice(['vasakule', 'õige', 'üles', 'alla'])

kui suund == 'vasakule':
vaenlane.x -= 5
elif suund == 'õige':
vaenlane.x += 5
elif suund == 'üles':
vaenlane.y -= 5
elif suund == 'alla':
vaenlane.y += 5

Lähedusel põhinev vaenlase liikumine

Mõnes mängus liigub vaenlane ainult siis, kui mängija on neile lähedal. Seda saate saavutada, arvutades vaenlase ja mängija vahelise kauguse.

Kui vahemaa on teatud väärtusest väiksem, pange vaenlane mängija poole liikuma. See muudab mängu strateegilisemaks ja sunnib mängijat oma liigutustes ettevaatlikum olema.

# Liigutage vaenlane mängija poole, kui mängija on lähedal
kiirus = 2

kui kaugus < 300:
kui kaugus != 0:
vaenlane.x += kiirus * kaugus_x / vahemaa
vaenlane.y += kiirus * kaugus_y / vahemaa

Vaenlane väldib mängijate rünnakuid

Samuti saate panna vaenlase mängija liikumise eest kõrvale hiilima. Vaenlane püüab mängijat vältida, liikudes mängija asukohaga risti.

Selle saavutamiseks arvutage mängija suunas ühikvektor, kasutades varem arvutatud distantsi_x ja kaugust_y. Seejärel arvutage risti vektor, et liigutada vaenlast ühikuvektoriga risti. Lõpuks arvutage vaenlase liikumissuuna määramiseks risti vektori ja ühikuvektori punktkorrutis.

Selle rakendamiseks lisage pärast kauguse arvutamist allolev koodilõik.

kiirus = 2

kui kaugus < 400:
kui kaugus != 0:
# Arvutage mängija poole suunatud ühikvektor
ühik_vektor_x = kaugus_x / kaugus
ühik_vektor_y = kaugus_y / kaugus

# Arvutage risti vektor
perpendikulaarne_vektor_x = -ühik_vektor_y
perpendikulaarne_vektor_y = ühik_vektor_x

# Arvutage risti vektori ja punktkorrutis
# ühikvektor
dot_product = risti_vektor_x * ühik_vektor_x
+ perpendikulaarne_vektor_y * ühik_vektor_y

# Liigutage vaenlane ühikuvektoriga risti
kui dot_product > 0:
vaenlane.x += kiirus * risti_vektor_x
vaenlane.y += kiirus * risti_vektor_y
muidu:
vaenlane.x -= kiirus * risti_vektor_x
vaenlane.y -= kiirus * risti_vektor_y

Nende modifikatsioonidega püüab vaenlane vältida mängijale liiga lähedale sattumist. See muudab mängu keerukamaks ja mängimise lõbusamaks.

Lisafunktsioonide lisamine

Samuti saate oma mängu lisada rohkem funktsioone, et muuta see keerulisemaks. Näiteks saate lisada mitu vaenlast, kes liiguvad ekraanil suvaliselt, takistusi, mida mängija peab liikumise ajal vältima, mängija võimeid suurendavaid võimsusi jne.

Sa saad kasutage kaadrisageduse määramiseks moodulit Kell oma mängu ja muuta see sujuvamaks. Allpool on teostus:

# Lisage mitu vaenlast, kes liiguvad ekraanil juhuslikult
vaenlased = []

jaoks i sisse vahemik(5):
vaenlane = mängumäng. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

vaenlased.lisa (vaenlane)

# Lisage takistusi, mida mängija peab vältima
takistus = mängumäng. Rect(200, 250, 50, 50)

# Seadistage mängusilmus
kell = pygame.time. Kell ()
jookseb = Tõsi

samal ajal jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == mängumäng. VÄLJA:
jookseb = Vale

# Täitke ekraan valgega
screen.fill (valge)

# Liigutage mängija ristkülikut
võtmed = pygame.key.get_pressed()

kui võtmed[pygame. K_LEFT]:
mängija.x -= 5
kui võtmed[pygame. K_RIGHT]:
mängija.x += 5
kui võtmed[pygame. K_UP]:
mängija.y -= 5
kui võtmed[pygame. K_DOWN]:
mängija.y += 5

# Liigutage vaenlasi ekraanil juhuslikult
jaoks vaenlane sisse vaenlased:
suund = random.choice(['vasakule', 'õige', 'üles', 'alla'])

kui suund == 'vasakule':
vaenlane.x -= 5
elif suund == 'õige':
vaenlane.x += 5
elif suund == 'üles':
vaenlane.y -= 5
elif suund == 'alla':
vaenlane.y += 5

# Kontrollige kokkupõrget mängija ja vaenlase vahel
kui player.colliderect (vaenlane):
jookseb = Vale

# Joonistage mängija ristkülik, vaenlase objektid ja takistus
# ekraan
pygame.draw.rect (ekraan, must, mängija)

jaoks vaenlane sisse vaenlased:
pygame.draw.rect (ekraan, must, vaenlane)

pygame.draw.rect (ekraan, must, takistus)

# Värskendage ekraani
pygame.display.update()

# Määrake mängu kaadrisagedus
kell.tikk(60)

# Lõpeta mäng
pygame.quit()

Täiustage oma mängukogemust vaenlastega

Lisades unikaalsete liigutuste, käitumise ja võimetega vaenlasi, saate muuta oma mängud mängijate jaoks kaasahaaravamaks ja väljakutsuvamaks. Mängijad peavad erinevat tüüpi vaenlastest ülesaamiseks oma mängu strateegiaid koostama ja kohandama. See võib suurendada seotust, parandada taasesituse väärtust ja panna mängijad rohkem tagasi tulema.