Bir diyalog sistemi uygulayarak oyun deneyiminizi daha sürükleyici hale getirin.

Pygame'de bir diyalog sistemi uygulamak, bir oyunun etkileşimli deneyimini büyük ölçüde geliştirebilir. Diyalog sistemi, oyunun oyuncuya konuşmaları, mesajları ve seçimleri sunmasını sağlayarak daha sürükleyici ve ilgi çekici bir oyun deneyimi yaratır.

Pygame kitaplığı, bir grafik kullanıcı arabirimi (GUI) oluşturmak ve kullanıcı girişini işlemek için gerekli araçları sağlar, bu da onu bir diyalog sistemi uygulamak için ideal bir seçim haline getirir.

Basit Bir Oyun Yaratın

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

pip kurulumu pygame

Bundan sonra, oyuncunun bir düşmandan kaçarken 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.

Aşağıdaki kod parçacığı oyun penceresini kurar, oyuncu ve düşman özelliklerini başlatır ve oyun döngüsünü çalıştırır.

instagram viewer
# Gerekli kitaplıkları içe aktarın
içe aktarmak pygame
itibaren pygame.locals içe aktarmak *

pygame.init()

# Oyun penceresini ayarla
ekran_genişliği, ekran_yüksekliği = 800, 600
ekran = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Benim oyunum")

# Renkleri tanımlayın
SİYAH = (0, 0, 0)
BEYAZ = (255, 255, 255)
GRİ = (128, 128, 128)

# Oyuncu özellikleri
oyuncu_x = 400
oyuncu_y = 500
oyuncu_hızı = 5

# Düşman özellikleri
düşman_x = 400
düşman_y = 100
düşman_hızı = 3

koşu = Doğru
saat = pygame.time. Saat()

sırasında koşma:
için etkinlik içinde pygame.event.get():
eğer event.type == ÇIKIŞ:
koşu = YANLIŞ

tuşlar = pygame.key.get_pressed()

# Oyuncu hareketi
eğer tuşlar[K_LEFT] Ve oyuncu_x > 0:
player_x -= player_speed
eğer tuşlar[K_RIGHT] Ve player_x < ekran_genişliği - oynatıcı_hızı:
player_x += player_speed

# Düşman konumunu güncelle
düşman_y += düşman_hızı
eğer düşman_y > ekran_yüksekliği:
düşman_y = -50

# Çarpışmayı kontrol et
eğer pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (düşman_x, düşman_y, 50, 50)):
# Diyalog kutusunu buraya uygulayın
geçmek

ekran.dolgu (SİYAH)
pygame.draw.rect (ekran, BEYAZ, (player_x, player_y, 50, 50))
pygame.draw.rect (ekran, BEYAZ, (düşman_x, düşman_y, 50, 50))
pygame.display.flip()
saat.tik(60)

pygame.quit()

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

Diyalog Kutusu Oluştur

Bir diyalog kutusu uygulamak için, oyuncu düşmana her dokunduğunda onu görüntülemeniz gerekir. Ekle diyalog kutusu iletişim kutusunun görüntülenip görüntülenmeyeceğini kontrol eden değişken.

Oyun döngüsünün içinde, oyuncu ve düşman arasındaki çarpışmayı kontrol edin, ve bir çarpışma varsa, ayarlayın diyalog kutusu ile Doğru. Bulunduğu koşul içinde diyalog kutusu dır-dir Doğrukullanarak ekranda gri bir dikdörtgen çizin. pygame.draw.rect() diyalog kutusunu temsil etmek için.

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

