Arcade'in GUI araçlarını kullanarak zahmetsizce oyun menüleri oluşturmayı ve kullanıcı arayüzleri tasarlamayı öğrenin.

Oyun menüleri ve kullanıcı arayüzleri (UI), bir oyunun kullanıcı deneyimini ve katılımını geliştirmede çok önemli bir rol oynar. Oyun geliştirmeye yönelik popüler bir Python kitaplığı olan Arcade, oyun menülerini ve UI öğelerini tasarlamayı ve uygulamayı kolaylaştıran güçlü GUI (Grafik Kullanıcı Arayüzü) araçları sağlar.

Basit Bir Oyun Yaratın

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şı

Arcade'i kullanarak 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.

Bu oyunda sola ve sağa hareket edebilen bir oyuncu nesnesi ve bir düşman nesnesi yer alacak. İşte oyunun kodu:

içe aktarmak oyun makinesi

GENİŞLİK = 800
YÜKSEKLİK = 600
OYUNCU_HIZ = 25

sınıfoyun(oyun makinesi. pencere):
kesin__içinde__(kendi):


super().__init__(GENİŞLİK, YÜKSEKLİK, "Basit Oyun")
self.player_x = GENİŞLİK // 2
self.enemy_x = GENİŞLİK - 50
self.game_over = YANLIŞ

kesinkurmak(kendi):
arcade.set_background_color (arcade.color. BEYAZ)

