Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Hiç Python'un PyGame kitaplığını kullanarak heyecan verici bir oyun yaratmak istediniz, ancak zaman yönetimi kavramı karşısında bunaldığınız oldu mu? Eğer öyleyse, yalnız değilsin.

Zaman, oyun geliştirmenin en kritik bileşenlerinden biridir ve PyGame'de zamanın nasıl çalıştığını anlamak ilgi çekici ve başarılı oyunlar oluşturmak için çok önemlidir. PyGame, oyunlarınızda zamanı kontrol etmenize izin veren çeşitli kullanışlı işlevler ve modüller sağlar.

Basit Bir Oyun Yaratmak

Bir dikdörtgenin sağa hareket ettiği basit bir oyun oluşturarak başlayın. Başlamak, cihazınıza pip yükleyin ve PyGame modülünü kurmak için aşağıdaki komutu kullanın:

pip kurulumu pygame

Tüm kod örneklerini burada bulabilirsiniz. GitHub deposu.

Kurulduktan sonra, PyGame modülünü içe aktarın. Daha sonra 800x600 ebadında beyaz zemin renginde bir ekran oluşturun ve rect nesnesi ekleyin. Kod şöyle bir şeye benzemelidir:

instagram viewer
içe aktarmak pygame
pygame.init()
ekran = pygame.display.set_mode((800, 600))
arka plan = pygame. Yüzey (screen.get_size())
arkaplan.fill((255, 255, 255))
rect = pygame. Doğru(0, 0, 20, 20)

Bundan sonra, oyunun devam etmesi için bir süre döngüsü kullanın ve rect nesnesini ekranın sonuna ulaşana kadar hareket ettirin.

koşu = Doğru

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

rect.x += 1

eğer rect.x > 780:
doğru.x = 0

screen.blit (arka plan, (0, 0))
pygame.draw.rect (ekran, (0, 0, 0), doğru)
pygame.display.update()

Ayrıca kullanıcı girdileri ekleyebilir ve oyundaki çarpışmalar. Çıktı aşağıdadır:

PyGame Zaman Modülüne Genel Bakış

Bu oyunda zamanı kontrol etmek için kullanabilirsiniz pygame.time modül. Bu modül, aşağıdakiler de dahil olmak üzere çeşitli kullanışlı özellikler sağlar: Saat gibi yöntemlerle nesne get_ticks(), Beklemek(), Ve gecikme(). Bu işlevleri kullanarak oyununuzda süreyi kolayca kontrol edebilirsiniz.

Zamanı İzlemek İçin Saat Nesnesi Oluşturma

PyGame'de zamanı izlemek için bir Saat nesnesi kullanabilirsiniz. Bir Saat oluşturmak için aşağıdaki kod satırını kullanmanız yeterlidir:

saat = pygame.time. Saat()

Bu Saat nesnesi ile artık oyununuzda zamanı takip edebilirsiniz. Ayrıca, Clock nesnesiyle ilişkili birkaç başka yararlı işlev de vardır, örneğin:

  • get_time(): Bu fonksiyonun yardımıyla, oyunun her karesi için geçen süreyi alabilirsiniz. Bu işlevi kullanmak için, while döngüsünden sonra aşağıdaki kod satırını eklemeniz yeterlidir:
    zaman = saat.get_time()
    Geçen süreyi görüntülemek için bir metin nesnesi ekleyin:
    yazı tipi = pygame.font. SysFont("Arial", 18)
    metin = font.render('Alınan süre: {} ms'.format (zaman), Doğru, (0, 0, 0))
    ekran.blit (metin, (0, 0))
  • tik(): Oyunun kare hızını ayarlamak için bu işlevi kullanın. Varsayılan olarak, kare hızı 60 FPS olarak ayarlanmıştır. 30 FPS'ye ayarlamak için aşağıdaki kod satırını eklemeniz yeterlidir:
    saat.tik(30)
  • get_fps(): Oyunun geçerli kare hızını get_fps kullanarak alabilirsiniz. Bu işlevi kullanmak için aşağıdaki kod satırını eklemeniz yeterlidir:
    fps = saat.get_fps()
    Kare hızını görüntülemek için bir metin nesnesi ekleyebilirsiniz:
    yazı tipi = pygame.font. SysFont("Arial", 18)
    metin = font.render("FPS: {}".biçim (fps), Doğru, (0, 0, 0))
    ekran.blit (metin, (0, 20))
  • tick_busy_loop(): Bu işlev, son çağrıdan bu yana kaç milisaniyenin geçtiğini hesaplamanıza izin verir. tik() işlev. Kullanmak için aşağıdaki kod satırını eklemeniz yeterlidir:
    saat.tick_busy_loop(30)

