Neatkarīgi no tā, vai sadursme dod spēku vai noved pie spēles beigām, jums ir jāspēj to noteikt. Lūk, kā to izdarīt ar Python arkādes bibliotēku.

Sadursmes ir būtisks spēles aspekts daudzos videospēļu žanros. Tie spēlēm piešķir izaicinājumu un aizrautību, liekot spēlētājiem pārvarēt šķēršļus, izvairīties no ienaidniekiem un vākt balvas.

Sadursmju noteikšanas un apstrādes ieviešana spēlēs ir ļoti svarīga, lai izveidotu reālistisku un dinamisku spēles mehāniku, kas ļauj spēlētājiem iesaistīties un izklaidēties. Izmantojot tās iebūvētās funkcijas, varat viegli noteikt sadursmes ar arkādes bibliotēku.

Vienkāršas spēles izveide

Pirms sākat, pārliecinieties, ka jums ir pip ir instalēts jūsu ierīcē. Izmantojiet šo komandu, lai instalētu arkādes bibliotēku:

pip instalēšanas arkāde

Pēc tam izveidojiet spēli, kurā spēlētājs var pārvietoties pa kreisi un pa labi, lai izvairītos no sadursmes ar ienaidnieka taisnstūri. Spraitiem varat izmantot iebūvēto zīmēšanas funkciju.

Jūs varat atrast pilnu kods šajā GitHub repo.

instagram viewer

Šeit ir spēles kods:

imports arkāde

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5

klasēMana spēle(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums, "Mana spēle")
arcade.set_background_color (arcade.color. BALTS)
self.player = arkāde. SpriteSolidColor(50, 50, arcade.color. ZILS)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
sevis.ienaidnieks = arkāde. SpriteSolidColor(50, 50, arcade.color. SARKANS)
self.enemy.center_x = EKRĀNA_PLATUMS // 2
self.ienaidnieks.centrs_y = 50

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

defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. PA kreisi:
self.player.center_x -= KUSTĪBAS_ĀTRUMS
elifs taustiņš == arcade.key. PA LABI:
self.player.center_x += KUSTĪBAS_ĀTRUMS

defAtjaunināt(self, delta_time):
ja arcade.check_for_collision (self.player, self.enemy):
drukāt ("Spēle beigusies")

defgalvenais():
spēle = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

ja __nosaukums__ == "__galvenais__":
galvenais ()

Arkādes sadursmju noteikšanas līdzekļi

Arkādes bibliotēka nodrošina vienkāršu veidu, kā noteikt spraitu sadursmes. The pārbaudīt_sadursmei funkcija izmanto divus spraitus kā argumentus un atgriež Būla vērtību, norādot, vai spraiti ir sadūrušies. Varat izmantot šo funkciju, lai savā spēlē noteiktu sadursmes starp spēlētāju un ienaidnieka spraitiem.

Jūs varat mainīt Atjaunināt metode, lai pārbaudītu sadursmes starp spēlētāju un ienaidnieka spraitiem. Ja bibliotēka konstatē sadursmi, varat drukāt Spēle beigusies uz konsoli.

Šeit ir atjaunināts kods:

defAtjaunināt(self, delta_time):
ja arcade.check_for_collision (self.player, self.enemy):
drukāt ("Spēle beigusies")
cits:
self.player.update()

Izmantojot šīs izmaiņas, jūsu spēle atklās sadursmes un izdrukās Spēle beigusies tekstu, ja spēlētājs saduras ar ienaidnieku.

Papildu funkciju pievienošana

Lai padarītu spēli saistošāku, varat pievienot papildu funkcijas, piemēram, punktu skaitīšanu, pastiprināšanu un vairākus ienaidniekus.

Piemēram, varat izveidot ienaidnieku sarakstu un atjaunināt spēli, lai pēc katras sadursmes nejaušās pozīcijās radītu jaunus ienaidniekus. Jūs varat pārvietot atskaņotāju pa kreisi un pa labi, lai izvairītos no ienaidnieka un gūtu punktu. Tālāk ir sniegts piemērs, kā ieviest šīs funkcijas:

imports nejauši
klasēMana spēle(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums, "Mana spēle")
arcade.set_background_color (arcade.color. BALTS)
self.player = arkāde. SpriteSolidColor(50, 50, arcade.color. ZILS)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
sevis.ienaidnieki = arkāde. SpriteList()
pašvērtējums = 0
priekš i iekšā diapazons(3):
ienaidnieks = arkāde. SpriteSolidColor(50, 50, arcade.color. SARKANS)
ienaidnieks.centrs_x = random.randint(0, SCREEN_WIDTH)
ienaidnieks.center_y = random.randint (EKRĀNA_AUGSTUMS // 2, SCREEN_HEIGHT)
self.ienaidnieki.pievienot (ienaidnieks)

defon_draw(pats):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text(f"Rezultāts: {self.score}", 10, SCREEN_HEIGHT — 30, arcade.color. MELNS, 16)

defAtjaunināt(self, delta_time):
ja arcade.check_for_collision_with_list (self.player, self.enemies):
drukāt ("Spēle beigusies")
arcade.close_window()
cits:
self.player.update()
priekš ienaidnieks iekšā self.ienaidnieki:
enemy.center_y -= KUSTĪBAS_ĀTRUMS / 2
ja ienaidnieks.centrs_y < 0:
ienaidnieks.centrs_x = random.randint(0, SCREEN_WIDTH)
ienaidnieks.center_y = random.randint (EKRĀNA_AUGSTUMS // 2, SCREEN_HEIGHT)
pašvērtējums += 1

Pateicoties šīm izmaiņām, jūsu spēlei tagad ir vairāki ienaidnieki, kas parādās nejaušās pozīcijās un virzās uz leju. Spēlētājs nopelna punktu par katru veiksmīgi izvairīto ienaidnieku, un spēle beidzas, ja spēlētājs saduras ar kādu ienaidnieku.

Uzlabojiet lietotāju iesaisti sadursmju gadījumā

Pievienojot savām spēlēm sadursmju noteikšanas un apstrādes funkcijas, varat spēlētājiem radīt aizraujošāku un izaicinošāku spēles pieredzi. Sākot no vienkāršām spēlēm, kas ļauj izvairīties un savākt, līdz sarežģītākām platformas spēlēm un šāvējiem, sadursmēm ir izšķiroša nozīme saistošas ​​un apmierinošas spēles mehānikas izveidē.

Tātad, ja vēlaties izveidot saistošākas un ieskaujošākas spēles, kas liek spēlētājiem atgriezties pēc vairāk, apsveriet iespēju iekļaut savā spēles mehānikā sadursmju noteikšanas funkcijas.