Mustafa Aferin
Özgün ve farklı içerikler üreten python, linux ve teknoloji haberleri okumayı seven birisi

Python ile Basit Bir Labirent Oyunu Oluşturmak: Adım Adım Rehber

Python ile Basit Bir Labirent Oyunu Oluşturmak: Adım Adım Rehber

Python, okunabilir sözdizimi ve geniş kütüphane desteği sayesinde oyun geliştirmek için harika bir seçenektir. Bu makalede, Python'ı kullanarak basit bir labirent oyunu oluşturmanın temellerini öğreneceğiz. Oyunumuz, kullanıcının klavye tuşlarını kullanarak labirent içinde hareket etmesini ve bir çıkış noktasına ulaşmasını sağlayacak.

Gerekli Araçlar ve Kütüphaneler

  • Python: Python'ın en son sürümünü resmi web sitesinden indirebilirsiniz.
  • Pygame: Basit oyunlar geliştirmek için popüler bir Python kütüphanesi. Kurulum için terminale pip install pygame yazmanız yeterli.

Labirentin Tasarımı

İlk adımımız, labirentin yapısını tanımlamak. Labirentimizi, her bir hücrenin duvar olup olmadığını temsil eden iki boyutlu bir liste (veya matris) olarak temsil edeceğiz. Örneğin:


labirent = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
    [1, 1, 1, 0, 1, 1, 1, 0, 1, 1],
    [1, 0, 0, 0, 0, 0, 1, 0, 1, 1],
    [1, 0, 1, 1, 1, 1, 1, 0, 1, 1],
    [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 1, 0, 1, 1, 1, 1, 0, 1],
    [1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]

Burada 1 duvarı, 0 ise geçilebilir yolu temsil ediyor. Bu labirent yapısını daha karmaşık hale getirebilir veya rastgele labirent oluşturma algoritmaları kullanabilirsiniz.

Pygame ile Temel Pencere Oluşturma

Şimdi Pygame'i kullanarak oyun penceresini oluşturalım:


import pygame

# Pygame'i başlat
pygame.init()

# Pencere boyutları
genislik = 600
yukseklik = 480

# Pencere oluştur
ekran = pygame.display.set_mode((genislik, yukseklik))
pygame.display.set_caption("Labirent Oyunu")

# Oyun döngüsü
devam = True
while devam:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            devam = False

    # Ekranı temizle
    ekran.fill((0, 0, 0)) # Siyah arka plan

    # Ekranı güncelle
    pygame.display.flip()

# Pygame'i kapat
pygame.quit()

Bu kod, temel bir Pygame penceresi oluşturur ve oyun döngüsünü başlatır. Oyun döngüsü, olayları (örneğin, klavye tuşlarına basılması) dinler, ekranı günceller ve oyunun devam edip etmeyeceğine karar verir.

Labirentin Çizilmesi

Şimdi labirentimizi ekrana çizelim. Her bir hücreyi bir dikdörtgen olarak temsil edeceğiz ve duvarları farklı bir renkte göstereceğiz:


# Renkler
beyaz = (255, 255, 255)
siyah = (0, 0, 0)
gri = (128, 128, 128)

# Hücre boyutu
hücre_boyutu = 30

# Labirenti çizme fonksiyonu
def labirenti_ciz(ekran, labirent):
    for satir_index, satir in enumerate(labirent):
        for sutun_index, hücre in enumerate(satir):
            x = sutun_index * hücre_boyutu
            y = satir_index * hücre_boyutu

            if hücre == 1:
                pygame.draw.rect(ekran, beyaz, (x, y, hücre_boyutu, hücre_boyutu))
            else:
                pygame.draw.rect(ekran, siyah, (x, y, hücre_boyutu, hücre_boyutu))

# Oyun döngüsünde labirenti çiz
while devam:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            devam = False

    # Ekranı temizle
    ekran.fill(siyah)

    # Labirenti çiz
    labirenti_ciz(ekran, labirent)

    # Ekranı güncelle
    pygame.display.flip()

Bu kod, labirenti_ciz fonksiyonunu tanımlar ve bu fonksiyon, labirent matrisindeki her bir hücreyi kontrol ederek duvarları beyaz, boş yolları ise siyah dikdörtgenler olarak çizer.

Oyuncu Karakterini Ekleme

Şimdi oyuncu karakterini ekleyelim. Oyuncuyu küçük bir daire olarak temsil edeceğiz ve klavye tuşlarıyla hareket ettireceğiz:


# Oyuncu başlangıç konumu
oyuncu_x = hücre_boyutu
oyuncu_y = hücre_boyutu

# Oyuncu hızı
oyuncu_hizi = 5