kesinon_draw(kendi):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, HEIGHT // 2, 20, çarşı.renk. MAVİ)
arcade.draw_circle_filled (self.enemy_x, HEIGHT // 2, 20, çarşı.renk. KIRMIZI)

kesingüncelleme(öz, delta_time):
self.düşman_x += 0.5
eğer self.enemy_x >= GENİŞLİK:
self.game_over = Doğru

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

oyun = Oyun()
oyun.setup()
çarşı.run()

Game Over Ekranı Ekleme

Oyun bittiğinde bir mesaj görüntüleyen bir oyun bitti ekranı ekleyin. düşman oyun penceresinin dışına çıkar. Kullan arcade.gui. UIManager Ve arcade.gui. UIMessageBox Bunu başarmak için sınıflar.

Bir örneğini oluştur UIManager ve etkinleştirin. İçinde on_draw yöntem olup olmadığını kontrol edin oyun bitti bayrak ayarlanır ve öyleyse, UI yöneticisini çizin. bu show_game_over_screen yöntem oluşturur UIMessageBox bir oyun bitti mesajı ile ve bunu UI yöneticisine ekler. Ayrıca UI yöneticisini şu adresten etkinleştirebilir ve devre dışı bırakabilirsiniz: güncelleme oyun durumuna dayalı yöntem.

adlı yeni bir dosya oluşturun. oyun-over.py ve aşağıdaki güncellemelerle kodu ekleyin:

içe aktarmak oyun makinesi
itibaren çarşı.gui içe aktarmak UIManager, UIMessageBox

GENİŞLİK = 800
YÜKSEKLİK = 600
OYUNCU_HIZ = 25

sınıfoyun(oyun makinesi. pencere):
kesin__içinde__(kendi):
super().__init__(GENİŞLİK, YÜKSEKLİK, "Basit Oyun")
self.player_x = GENİŞLİK // 2
self.enemy_x = GENİŞLİK - 50
self.ui_manager = UIManager()
self.game_over = YANLIŞ

kesinkurmak(kendi):
arcade.set_background_color (arcade.color. BEYAZ)
self.ui_manager.enable() # UI yöneticisini etkinleştirin

kesinon_draw(kendi):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, HEIGHT // 2, 20, çarşı.renk. MAVİ)
arcade.draw_circle_filled (self.enemy_x, HEIGHT // 2, 20, çarşı.renk. KIRMIZI)
eğer self.game_over:
self.ui_manager.draw()

kesingüncelleme(öz, delta_time):
self.düşman_x += 0.5
eğer self.enemy_x >= GENİŞLİK:
self.show_game_over_screen()
self.game_over = Doğru
eğer self.game_over:
self.ui_manager.enable()
başka:
self.ui_manager.disable()

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

kesinshow_game_over_screen(kendi):
mesaj_kutusu = UIMessageBox(
genişlik=400,
yükseklik=200,
mesaj_metni="Oyun bitti!"
)
self.ui_manager.add (mesaj_kutusu)

oyun = Oyun()
oyun.setup()
çarşı.run()

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

Düğme Ekleme

Şimdi, oyunu yeniden başlatmak veya çıkmak için düğmeler ekleyerek oyunu ekranda geliştirin. kullanarak bunu gerçekleştirebilirsiniz. düğmeler parametresi UIMessageBox ve düğme tıklamalarını işlemek için bir geri arama işlevi sağlamak.

adlı yeni bir dosya oluşturun. butonlar.py ve aşağıdaki güncellemelerle kodu ekleyin:

kesinshow_game_over_screen(kendi):
mesaj_kutusu = UIMessageBox(
genişlik=400,
yükseklik=200,
mesaj_metni="Oyun bitti!",
düğmeler=("Tekrar başlat", "Çıkış"),
geri arama=self.on_game_over_button_click
)
self.ui_manager.add (mesaj_kutusu)

kesinon_game_over_button_click(öz, button_text):
eğer düğme_metni == "Tekrar başlat":
self.restart_game()
elif düğme_metni == "Çıkış":
çarşı.close_window()

kesinoyunu yeniden başlat(kendi):
self.game_over = YANLIŞ
self.enemy_x = GENİŞLİK - 50
self.ui_manager.clear()

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

İçinde show_game_over_screen yöntem, iki düğme ekleyin, Tekrar başlat Ve çıkış, için UIMessageBox bunları belirterek düğmeler parametre. Ayrıca bir geri arama işlevi sağlayın, on_game_over_button_click, düğme tıklamalarını işlemek için. Geri arama işlevinin içinde, hangi düğmenin tıklandığını kontrol edin ve ilgili eylemi gerçekleştirin.

Arcade'in GUI araçları, oyun menülerinizin ve UI tasarımlarınızın işlevselliğini ve etkileşimini daha da artırabilecek çeşitli ek özellikler sunar. İşte birkaç örnek:

UIDraggableMixin

bu UIDraggableMixin class, herhangi bir UI widget'ını sürüklenebilir hale getirmek için kullanılabilir. Kullanıcıların UI öğelerini ekranda hareket ettirmelerine izin vererek, sürükleme davranışını işlemek için işlevsellik sağlar. Bu karışımı diğer UI widget'larıyla birleştirmek, oyununuzda sürüklenebilir pencereler veya paneller oluşturmanıza olanak tanır.

UIMouseFilterMixin

bu UIMouseFilterMixin class, belirli bir pencere öğesinde meydana gelen tüm fare olaylarını yakalamanızı sağlar. Bu, fare olaylarının temeldeki kullanıcı arabirimi öğelerini etkilemesini önlemek istediğiniz pencere benzeri parçacıklar için özellikle kullanışlıdır. Fare olaylarını filtreleyerek widget içindeki etkileşimi bağımsız olarak kontrol edebilirsiniz.

UIWindowLikeMixin

bu UIWindowLikeMixin class, bir widget'a pencere benzeri davranış sağlar. Widget'ın sınırları içinde meydana gelen tüm fare olaylarını yönetir ve widget'ın sürüklenmesine izin verir. Bu, kullanıcıların oyununuzda etkileşimde bulunabileceği sürüklenebilir pencereler veya paneller oluşturmak için idealdir.

Yüzey

bu Yüzey class, UI öğelerini çizmek için bir arabelleği temsil eder. Tampondaki çizimi soyutlar ve tamponu ekranda etkinleştirmek, temizlemek ve çizmek için yöntemler sağlar. Oyununuzda pencere öğeleri veya özel kullanıcı arayüzü öğeleri oluşturmak için bu sınıfı dahili olarak kullanabilirsiniz.

Bu ek özellikler, oyunlarınızda daha etkileşimli ve dinamik kullanıcı deneyimleri oluşturmak için fırsatlar sunar. Benzersiz işlevsellik eklemek ve oyun menülerinizi ve kullanıcı arabirimi tasarımlarınızı öne çıkarmak için bu özellikleri deneyin.

GUI'yi Dahil Etmek İçin En İyi Uygulamalar

Arcade kullanarak GUI araçlarını oyunlarınıza dahil ederken, sorunsuz ve kesintisiz bir kullanıcı deneyimi sağlamak için bazı en iyi uygulamaları takip etmek önemlidir. Akılda tutulması gereken bazı ipuçları:

Plan ve Prototip

Uygulamaya geçmeden önce, oyun menülerinizi ve kullanıcı arabirimi öğelerinizi planlamak ve prototip oluşturmak için zaman ayırın. Tutarlı ve kullanıcı dostu bir tasarım sağlamak için düzeni, işlevselliği ve görsel estetiği göz önünde bulundurun.

Tutarlı Olun

Oyun menülerinizde ve kullanıcı arabirimi öğelerinizde tutarlı bir görsel stil ve düzen sağlayın. Bu, kullanıcıların oyununuzda daha kolay gezinmesine yardımcı olur ve tutarlı bir deneyim sağlar.

Duyarlı tasarım

Kullanıcı arabirimi öğelerinizi duyarlı olacak ve farklı ekran boyutlarına ve çözünürlüklerine uyarlanabilecek şekilde tasarlayın. Bu, oyun menülerinizin ve kullanıcı arabiriminizin çeşitli cihazlarda kullanılabilir ve görsel olarak çekici kalmasını sağlar.

Verimli Olay İşleme

Duyarlı ve sorunsuz etkileşimler sağlamak için kullanıcı girişi olaylarını verimli bir şekilde işleyin. Kullanıcı arabiriminin yanıt verme hızında gecikmeye veya gecikmeye neden olabilecek gereksiz hesaplamalardan veya olay işlemeden kaçının.

Kullanıcı geribildirimi

Oyun menüleriniz ve kullanıcı arabirimi öğelerinizle etkileşime geçtiklerinde kullanıcılara net ve anında geri bildirim sağlayın. Görsel ipuçları, animasyonlar ve oyunlarda sesli geri bildirim, kullanıcı deneyimini geliştirebilir ve oyunun daha gösterişli hissettirmesini sağlayın.

Bu en iyi uygulamaları takip ederek sezgisel ve görsel olarak çekici oyun menüleri ve kullanıcı arabirimi tasarımları oluşturabilirsiniz.

Görsel Olarak Çekici Kullanıcı Arayüzüyle Kullanıcı Etkileşimini Artırın

Oyununuza GUI öğeleri eklemek yalnızca kullanılabilirliği iyileştirmekle kalmaz, aynı zamanda görsel çekiciliği ve oyuncuların genel katılımını da geliştirir. İster bir başlat menüsü, ister oyun ekranı veya başka herhangi bir UI öğesi oluşturuyor olun, Arcade'in GUI araçları, oyununuzun kullanıcı deneyimini geliştirmek için bir dizi özellik ve işlevsellik sunar.