Függetlenül attól, hogy az ütközés bekapcsolást ad, vagy a játék befejezéséhez vezet, képesnek kell lennie észlelni. Íme, hogyan kell ezt megtenni a Python arcade könyvtárával.

Az ütközések a játékmenet alapvető aspektusai a videojátékok számos műfajában. Kihívást és izgalmat adnak a játékokhoz, megkövetelik a játékosoktól, hogy eligazodjanak az akadályok között, kerüljék az ellenséget, és gyűjtsenek jutalmakat.

Az ütközésészlelés és -kezelés megvalósítása a játékokban kulcsfontosságú a valósághű és dinamikus játékmechanizmusok létrehozásához, amelyek lekötik és szórakoztatják a játékosokat. Könnyedén észlelheti az ütközéseket az arcade könyvtárral a beépített funkcióinak segítségével.

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

Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik pip telepítve van a készülékére. Ezzel a paranccsal telepítheti az arcade könyvtárat:

pip install arcade

Ezután készíts egy játékot, amelyben a játékos balra és jobbra mozoghat, hogy elkerülje az ellenséges téglalap ütközését. Használhatja a beépített rajzoló funkciót a sprite-okhoz.

instagram viewer

Megtalálható a teljes kód ebben a GitHub repóban.

Íme a játék kódja:

import árkád

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5

osztályAz én játékom(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
super().__init__(szélesség, magasság, "Az én játékom")
arcade.set_background_color (arcade.color. FEHÉR)
self.player = arcade. SpriteSolidColor(50, 50, arcade.color. KÉK)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
én.ellenség = arcade. SpriteSolidColor(50, 50, arcade.color. PIROS)
self.enemy.center_x = SCREEN_WIDTH // 2
self.enemy.center_y = 50

defon_draw(maga):
arcade.start_render()
self.player.draw()
self.enemy.draw()

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.player.center_x -= MOZGÁSSEBESSÉG
elif kulcs == arcade.key. JOBB:
self.player.center_x += MOZGÁSSEBESSÉG

deffrissítés(self, delta_time):
ha arcade.check_for_collision (self.player, self.enemy):
nyomtatás("Játék vége")

deffő-():
játék = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

ha __név__ == "__fő__":
fő()

Az Arcade ütközésészlelési funkciói

Az Arcade könyvtár egyszerű módot biztosít a sprite-ok közötti ütközések észlelésére. A ütközés_ellenőrzése A függvény két sprite-ot vesz argumentumként, és egy logikai értéket ad vissza, jelezve, hogy a sprite-ok ütköztek-e. Ezzel a funkcióval észlelheti a játékos és az ellenséges sprite közötti ütközéseket a játékban.

Meg tudod változtatni a frissítés módszer a játékos és az ellenséges sprite közötti ütközések ellenőrzésére. Ha a könyvtár ütközést észlel, nyomtathat Játék vége a konzolhoz.

Íme a frissített kód:

deffrissítés(self, delta_time):
ha arcade.check_for_collision (self.player, self.enemy):
nyomtatás("Játék vége")
más:
self.player.update()

Ezzel a változtatással a játék észleli az ütközéseket és nyomtat Játék vége szöveget, ha a játékos ütközik az ellenséggel.

További funkciók hozzáadása

A játék vonzóbbá tételéhez további funkciókat is hozzáadhat, például pontozást, erősítéseket és több ellenséget.

Például létrehozhat egy listát az ellenségekről, és frissítheti a játékot, hogy minden ütközés után véletlenszerű pozíciókban új ellenségeket szülhessen. tudsz mozgassa a játékost balra és jobbra, hogy elkerülje az ellenséget, és pontot szerezzen. Íme egy példa arra, hogyan valósíthatja meg ezeket a funkciókat:

import véletlen
osztályAz én játékom(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
super().__init__(szélesség, magasság, "Az én játékom")
arcade.set_background_color (arcade.color. FEHÉR)
self.player = arcade. SpriteSolidColor(50, 50, arcade.color. KÉK)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
én.ellenségek = arcade. SpriteList()
self.score = 0
számára én ban ben hatótávolság(3):
ellenség = arcade. SpriteSolidColor(50, 50, arcade.color. PIROS)
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.enemies.append (ellenség)

defon_draw(maga):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text(f" Pontszám: {self.score}", 10, SCREEN_HEIGHT - 30, arcade.color. FEKETE, 16)

deffrissítés(self, delta_time):
ha arcade.check_for_collision_with_list (self.player, self.enemies):
nyomtatás("Játék vége")
arcade.close_window()
más:
self.player.update()
számára ellenség ban ben én.ellenségek:
enemy.center_y -= MOVEMENT_SPEED / 2
ha ellenség.központ_y < 0:
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
ön.pontszám += 1

Ezekkel a változtatásokkal a játékodnak több ellensége van, amelyek véletlenszerű pozíciókban jelennek meg, és lefelé mozognak. A játékos minden sikeresen elkerült ellenségért pontot kap, és a játék akkor ér véget, ha a játékos ütközik valamelyik ellenséggel.

Javítsa a felhasználók elköteleződését az ütközések során

Ha ütközésészlelő és -kezelő funkciókat ad hozzá játékaihoz, magával ragadóbb és nagyobb kihívást jelentő játékélményt teremthet a játékosok számára. Az egyszerű elkerülő és begyűjtő játékoktól a bonyolultabb platformozókig és lövöldözősökig az ütközések döntő szerepet játszanak a megnyerő és kielégítő játékmechanizmus kialakításában.

Tehát, ha lebilincselőbb és magával ragadóbb játékokat szeretne létrehozni, amelyek miatt a játékosok még többet szeretnének visszatérni, fontolja meg az ütközésészlelési funkciók beépítését a játék mechanikájába.