Düşmanları tanıtarak atari oyunlarınıza renk katın.

Düşmanlar, ilgi çekici ve zorlu oyunlar yaratmada çok önemli bir rol oynar. Oyuncular için engeller ve düşmanlar sağlayarak oyun deneyimini daha heyecanlı hale getirirler. Python'un Arcade kitaplığı, düşmanları oyunlarınıza dahil etmenin basit bir yolunu sunar.

Basit Bir Oyun Yaratın

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

pip yükleme çarşı

Bundan sonra, oyuncunun ok tuşlarını kullanarak sola ve sağa hareket edebildiği basit bir oyun oluşturarak başlayın.

Bu makalede kullanılan kod bu makalede mevcuttur. GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.

içe aktarmak oyun makinesi

# Pencere boyutları
EKRAN_GENİŞLİK = 800
EKRAN_YÜKSEKLİK = 600

# Oyuncu özellikleri
OYUNCU_RADIUS = 25
OYUNCU_HIZ = 5

sınıfOyun Penceresi(oyun makinesi. pencere):
kesin__içinde__(öz, genişlik, yükseklik):
super().__init__(genişlik, yükseklik)
arcade.set_background_color (arcade.color. BEYAZ)
self.player_x = genişlik // 2

instagram viewer

kesinon_draw(kendi):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color. MAVİ)

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

kesingüncelleme(öz, delta_time):
geçmek

kesinana():
pencere = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
çarşı.run()

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

Basit Bir Düşman Yaratmak

Oyuncuyu çarpışma anında öldüren bir düşman yaratmak için ekranda başka bir daire oluşturun. İçinde on_draw işlevi, bu düşman dairesini çizebilir ve çarpışmaları kontrol edebilirsiniz. güncelleme yöntem. ayrıca yapabilirsin düşmanlar için karakter kullan.

# GameWindow sınıfına ekle

sınıfOyun Penceresi(oyun makinesi. pencere):
# ...

kesin__içinde__(öz, genişlik, yükseklik):
# ...

# Düşman özellikleri
self.enemy_x = genişlik // 2
self.enemy_y = yükseklik - PLAYER_RADIUS
self.düşman_yarıçapı = 20

kesinon_draw(kendi):
# ...
arcade.draw_circle_filled (self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color. KIRMIZI)