Get_ticks Kullanarak Zaman Kazanmak

bu get_ticks() işlevi, PyGame'in başlatılmasından bu yana geçen süreyi milisaniye cinsinden döndürür. Bu işlevi kullanmak için aşağıdaki kod satırını ekleyin:

time_elapsed = pygame.time.get_ticks()

Geçen süreyi görüntülemek için bir metin nesnesi ekleyin:

yazı tipi = pygame.font. SysFont("Arial", 18)
metin = font.render("Geçen Süre: {} ms".format (geçen_zaman), Doğru, (0, 0, 0))
ekran.blit (metin, (0, 40))

Geçen süreyi, belirli bir süre süren güçlendirmeler gibi zamana dayalı oyun öğelerini uygulamak için kullanabilirsiniz. Örneğin, rect nesnesinin hızını 5 saniye artıran bir güçlendirme uygulayabilirsiniz:

eğer geçen süre / 5000 > 0:
rect.x += 5

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

Bekle ve Geciktir İşlevlerini Kullanarak Oyunu Duraklatma

PyGame ayrıca oyunu belirli bir süre duraklatmak için kullanabileceğiniz iki işlev sağlar: Beklemek işlev ve gecikme işlev.

kullanmak için Beklemek işlevi için, while döngüsüne aşağıdaki kod satırını eklemeniz yeterlidir:

pygame.time.wait(1000)

Bu, oyunu 1000 milisaniye (1 saniye) duraklatır. kullanmak için gecikme işlevi için, while döngüsüne aşağıdaki kod satırını eklemeniz yeterlidir:

pygame.time.delay(1000)

Bu, oyunun bir sonraki karesini 1000 milisaniye (1 saniye) geciktirecektir.

Bekleme ve gecikme arasındaki farklar

arasında birkaç fark vardır. Beklemek Ve gecikme fonksiyonlar. bu Beklemek işlev, işlemciyi diğer programlarla paylaşma sürecini uyutur. bu gecikme işlevi, gecikmeyi daha doğru hale getirmek için işlemciyi kullanır. Bu şu anlama gelir: gecikme işlevinden daha fazla işlemci gücü gerektirir. Beklemek hassas zamanlama gerektiren oyunlar için uygundur.

set_timer Kullanarak Etkinlik Oluşturma

kullanabilirsiniz zamanlayıcıyı Kur() belirli bir süre sonra tetiklenen bir olay oluşturma işlevi.

PyGame'deki olaylar, kullanıcı girişi veya program tarafından oluşturulan mesajlar hakkında bilgi içeren nesnelerdir. Bu işlevi kullanmak için özel bir etkinlik oluşturun ve aşağıdaki kod satırını ekleyin:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Bu, 1000 milisaniye yani 1 saniye sonra tetiklenen bir olay yaratacaktır. Fare hareketi, klavye girişi ve pencere olayları gibi tetikleyebileceğiniz farklı türde olaylar vardır. Kodunuz daha sonra bu olaylara en uygun şekilde tepki verebilir.

Örneğin, rect nesnesinin y eksenini 1 saniye sonra veya özel olay tetiklendiğinde değiştirmek isterseniz aşağıdaki kod satırını ekleyebilirsiniz:

eğer event.type == CUSTOM_EVENT:
rect.y += 20

Bu şekilde, oyununuzda ilginç ve zorlu bir oyun oluşturmak için kullanabileceğiniz zamana dayalı etkinlikleri kolayca oluşturabilirsiniz.

Zamanla Oyun Kontrollerini İyileştirin

Zaman kontrolü sayesinde oyunun kontrollerini geliştirebilirsiniz. Hızlanma, yavaşlama ve hatta oyun bitirme koşullarını uygulamak için zamanı kullanabilirsiniz. Birçok oyun, aksiyonun kısa bir süre için yavaşladığı kurşun zamanı kavramını sunar.

PyGame'deki zaman kontrol fonksiyonlarını kullanarak bu tür özellikleri ve daha fazlasını kendi oyunlarınızda kolayca uygulayabilirsiniz.