Riippumatta siitä, antaako törmäys tehon tai johtaa pelin päättymiseen, sinun on kyettävä havaitsemaan se. Näin voit tehdä sen Pythonin arcade-kirjaston kanssa.
Törmäykset ovat olennainen osa pelaamista monissa videopelilajeissa. Ne lisäävät peleihin haastetta ja jännitystä vaatien pelaajia navigoimaan esteitä, väistämään vihollisia ja keräämään palkintoja.
Törmäysten havaitsemisen ja käsittelyn toteuttaminen peleissäsi on ratkaisevan tärkeää luotaessa realistisia ja dynaamisia pelimekaniikkoja, jotka pitävät pelaajat sitoutuneina ja viihdyttävänä. Voit helposti havaita törmäykset pelihallikirjaston kanssa sen sisäänrakennettujen toimintojen avulla.
Yksinkertaisen pelin luominen
Ennen kuin aloitat, varmista, että sinulla on pip asennettuna laitteellesi. Käytä tätä komentoa asentaaksesi arcade-kirjaston:
pip asennus arcade
Sen jälkeen luo peli, jossa pelaaja voi liikkua vasemmalle ja oikealle välttääkseen törmäyksen vihollisen suorakulmioon. Voit käyttää sisäänrakennettua piirustustoimintoa spriteille.
Löydät täydellisen koodi tässä GitHub repossa.
Tässä pelin koodi:
tuonti pelihalli
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus, "Minun pelini")
arcade.set_background_color (arcade.color. VALKOINEN)
self.player = pelihalli. SpriteSolidColor(50, 50, arcade.color. SININEN)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
itse.vihollinen = pelihalli. SpriteSolidColor(50, 50, arcade.color. PUNAINEN)
self.enemy.center_x = SCREEN_WIDTH // 2
self.enem.center_y = 50defon_draw(itse):
arcade.start_render()
self.player.draw()
self.enemy.draw()defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player.center_x -= LIIKKEEN_NOPEUS
elif avain == arcade.key. OIKEALLA:
self.player.center_x += LIIKKENOPEUSdefpäivittää(itse, delta_aika):
jos arcade.check_for_collision (self.player, self.enemy):
Tulosta("Peli ohi")defpää():
peli = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
jos __nimi__ == "__main__":
pää()
Arcaden törmäyksentunnistusominaisuudet
Arcade-kirjasto tarjoaa yksinkertaisen tavan havaita spritien väliset törmäykset. The check_for_collision Funktio ottaa kaksi spriteä argumenteiksi ja palauttaa Boolen arvon, joka osoittaa, ovatko spritet törmänneet. Voit käyttää tätä toimintoa havaitaksesi pelaajan ja vihollisspriitin väliset törmäykset pelissäsi.
Voit muuttaa päivittää tapa tarkistaa pelaajan ja vihollisen spritien väliset törmäykset. Jos kirjasto havaitsee törmäyksen, voit tulostaa Peli ohi konsoliin.
Tässä päivitetty koodi:
defpäivittää(itse, delta_aika):
jos arcade.check_for_collision (self.player, self.enemy):
Tulosta("Peli ohi")
muu:
self.player.update()
Tämän muutoksen myötä pelisi havaitsee törmäykset ja tulostaa Peli ohi teksti, jos pelaaja törmää viholliseen.
Lisää ominaisuuksia
Voit tehdä pelistäsi kiinnostavamman lisäämällä lisäominaisuuksia, kuten pisteytyksen, tehostuksia ja useita vihollisia.
Voit esimerkiksi luoda luettelon vihollisista ja päivittää pelin synnyttämään uusia vihollisia satunnaisiin paikkoihin jokaisen törmäyksen jälkeen. Sinä pystyt siirrä soitinta vasemmalle ja oikealle välttääksesi vihollisen ja pisteen. Tässä on esimerkki siitä, kuinka voit ottaa nämä ominaisuudet käyttöön:
tuonti satunnainen
luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus, "Minun pelini")
arcade.set_background_color (arcade.color. VALKOINEN)
self.player = pelihalli. SpriteSolidColor(50, 50, arcade.color. SININEN)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
itse.viholliset = pelihalli. SpriteList()
itse.pisteet = 0
varten i sisään range(3):
vihollinen = pelihalli. SpriteSolidColor(50, 50, arcade.color. PUNAINEN)
vihollinen.center_x = random.randint(0, SCREEN_WIDTH)
vihollinen.center_y = random.randint (KUVARUUDEN_KOKEUS // 2, SCREEN_HEIGHT)
itse.viholliset.liittää (vihollinen)defon_draw(itse):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text(f"Pistemäärä: {itse.pisteet}", 10, SCREEN_HEIGHT - 30, arcade.color. MUSTA, 16)
defpäivittää(itse, delta_aika):
jos arcade.check_for_collision_with_list (self.player, self.enemies):
Tulosta("Peli ohi")
arcade.close_window()
muu:
self.player.update()
varten vihollinen sisään itse.viholliset:
enemy.center_y -= LIIKKEEN_NOPEUS / 2
jos vihollinen.keskus_y < 0:
vihollinen.center_x = random.randint(0, SCREEN_WIDTH)
vihollinen.center_y = random.randint (KUVARUUDEN_KOKEUS // 2, SCREEN_HEIGHT)
itse.pisteet += 1
Näiden muutosten ansiosta pelissäsi on nyt useita vihollisia, jotka poikivat satunnaisissa paikoissa ja liikkuvat alaspäin. Pelaaja ansaitsee pisteen jokaisesta onnistuneesti vältetystä vihollisesta, ja peli päättyy, jos pelaaja törmää johonkin viholliseen.
Paranna käyttäjien sitoutumista törmäyksiin
Lisäämällä peleihin törmäyksentunnistus- ja käsittelyominaisuuksia, voit luoda pelaajille mukaansatempaavampia ja haastavampia pelikokemuksia. Yksinkertaisista välttele ja kerää -peleistä monimutkaisempiin tasohyppelypeleihin ja räiskintäpeleihin törmäyksillä on ratkaiseva rooli houkuttelevan ja tyydyttävän pelimekaniikan luomisessa.
Joten jos haluat luoda kiinnostavampia ja mukaansatempaavampia pelejä, jotka saavat pelaajat palaamaan lisää, harkitse törmäyksentunnistusominaisuuksien sisällyttämistä pelimekaniikkaan.