# Diyalog kutusu özellikleri
dialog_box_width = 400
dialog_box_height = 200
dialog_box_x = (screen_width - dialog_box_width) // 2
dialog_box_y = (screen_height - dialog_box_height) // 2
diyalog kutusu = YANLIŞ
# ...
sırasında koşma:
için etkinlik içinde pygame.event.get():
eğer event.type == ÇIKIŞ:
koşu = YANLIŞ
tuşlar = pygame.key.get_pressed()
# Oyuncu hareketi
eğer tuşlar[K_LEFT] Ve oyuncu_x > 0:
player_x -= player_speed
eğer tuşlar[K_RIGHT] Ve player_x < ekran_genişliği - oynatıcı_hızı:
player_x += player_speed
# Düşman konumunu güncelle
düşman_y += düşman_hızı
eğer düşman_y > ekran_yüksekliği:
düşman_y = -50
# Çarpışmayı kontrol et
eğer pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (düşman_x, düşman_y, 50, 50)):
diyalog kutusu = Doğru
ekran.dolgu (SİYAH)
eğer diyalog kutusu:
pygame.draw.rect (ekran, GRİ, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# Buraya diyalog metni ve düğmeleri ekleyin
başka:
pygame.draw.rect (ekran, BEYAZ, (player_x, player_y, 50, 50))
pygame.draw.rect (ekran, BEYAZ, (düşman_x, düşman_y, 50, 50))
pygame.display.flip()
saat.tik(60)
pygame.quit()

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

Şimdi, iletişim kutusunu daha işlevsel ve etkileşimli hale getirmek için düğmeler ve metin eklemeye devam edebilirsiniz.

Python GUI Kullanarak Düğme Ekleme

Diyalog kutusuna düğmeler eklemek için Pygame GUI veya PySimpleGUI gibi bir Python GUI kitaplığından yararlanabilirsiniz.

yükleyin ve içe aktarın pygame_gui modülü, ardından kullanarak bir Pygame GUI yöneticisi oluşturun. pygame_gui. UIManager. Bundan sonra, kullanarak bir düğme oluşturun UIDüğmesi Python GUI kitaplığı tarafından sağlanan sınıf.

Oyun döngüsünün içinde, ekleyin manager.update (pygame.time.get_ticks() / 1000.0) GUI yöneticisini güncellemek için ve manager.draw_ui (ekran) GUI öğelerini ekranda çizmek için.

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


içe aktarmak pygame_gui

# Pygame GUI yöneticisi
yönetici = pygame_gui. UIManager((screen_width, screen_height))

# Bir düğme oluştur
düğme_genişliği = 100
düğme_yüksekliği = 30
button_x = dialog_box_x + (dialogue_box_width - button_width) // 2
button_y = dialog_box_y + (dialogue_box_height - button_height) // 2
düğme = pygame_gui.elements. UIButton (relative_rect=pygame. Rect (button_x, button_y, button_width, button_height),
metin='Beni tıkla',
yönetici=yönetici)

koşu = Doğru
saat = pygame.time. Saat()

sırasında koşma:
için etkinlik içinde pygame.event.get():
eğer event.type == pygame. ÇIKIŞ YAPMAK:
koşu = YANLIŞ

manager.process_events (olay)

tuşlar = pygame.key.get_pressed()

# Çarpışmayı kontrol et
eğer pygame. Rect (player_x, player_y, 50, 50).colliderect (pygame. Rect (düşman_x, düşman_y, 50, 50)):
diyalog kutusu = Doğru

ekran.dolgu (SİYAH)

eğer diyalog kutusu:
pygame.draw.rect (ekran, GRİ, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (ekran)
başka:
pygame.draw.rect (ekran, BEYAZ, (player_x, player_y, 50, 50))
pygame.draw.rect (ekran, BEYAZ, (düşman_x, düşman_y, 50, 50))

pygame.display.flip()
saat.tik(60)

pygame.quit()

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

Bu değişikliklerle, düğme artık göründüğünde diyalog kutusunun içinde görünmelidir.

Python GUI Kullanarak Metin Ekleme

Diyalog kutusunda özel metni görüntülemek için Python GUI kitaplığı tarafından sağlanan metin işlevini kullanabilirsiniz.

Kullanarak yazı tipi özelliklerini tanımlayın pygame.font. Yazı tipi(). Oluşturmak metin istediğiniz içerikle değişken oluşturun ve ardından belirtilen yazı tipini ve rengi kullanarak işleyin.

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


# Pygame GUI yöneticisini başlat
yönetici = pygame_gui. UIManager((screen_width, screen_height))

# Yazı tipi özelliklerini tanımlayın
yazı tipi = pygame.font. Yazı tipi(Hiçbiri, 24)
metin_renk = SİYAH

# ...

sırasında koşma:
# ...

eğer diyalog kutusu:
pygame.draw.rect (ekran, GRİ, (dialogue_box_x,
dialog_box_y,
dialog_box_width,
dialog_box_height))

# İletişim kutusuna metin ekleyin
metin = "Merhaba, oyuna hoş geldiniz!"
rendered_text = font.render (metin, Doğru, metin_rengi)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
dialog_box_y + dialog_box_height // 2))

screen.blit (rendered_text, text_rect)

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

Ek Özellikler Dahil

Düğmelere ve metne ek olarak, Pygame'de diyalog sisteminize eklemeyi düşünebileceğiniz birkaç başka özellik daha vardır. İşte birkaç örnek daha:

Karakter Duyguları

Diyalog sırasında ruh hallerini veya tepkilerini iletmek için karakterlerin duygularını veya yüz ifadelerini gösterin. Bu, konuşmanın bağlamına göre değişen animasyonlu karakterler veya görüntü bindirmeleri kullanılarak elde edilebilir.

Koşullu Diyaloglar

Oyuncunun ilerlemesi, önceki seçimleri veya oyun içi olaylar gibi belirli kriterlere dayalı olarak belirli diyalogları tetiklemek için koşullu ifadeleri kullanın. Bu, oyuncunun eylemlerine dayalı olarak derinlik ve kişiselleştirilmiş etkileşimler ekler.

Ses biter

Karakter diyalogları için seslendirmeyi dahil ederek diyalog sisteminin sürükleyiciliğini geliştirin. Pygame'de ses kliplerini oynatın karakterlere belirgin bir ses vermek için diyalog kutusunda görüntülenen metinle eşleşen.

Bu ek özellikleri dahil ederek, oyuncunun oyunun içine dalmasını artıran ve benzersiz bir oyun deneyimi sağlayan daha dinamik ve ilgi çekici bir diyalog sistemi oluşturabilirsiniz.

Diyalog Sistemi Eklemek İçin En İyi Uygulamalar

Pygame'de bir diyalog sistemi uygularken verimlilik, sürdürülebilirlik ve sorunsuz bir oyuncu deneyimi sağlamak için belirli en iyi uygulamaları takip etmek önemlidir. Dikkate alınması gereken bazı ek en iyi uygulamalar şunlardır:

Veriye Dayalı Tasarım Kullanın

Metin, konuşmacı bilgileri ve diyalog seçenekleri dahil olmak üzere diyalog içeriğini harici veri dosyalarında (örn. JSON, XML) depolayın. Bu, kod değişikliği gerektirmeden diyalog içeriğinin kolayca değiştirilmesine, yerelleştirilmesine ve yönetilmesine olanak tanır.

Bir Diyalog Yöneticisi Uygulayın

Diyalog etkileşimlerini yönetme mantığını işleyen özel bir diyalog yöneticisi sınıfı veya modülü oluşturun. Bu, kodun düzenli kalmasına yardımcı olur ve daha kolay bakım ve genişletilebilirlik sağlar.

Oyun Testi ve Dengeleme

Diyalogların doğal bir şekilde akmasını, seçimlerin anlamlı sonuçlara sahip olmasını ve ilerleme hızının genel oyun deneyimiyle uyumlu olmasını sağlamak için diyalog sistemini düzenli olarak test edin ve dengeleyin. Oyunculardan geri bildirim toplayın ve oyuncu katılımını artırmak için diyalog içeriği ve yapısını yineleyin.

Yerelleştirme Desteği

Diyalog sistemini baştan yerelleştirmeyi göz önünde bulundurarak tasarlayın. Metin dizelerini koddan ayırın ve birden çok dili desteklemek için dil dosyalarını veya yerelleştirme kitaplıklarını kullanın. Bu, diyalog içeriğinin daha kolay çevrilmesine ve yerelleştirilmesine olanak tanır.

Bu en iyi uygulamaları takip ederek, diyalog sisteminizin iyi tasarlanmış, verimli ve esnek olduğundan, oyununuz geliştikçe daha kolay bakım ve güncellemelere olanak sağladığından emin olabilirsiniz.

Diyalog Sistemiyle Oyunları Daha İlgi Çekici Hale Getirin

Oyununuza bir diyalog sistemi eklemek, oyuncuların oyuncu olmayan karakterlerle (NPC'ler) etkileşime girmesine, hikayeleri ortaya çıkarmasına, seçimler yapmasına ve değerli bilgiler edinmesine izin vererek oyunu daha ilgi çekici hale getirebilir.

Diyalog yapısını dikkatli bir şekilde tasarlamayı, modüler bir yaklaşım kullanmayı ve oyuncu deneyimini daha da zenginleştirmek için koleksiyon parçalarını ve seviyeleri entegre etmeyi unutmayın.