Bez obzira na to daje li sudar pojačanje ili dovodi do kraja igre, morate ga moći otkriti. Evo kako to učiniti s Pythonovom arkadnom bibliotekom.

Sudari su temeljni aspekt igranja u mnogim žanrovima videoigara. Igrama dodaju sloj izazova i uzbuđenja, zahtijevajući od igrača da prolaze kroz prepreke, izbjegavaju neprijatelje i skupljaju nagrade.

Implementacija otkrivanja sudara i rukovanja u vašim igrama ključna je za stvaranje realistične i dinamične mehanike igranja koja drži igrače angažiranima i zabavlja ih. Možete lako otkriti kolizije s arkadnom bibliotekom, koristeći njezine ugrađene funkcije.

Stvaranje jednostavne igre

Prije početka provjerite imate li pip instaliran na vašem uređaju. Upotrijebite ovu naredbu za instaliranje biblioteke arkadnih igara:

pip instaliraj arkadu

Nakon toga stvorite igru ​​u kojoj se igrač može kretati lijevo i desno kako bi izbjegao sudar s neprijateljskim pravokutnikom. Možete koristiti ugrađenu funkciju crtanja za spriteove.

Možete pronaći kompletan kod u ovom GitHub spremištu.

instagram viewer

Evo koda za igru:

uvoz arkada

SCREEN_WIDTH = 640
VISINA_EKRANA = 480
BRZINA_KRETANJA = 5

razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina, "moja igra")
arcade.set_background_color (arcade.color. BIJELA)
self.player = arkada. SpriteSolidColor(50, 50, arkada.boja. PLAVA)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
sam.neprijatelj = arkada. SpriteSolidColor(50, 50, arkada.boja. CRVENA)
self.enemy.center_x = ŠIRINA_EKRANA // 2
self.neprijatelj.centar_y = 50

defizvlačenje(sebe):
arcade.start_render()
self.player.draw()
self.neprijatelj.draw()

defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player.center_x -= BRZINA_KRETANJA
elif ključ == arkada.ključ. PRAVO:
self.player.center_x += BRZINA_KRETANJA

defAžuriraj(sam, delta_vrijeme):
ako arcade.check_for_collision (self.player, self.nenemy):
ispis("Igra je gotova")

defglavni():
igra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arkada.run()

ako __ime__ == "__glavni__":
glavni()

Arcadeove značajke otkrivanja sudara

Knjižnica Arcade pruža jednostavan način otkrivanja sudara između spriteova. The provjera_kolizije funkcija uzima dva spritea kao argumente i vraća Booleovu vrijednost koja pokazuje jesu li se spriteovi sudarili. Ovu funkciju možete koristiti za otkrivanje sudara između igrača i neprijateljskih duhova u vašoj igri.

Možete promijeniti Ažuriraj metoda za provjeru sudara između igrača i neprijateljskih duhova. Ako biblioteka otkrije koliziju, možete ispisivati Igra je gotova na konzolu.

Evo ažuriranog koda:

defAžuriraj(sam, delta_vrijeme):
ako arcade.check_for_collision (self.player, self.nenemy):
ispis("Igra je gotova")
drugo:
self.player.update()

Uz ovu promjenu, vaša će igra detektirati sudare i ispisati Igra je gotova tekst ako se igrač sudari s neprijateljem.

Dodavanje više značajki

Kako bi vaša igra bila zanimljivija, možete dodati dodatne značajke kao što su bodovanje, pojačanja i višestruki neprijatelji.

Na primjer, možete izraditi popis neprijatelja i ažurirati igru ​​da stvori nove neprijatelje na nasumičnim pozicijama nakon svakog sudara. Možeš pomaknite igrača lijevo i desno kako biste izbjegli neprijatelja i osvojili bod. Evo primjera kako možete implementirati ove značajke:

uvoz slučajan
razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina, "moja igra")
arcade.set_background_color (arcade.color. BIJELA)
self.player = arkada. SpriteSolidColor(50, 50, arkada.boja. PLAVA)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
sebe.neprijatelji = arkada. SpriteList()
self.score = 0
za ja u raspon (3):
neprijatelj = arkada. SpriteSolidColor(50, 50, arkada.boja. CRVENA)
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.neprijatelji.dodaj (neprijatelj)

defizvlačenje(sebe):
arcade.start_render()
self.player.draw()
self.neprijatelji.draw()
arcade.draw_text(f"Rezultat: {self.score}", 10, SCREEN_HEIGHT - 30, arkada.boja. CRNO, 16)

defAžuriraj(sam, delta_vrijeme):
ako arcade.check_for_collision_with_list (self.player, self.nenemies):
ispis("Igra je gotova")
arcade.close_window()
drugo:
self.player.update()
za neprijatelj u sebi.neprijatelji:
enemy.center_y -= BRZINA_KRETANJA / 2
ako neprijatelj.centar_y < 0:
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
samo.rezultat += 1

S ovim promjenama vaša igra sada ima više neprijatelja koji se pojavljuju na nasumičnim pozicijama i kreću se prema dolje. Igrač zarađuje bod za svakog uspješno izbjegnutog neprijatelja, a igra završava ako se igrač sudari s bilo kojim neprijateljem.

Poboljšajte angažman korisnika s kolizijama

Dodavanjem značajki otkrivanja sudara i rukovanja svojim igrama, možete stvoriti impresivnija i izazovnija iskustva igranja za igrače. Od jednostavnih igara izbjegavanja i skupljanja do složenijih platformskih igara i pucačina, sudari igraju ključnu ulogu u stvaranju zanimljivih i zadovoljavajućih mehanika igranja.

Stoga, ako želite stvarati zanimljivije i impresivnije igre koje tjeraju igrače da se vraćaju po još, razmislite o uključivanju značajki detekcije sudara u svoju mehaniku igranja.