kesingüncelleme(öz, delta_time):
eğer self.is_collision (self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
Yazdır("Oyun bitti!")

kesinis_collision(öz, x1, y1, x2, y2, yarıçap1, yarıçap2):
mesafe_kare = (x1 - x2) ** 2 + (y1 - y2) ** 2
yarıçap_sum_squared = (yarıçap1 + yarıçap2) ** 2
geri dönmek mesafe_kare <= yarıçap_sum_squared

Düşmanın Oyuncuyu Takip Etmesini Sağlamak

Bazı oyunlarda, düşmanlar oyuncuyu kovalayarak oyuna dinamik bir unsur katabilir. Takip eden bir düşman oluşturmak için, oyuncunun konumuna göre konumunu güncellemeniz gerekir. Her ne zaman oyuncu hareket eder, düşman aynı yönde hareket eder. değiştirerek bunu başarabilirsiniz. güncelleme yöntem. adlı yeni bir dosya oluşturun. düşman-takip-player.py ve aşağıdaki güncellemelerle kodu ekleyin:

# GameWindow sınıfına ekle

sınıfOyun Penceresi(oyun makinesi. pencere):
# ...

kesingüncelleme(öz, delta_time):
eğer self.player_x < self.düşman_x:
self.enemy_x -= PLAYER_SPEED
elif self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED

eğer self.is_collision (self.player_x, self.player_y,
self.düşman_x, öz.düşman_y,
OYUNCU_RADIUS, ENEMY_RADIUS):
Yazdır("Oyun bitti!")

kesinis_collision(öz, x1, y1, x2, y2, yarıçap1, yarıçap2):
mesafe_kare = (x1 - x2) ** 2 + (y1 - y2) ** 2
yarıçap_sum_squared = (yarıçap1 + yarıçap2) ** 2
geri dönmek mesafe_kare <= yarıçap_sum_squared

Çıktı aşağıdadır:

Düşman Mermileri Ekleme

Mermi atan bir düşman yaratmak için, Mermi aktif madde işaretlerini takip etmek için sınıf ve bir liste. Düşman periyodik olarak yeni bir mermi oluşturacak ve konumunu güncelleyecektir. adlı yeni bir dosya oluşturun. bullets.py ve aşağıdaki güncellemelerle kodu ekleyin:

# GameWindow sınıfına ekle

sınıfMermi:
kesin__içinde__(öz, x, y, yarıçap, hız):
self.x = x
self.y = y
self.yarıçap = yarıçap
öz.hız = hız

kesingüncelleme(kendi):
self.y - = self.hız

sınıfOyun Penceresi(oyun makinesi. pencere):
# ...

kesin__içinde__(öz, genişlik, yükseklik):
# ...

# Düşman özellikleri
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# Mermi oluşumları arasındaki çerçeve sayısı
self.bullet_timer = 0

kesinon_draw(kendi):
# ...
için kurşun içinde self.mermiler:
arcade.draw_circle_filled (bullet.x, bullet.y,
self.bullet_radius, çarşı.renk. SİYAH)

kesingüncelleme(öz, delta_time):
# ...

self.bullet_timer += 1
eğer self.bullet_timer >= self.bullet_cooldown:
self.bullets.append (Bullet (self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
self.bullet_timer = 0

için kurşun içinde self.mermiler:
bullet.update()
eğer self.is_collision (self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
Yazdır("Oyun bitti!")

kesinis_collision(öz, x1, y1, x2, y2, yarıçap1, yarıçap2):
mesafe_kare = (x1 - x2) ** 2 + (y1 - y2) ** 2
yarıçap_sum_squared = (yarıçap1 + yarıçap2) ** 2
geri dönmek mesafe_kare <= yarıçap_sum_squared

Çıktı aşağıdadır:

Düşmanlar için Sağlık Puanı Ekleme

Pek çok oyunda düşmanlar, yenilmeden önce birden fazla darbeyi sürdürmelerine olanak tanıyan sağlık puanlarına (HP) sahip olabilir. Düşmanlara sağlık puanları eklemek, stratejik oyun öğeleri sunabilir ve bir ilerleme ve meydan okuma duygusu sağlayabilir. adlı yeni bir dosya oluşturun. heath-point.py ve aşağıdaki güncellemelerle kodu ekleyin:

# Pencere boyutları
EKRAN_GENİŞLİK = 800
EKRAN_YÜKSEKLİK = 600

# Oyuncu özellikleri
OYUNCU_RADIUS = 25
OYUNCU_HIZ = 5

# Düşman özellikleri
ENEMY_RADIUS = 20
DÜŞMAN_SAĞLIK = 100

sınıfOyun Penceresi(oyun makinesi. pencere):
kesin__içinde__(öz, genişlik, yükseklik):
super().__init__(genişlik, yükseklik)
arcade.set_background_color (arcade.color. BEYAZ)
self.player_x = genişlik // 2
self.player_y = yükseklik // 2
self.enemy_x = genişlik // 2
self.enemy_y = yükseklik - PLAYER_RADIUS
self.enemy_health = ENEMY_HEALTH
yazdır (self.enemy_health)
kesinon_draw(kendi):
arcade.start_render()
arcade.draw_circle_filled (self.player_x,
self.player_y,
PLAYER_RADIUS,
çarşı.renk. MAVİ)
eğer self.enemy_health > 0:
arcade.draw_circle_filled (self.enemy_x,
self.düşman_y,
ENEMY_RADIUS,
çarşı.renk. KIRMIZI)

kesingüncelleme(öz, delta_time):
eğer self.is_collision (self.player_x, self.player_y,
self.düşman_x, öz.düşman_y,
OYUNCU_RADIUS, ENEMY_RADIUS):
self.enemy_health -= 10
yazdır (self.enemy_health)

bu DÜŞMAN_SAĞLIK sabit, düşmanın ilk sağlık puanlarını temsil eden 100 değerine sahiptir. Oyuncu düşmanla çarpıştığında, düşmanın sağlığından bazı puanlar düşebilirsiniz. Güncellenen sağlık değerini görüntülemek için bir metin nesnesi yazdırabilirsiniz. self.health_text mevcut düşman sağlığını gösterir.

Düşmanlar için sağlık puanları ekleyerek, oyuncular için bir meydan okuma ve strateji katmanı oluşturabilirsiniz. Görüntülenen sağlık değeri, görsel geri bildirim sağlar ve oyuncuların düşmanın kalan sağlığını izlemesine olanak tanır.

Ek olarak, sağlık çubuklarını görüntülemek veya düşmanın sağlığı sıfıra ulaştığında yenilgi koşullarını uygulamak gibi daha fazla mantık ve görsel ekleyerek kodu genişletebilirsiniz.

Düşman Yaratmak İçin En İyi Uygulamalar

Oyununuz için düşmanlar tasarlarken, zorlu ve eğlenceli bir oyun deneyimine katkıda bulunmalarını sağlamak için birkaç en iyi uygulamayı göz önünde bulundurmak önemlidir. Düşman oluştururken izlenecek bazı yönergeler şunlardır:

Çeşitli Nitelikler

Hız, boyut, sağlık ve saldırı gücü gibi çeşitli özelliklere sahip düşmanlar yaratın. Farklı düşman türleri, oyuncuların stratejilerini buna göre uyarlamasını gerektiren farklı zorluk seviyelerine sahip olmalıdır. Düşman niteliklerinin bir karışımını sunarak oyunu taze ve ilgi çekici tutabilirsiniz.

Eşsiz Davranışlar

Her düşman türüne kendi benzersiz davranış modellerini verin. Bazı düşmanlar öngörülebilir bir şekilde hareket ederken, diğerleri daha karmaşık veya düzensiz hareketler sergileyebilir. Davranışlarını daha akıllı ve öngörülemez hale getirmek için düşman yapay zeka algoritmalarını dahil etmeyi ve oyuncular için fazladan bir zorluk katmanı eklemeyi düşünün.

Sağlık Puanı (HP)

İlerleme ve dayanıklılık hissi vermek için düşmanlara sağlık puanları uygulayın. Bu, düşmanların yenilmeden önce birden fazla darbeye dayanmalarını sağlar. Farklı düşman türlerine değişen miktarlarda HP atayarak, bir zorluk hiyerarşisi oluşturabilir ve oyuncuları hedeflerini strateji ve önceliklendirmeye teşvik edebilirsiniz.

Düşmanlarla Oyunları Daha Eğlenceli Hale Getirin

Oyunlarınıza düşman eklemek, oyun deneyimini önemli ölçüde artırabilir. Zorluklar çıkarırlar ve oyuncuları becerilerini geliştirmeleri için motive ederler. Düşmanlar, basit engellerden yapay zeka güdümlü karmaşık düşmanlara kadar çeşitli biçimlerde gelebilir. Düşmanları etkili bir şekilde uygulayarak oyunlarınızı oyuncular için daha ilgi çekici ve eğlenceli hale getirebilirsiniz.