# Oyuncuyu çizme fonksiyonu
def oyuncuyu_ciz(ekran, oyuncu_x, oyuncu_y):
    pygame.draw.circle(ekran, (0, 0, 255), (oyuncu_x + hücre_boyutu // 2, oyuncu_y + hücre_boyutu // 2), hücre_boyutu // 2)

# Oyun döngüsünde oyuncuyu çiz ve hareket ettir
while devam:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            devam = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                oyuncu_x -= oyuncu_hizi
            if event.key == pygame.K_RIGHT:
                oyuncu_x += oyuncu_hizi
            if event.key == pygame.K_UP:
                oyuncu_y -= oyuncu_hizi
            if event.key == pygame.K_DOWN:
                oyuncu_y += oyuncu_hizi

    # Çarpışma kontrolü (duvarlarla)
    sutun = oyuncu_x // hücre_boyutu
    satir = oyuncu_y // hücre_boyutu

    if labirent[satir][sutun] == 1:
        # Duvara çarptı, hareketi geri al
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                oyuncu_x += oyuncu_hizi
            if event.key == pygame.K_RIGHT:
                oyuncu_x -= oyuncu_hizi
            if event.key == pygame.K_UP:
                oyuncu_y += oyuncu_hizi
            if event.key == pygame.K_DOWN:
                oyuncu_y -= oyuncu_hizi


    # Ekranı temizle
    ekran.fill(siyah)

    # Labirenti çiz
    labirenti_ciz(ekran, labirent)

    # Oyuncuyu çiz
    oyuncuyu_ciz(ekran, oyuncu_x, oyuncu_y)

    # Ekranı güncelle
    pygame.display.flip()

Bu kod, oyuncuyu temsil eden bir daire çizer ve klavye tuşlarına basıldığında oyuncunun konumunu günceller. Ayrıca, oyuncunun duvarlara çarpmasını engelleyen basit bir çarpışma kontrolü de ekler.

Çıkış Noktası Ekleme ve Oyunu Bitirme

Son olarak, labirente bir çıkış noktası ekleyelim ve oyuncu bu noktaya ulaştığında oyunu bitirelim:


# Çıkış noktası konumu
cikis_x = 8 * hücre_boyutu
cikis_y = 7 * hücre_boyutu

# Çıkış noktasını çizme fonksiyonu
def cikisi_ciz(ekran, cikis_x, cikis_y):
    pygame.draw.rect(ekran, (0, 255, 0), (cikis_x, cikis_y, hücre_boyutu, hücre_boyutu))

# Oyun döngüsünde çıkış noktasını çiz ve oyunu bitirme kontrolünü ekle
while devam:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            devam = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                oyuncu_x -= oyuncu_hizi
            if event.key == pygame.K_RIGHT:
                oyuncu_x += oyuncu_hizi
            if event.key == pygame.K_UP:
                oyuncu_y -= oyuncu_hizi
            if event.key == pygame.K_DOWN:
                oyuncu_y += oyuncu_hizi

    # Çarpışma kontrolü (duvarlarla)
    sutun = oyuncu_x // hücre_boyutu
    satir = oyuncu_y // hücre_boyutu

    if labirent[satir][sutun] == 1:
        # Duvara çarptı, hareketi geri al
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                oyuncu_x += oyuncu_hizi
            if event.key == pygame.K_RIGHT:
                oyuncu_x -= oyuncu_hizi
            if event.key == pygame.K_UP:
                oyuncu_y += oyuncu_hizi
            if event.key == pygame.K_DOWN:
                oyuncu_y -= oyuncu_hizi

    # Çıkış noktası kontrolü
    if oyuncu_x >= cikis_x and oyuncu_x = cikis_y and oyuncu_y < cikis_y + hücre_boyutu:
        print("Tebrikler! Labirentten kaçtınız!")
        devam = False

    # Ekranı temizle
    ekran.fill(siyah)

    # Labirenti çiz
    labirenti_ciz(ekran, labirent)

    # Çıkış noktasını çiz
    cikisi_ciz(ekran, cikis_x, cikis_y)

    # Oyuncuyu çiz
    oyuncuyu_ciz(ekran, oyuncu_x, oyuncu_y)

    # Ekranı güncelle
    pygame.display.flip()

Bu kod, çıkış noktasını yeşil bir dikdörtgen olarak çizer ve oyuncunun çıkış noktasına ulaştığını kontrol eder. Oyuncu çıkış noktasına ulaştığında, bir tebrik mesajı yazdırılır ve oyun döngüsü sona erer.

Sonuç

Bu makalede, Python ve Pygame kullanarak basit bir labirent oyunu oluşturmanın temellerini öğrendik. Bu temelleri kullanarak daha karmaşık labirentler, farklı düşmanlar ve daha gelişmiş oyun mekanikleri ekleyebilirsiniz. Oyun geliştirme yolculuğunuzda başarılar dilerim!

Ek Olarak Yapılabilecekler

  • Rastgele Labirent Oluşturma: Backtracking veya Prim's algoritması gibi algoritmalar kullanarak rastgele labirentler oluşturabilirsiniz.
  • Düşmanlar Ekleme: Labirente hareket eden düşmanlar ekleyerek oyunu daha zorlu hale getirebilirsiniz.
  • Güçlendirmeler: Oyuncuya hız artışı veya duvarlardan geçme gibi güçlendirmeler ekleyebilirsiniz.
  • Ses Efektleri ve Müzik: Pygame'in ses özelliklerini kullanarak oyuna ses efektleri ve müzik ekleyebilirsiniz.
  • Grafik Arayüzünü İyileştirme: Daha detaylı grafikler ve animasyonlar kullanarak oyunun görsel çekiciliğini artırabilirsiniz.
Cevap bırakın

E-posta hesabınız yayımlanmayacak.