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.
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 = 5osztá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 = 50defon_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ÉGdeffrissí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.