Çarpışma ister bir güç artışı sağlasın ister oyunun bitmesine yol açsın, onu tespit edebilmeniz gerekir. İşte Python'un atari kütüphanesi ile bunu nasıl yapacağınız.

Çarpışmalar, birçok video oyunu türünde oyunun temel bir yönüdür. Oyunlara bir meydan okuma ve heyecan katmanı ekleyerek oyuncuların engellerden geçmesini, düşmanlardan kaçmasını ve ödülleri toplamasını gerektirir.

Oyunlarınızda çarpışma tespiti ve yönetimini uygulamak, oyuncuları meşgul eden ve eğlendiren gerçekçi ve dinamik oyun mekanikleri oluşturmak için çok önemlidir. Yerleşik işlevlerini kullanarak arcade kitaplığıyla çarpışmaları kolayca tespit edebilirsiniz.

Basit Bir Oyun Yaratmak

Başlamadan önce, sahip olduğunuzdan emin olun. cihazınızda yüklü pip. Arcade kitaplığını yüklemek için bu komutu kullanın:

pip yükleme çarşı

Bundan sonra, oyuncunun bir düşman dikdörtgeniyle çarpışmaktan kaçınmak için sola ve sağa hareket edebileceği bir oyun oluşturun. Karakterler için yerleşik çizim işlevini kullanabilirsiniz.

eksiksiz bulabilirsiniz bu GitHub deposundaki kod.

instagram viewer

İşte oyunun kodu:

içe aktarmak oyun makinesi

EKRAN_GENİŞLİK = 640
EKRAN_YÜKSEKLİK = 480
HAREKET_HIZ = 5

sınıfBenim oyunum(oyun makinesi. pencere):
kesin__içinde__(öz, genişlik, yükseklik):
super().__init__(genişlik, yükseklik, "Benim oyunum")
arcade.set_background_color (arcade.color. BEYAZ)
self.player = çarşı. SpriteSolidColor(50, 50, çarşı.renk. MAVİ)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
self.enemy = çarşı. SpriteSolidColor(50, 50, çarşı.renk. KIRMIZI)
self.enemy.center_x = SCREEN_WIDTH // 2
self.düşman.center_y = 50

kesinon_draw(kendi):
arcade.start_render()
self.player.draw()
self.düşman.draw()

kesinon_key_press(self, key, değiştiriciler):
eğer anahtar == çarşı.key. SOL:
self.player.center_x -= MOVEMENT_SPEED
elif anahtar == çarşı.key. SAĞ:
self.player.center_x += MOVEMENT_SPEED

kesingüncelleme(öz, delta_time):
eğer arcade.check_for_collision (self.player, self.düşman):
Yazdır("Oyun bitti")

kesinana():
oyun = Oyunum (SCREEN_WIDTH, SCREEN_HEIGHT)
çarşı.run()

eğer __isim__ == "__ana__":
ana()

Arcade'in Çarpışma Tespiti Özellikleri

Arcade kitaplığı, hareketli karakterler arasındaki çarpışmaları algılamak için basit bir yol sağlar. bu check_for_collision işlev, bağımsız değişken olarak iki karakter alır ve karakterlerin çarpıştığını gösteren bir Boolean değeri döndürür. Oyununuzdaki oyuncu ve düşman karakterleri arasındaki çarpışmaları tespit etmek için bu işlevi kullanabilirsiniz.

değiştirebilirsiniz güncelleme oyuncu ve düşman karakterleri arasındaki çarpışmaları kontrol etme yöntemi. Kitaplık bir çarpışma algılarsa yazdırabilirsiniz. Oyun bitti konsola.

İşte güncellenmiş kod:

kesingüncelleme(öz, delta_time):
eğer arcade.check_for_collision (self.player, self.düşman):
Yazdır("Oyun bitti")
başka:
self.player.update()

Bu değişiklikle, oyununuz çarpışmaları algılayacak ve yazdıracak Oyun bitti oyuncu düşmanla çarpışırsa metin.

Daha Fazla Özellik Ekleme

Oyununuzu daha ilgi çekici hale getirmek için puanlama, güçlendirmeler ve birden çok düşman gibi ekstra özellikler ekleyebilirsiniz.

Örneğin, bir düşman listesi oluşturabilir ve oyunu her çarpışmadan sonra rastgele konumlarda yeni düşmanlar üretecek şekilde güncelleyebilirsiniz. Yapabilirsiniz oyuncuyu hareket ettir düşmandan kaçınmak ve bir puan kazanmak için sola ve sağa. İşte bu özellikleri nasıl uygulayabileceğinize dair bir örnek:

içe aktarmak rastgele
sınıfBenim oyunum(oyun makinesi. pencere):
kesin__içinde__(öz, genişlik, yükseklik):
super().__init__(genişlik, yükseklik, "Benim oyunum")
arcade.set_background_color (arcade.color. BEYAZ)
self.player = çarşı. SpriteSolidColor(50, 50, çarşı.renk. MAVİ)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
self.enemies = çarşı. Karakter Listesi()
self.puan = 0
için Ben içinde menzil(3):
düşman = çarşı. SpriteSolidColor(50, 50, çarşı.renk. KIRMIZI)
düşman.center_x = rastgele.randint(0, EKRAN GENİŞLİĞİ)
düşman.merkez_y = rastgele.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.enemies.append (düşman)

kesinon_draw(kendi):
arcade.start_render()
self.player.draw()
self.düşmanlar.draw()
çarşı.draw_text(f"Puan: {self.score}", 10, SCREEN_HEIGHT - 30, çarşı.renk. SİYAH, 16)

kesingüncelleme(öz, delta_time):
eğer arcade.check_for_collision_with_list (self.player, self.enemies):
Yazdır("Oyun bitti")
çarşı.close_window()
başka:
self.player.update()
için düşman içinde self.düşmanlar:
düşman.center_y -= MOVEMENT_SPEED / 2
eğer düşman.merkez_y < 0:
düşman.center_x = rastgele.randint(0, EKRAN GENİŞLİĞİ)
düşman.merkez_y = rastgele.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.puan += 1

Bu değişikliklerle, oyununuzda artık rastgele konumlarda ortaya çıkan ve aşağı doğru hareket eden birden fazla düşman var. Oyuncu, başarıyla kaçınılan her düşman için bir puan kazanır ve oyuncu herhangi bir düşmanla çarpışırsa oyun sona erer.

Çarpışmalarla Kullanıcı Etkileşimini Artırın

Oyunlarınıza çarpışma algılama ve işleme özellikleri ekleyerek, oyuncular için daha sürükleyici ve zorlu oyun deneyimleri oluşturabilirsiniz. Basit kaçın ve topla oyunlarından daha karmaşık platform oyunlarına ve atıcılara kadar, çarpışmalar ilgi çekici ve tatmin edici oyun mekaniği yaratmada çok önemli bir rol oynar.

Bu nedenle, oyuncuların daha fazlası için geri gelmesini sağlayan daha ilgi çekici ve sürükleyici oyunlar oluşturmak istiyorsanız, oyun mekaniğinize çarpışma algılama özelliklerini dahil etmeyi düşünün.