Olenemata sellest, kas kokkupõrge annab võimsuse või viib mängu lõppemiseni, peate suutma seda tuvastada. Siit saate teada, kuidas seda Pythoni arkaadteegiga teha.
Kokkupõrked on paljudes videomängude žanrites mängimise põhiaspektiks. Need lisavad mängudele väljakutset ja põnevust, nõudes mängijatelt takistustel navigeerimist, vaenlaste eest põgenemist ja auhindade kogumist.
Mängudes kokkupõrgete tuvastamise ja haldamise rakendamine on ülioluline realistliku ja dünaamilise mängumehaanika loomiseks, mis hoiab mängijad kaasates ja meelelahutuses. Saate hõlpsasti tuvastada kokkupõrkeid arkaadteegiga, kasutades selle sisseehitatud funktsioone.
Lihtsa mängu loomine
Enne alustamist veenduge, et teil on pip teie seadmesse installitud. Kasutage seda käsku arkaadteegi installimiseks:
pip install arkaad
Pärast seda looge mäng, kus mängija saab liikuda vasakule ja paremale, et vältida kokkupõrget vaenlase ristkülikuga. Spratide jaoks saate kasutada sisseehitatud joonistusfunktsiooni.
Täieliku leiate kood selles GitHubi repos.
Siin on mängu kood:
importida arkaad
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus, "Minu mäng")
arcade.set_background_color (arcade.color. VALGE)
ise.mängija = arkaad. SpriteSolidColor(50, 50, arcade.color. SININE)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
ise.vaenlane = arkaad. SpriteSolidColor(50, 50, arcade.color. PUNANE)
self.enemy.center_x = EKRAANI_LAAIUS // 2
ise.vaenlane.keskus_y = 50defon_draw(ise):
arcade.start_render()
self.player.draw()
ise.vaenlane.draw()defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player.center_x -= LIIKUMISE_KIIRUS
elif võti == arcade.key. PAREMALE:
self.player.center_x += LIIKUMISE_KIIRUSdefvärskendada(ise, delta_aeg):
kui arcade.check_for_collision (self.player, self.enemy):
print("Mäng läbi")defpeamine():
mäng = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
kui __nimi__ == "__main__":
peamine ()
Arcade'i kokkupõrgete tuvastamise funktsioonid
Arcade raamatukogu pakub lihtsat viisi spraitide vaheliste kokkupõrgete tuvastamiseks. The kokkupõrke_kontroll Funktsioon võtab argumentidena kaks spraiti ja tagastab Boole'i väärtuse, mis näitab, kas spraidid on kokku põrganud. Seda funktsiooni saate kasutada mängija ja vaenlase spraitide vaheliste kokkupõrgete tuvastamiseks oma mängus.
Saate muuta värskendada meetod mängija ja vaenlase spraitide kokkupõrgete kontrollimiseks. Kui raamatukogu tuvastab kokkupõrke, saate printida Mäng läbi konsooli juurde.
Siin on värskendatud kood:
defvärskendada(ise, delta_aeg):
kui arcade.check_for_collision (self.player, self.enemy):
print("Mäng läbi")
muidu:
self.player.update()
Selle muudatusega tuvastab teie mäng kokkupõrked ja prindib Mäng läbi tekst, kui mängija põrkub vaenlasega.
Rohkemate funktsioonide lisamine
Mängu köitvamaks muutmiseks saate lisada lisafunktsioone, nagu punktiarvestus, võimendused ja mitu vaenlast.
Näiteks saate luua vaenlaste loendi ja värskendada mängu, et pärast iga kokkupõrget juhuslikele positsioonidele uusi vaenlasi tekitada. Sa saad mängijat liigutada vasakule ja paremale, et vältida vaenlast ja punkti koguda. Siin on näide nende funktsioonide rakendamiseks.
importida juhuslik
klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus, "Minu mäng")
arcade.set_background_color (arcade.color. VALGE)
ise.mängija = arkaad. SpriteSolidColor(50, 50, arcade.color. SININE)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
ise.vaenlased = arkaad. SpriteList()
ise.skoor = 0
jaoks i sisse vahemik(3):
vaenlane = arkaad. SpriteSolidColor(50, 50, arcade.color. PUNANE)
vaenlane.keskus_x = random.randint(0, SCREEN_WIDTH)
vaenlane.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
ise.vaenlased.lisa (vaenlane)defon_draw(ise):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text(f"Skoor: {self.score}", 10, SCREEN_HEIGHT – 30, arcade.color. MUST, 16)
defvärskendada(ise, delta_aeg):
kui arcade.check_for_collision_with_list (self.player, self.enemies):
print("Mäng läbi")
arcade.close_window()
muidu:
self.player.update()
jaoks vaenlane sisse ise.vaenlased:
enemy.center_y -= LIIKUMISE_KIIRUS / 2
kui vaenlane.keskus_y < 0:
vaenlane.keskus_x = random.randint(0, SCREEN_WIDTH)
vaenlane.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
ise.skoor += 1
Nende muudatustega on teie mängul nüüd mitu vaenlast, kes kudevad juhuslikel positsioonidel ja liiguvad allapoole. Mängija teenib punkti iga edukalt välditud vaenlase eest ja mäng lõpeb, kui mängija põrkub mõne vaenlasega.
Parandage kasutajate seotust kokkupõrgetega
Lisades oma mängudele kokkupõrgete tuvastamise ja haldamise funktsioonid, saate luua mängijatele kaasahaaravamaid ja väljakutseid pakkuvaid mängukogemusi. Alates lihtsatest vältimise ja kogumise mängudest kuni keerukamate platvormimängijate ja laskuriteni – kokkupõrked mängivad kaasahaarava ja rahuldava mängumehaanika loomisel üliolulist rolli.
Seega, kui soovite luua kaasahaaravamaid ja kaasahaaravamaid mänge, mis panevad mängijad rohkem tagasi tulema, kaaluge kokkupõrketuvastusfunktsioonide lisamist oma mängumehaanikasse.