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

Python ile Basit Bir Kart Oyunu Geliştirme Rehberi: Adım Adım Kodlama

Python ile Basit Bir Kart Oyunu Geliştirme Rehberi: Adım Adım Kodlama

Python, basit sözdizimi ve geniş kütüphane desteği sayesinde oyun geliştirmek için mükemmel bir seçenektir. Bu makalede, Python kullanarak basit bir kart oyunu geliştireceğiz. Bu oyun, iskambil destesinden rastgele kartlar çekmeye ve bu kartları karşılaştırmaya dayanacak. Amacımız, temel oyun geliştirme prensiplerini anlamak ve Python'daki rastgele sayı üretme, liste manipülasyonu ve kullanıcı etkileşimi gibi konuları pekiştirmek olacak.

Oyunun Temel Yapısı

Oyunumuzun temel yapısı şu şekilde olacak:

  1. İskambil destesi oluşturma
  2. Oyunculara kart dağıtma
  3. Oyuncuların kartlarını karşılaştırma
  4. Kazananı belirleme

Adım 1: İskambil Destesi Oluşturma

İlk adım olarak, iskambil destesinin tamamını temsil eden bir liste oluşturmamız gerekiyor. İskambil destesi, dört farklı renkten (Kupa, Karo, Maça, Sinek) ve her renkten 13 farklı karttan (As, 2, 3, 4, 5, 6, 7, 8, 9, 10, Vale, Kız, Papaz) oluşur.


import random

renkler = ["Kupa", "Karo", "Maça", "Sinek"]
kartlar = ["As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Vale", "Kız", "Papaz"]

def deste_olustur():
  """İskambil destesinin tamamını oluşturur."""
  deste = []
  for renk in renkler:
    for kart in kartlar:
      deste.append(renk + " " + kart)
  return deste

deste = deste_olustur()
print(deste)

Bu kod parçacığı, `deste_olustur()` fonksiyonunu kullanarak iskambil destesinin tamamını oluşturur ve `deste` değişkenine atar. Daha sonra, bu desteyi ekrana yazdırırız.

Adım 2: Kartları Karıştırma

Oyunun adil olması için, desteyi karıştırmamız gerekiyor. Python'daki `random` modülünü kullanarak desteyi kolayca karıştırabiliriz.


def desteyi_karistir(deste):
  """İskambil destesindeki kartları karıştırır."""
  random.shuffle(deste)

desteyi_karistir(deste)
print(deste)

Bu kod, `desteyi_karistir()` fonksiyonunu kullanarak `random.shuffle()` fonksiyonu ile desteyi karıştırır ve ardından karıştırılmış desteyi ekrana yazdırır.

Adım 3: Oyunculara Kart Dağıtma

Şimdi, oyunculara kart dağıtmamız gerekiyor. Bu örnekte, iki oyuncu ile oynayacağız. Her oyuncuya belirli sayıda kart dağıtacağız (örneğin, 5 kart).


def kart_dagit(deste, oyuncu_sayisi, kart_sayisi):
  """Oyunculara kart dağıtır."""
  oyuncular = []
  for _ in range(oyuncu_sayisi):
    oyuncular.append([])

  for _ in range(kart_sayisi):
    for i in range(oyuncu_sayisi):
      oyuncular[i].append(deste.pop())

  return oyuncular

oyuncular = kart_dagit(deste, 2, 5)
print("Oyuncu 1: ", oyuncular[0])
print("Oyuncu 2: ", oyuncular[1])

Bu kod, `kart_dagit()` fonksiyonunu kullanarak oyunculara kart dağıtır. Fonksiyon, oyuncu sayısını ve her oyuncuya dağıtılacak kart sayısını alır. Her oyuncu için boş bir liste oluşturur ve ardından desteden kartları çekerek oyuncuların listelerine ekler. `deste.pop()` fonksiyonu, desteden son kartı çıkarır ve döndürür.

Adım 4: Kartları Karşılaştırma ve Kazananı Belirleme

Şimdi, oyuncuların kartlarını karşılaştırmamız ve kazananı belirlememiz gerekiyor. Bu örnekte, en yüksek değere sahip karta sahip olan oyuncu kazanır. Kartların değerlerini belirlemek için bir fonksiyon yazacağız.


def kart_degeri(kart):
  """Bir kartın değerini hesaplar."""
  kart_degerleri = {
      "As": 14,
      "2": 2,
      "3": 3,
      "4": 4,
      "5": 5,
      "6": 6,
      "7": 7,
      "8": 8,
      "9": 9,
      "10": 10,
      "Vale": 11,
      "Kız": 12,
      "Papaz": 13
  }
  kart_ismi = kart.split()[1]
  return kart_degerleri[kart_ismi]

def kazanani_belirle(oyuncular):
  """Kazanan oyuncuyu belirler."""
  oyuncu1_deger = sum(kart_degeri(kart) for kart in oyuncular[0])
  oyuncu2_deger = sum(kart_degeri(kart) for kart in oyuncular[1])

  print("Oyuncu 1 Toplam Değer: ", oyuncu1_deger)
  print("Oyuncu 2 Toplam Değer: ", oyuncu2_deger)

  if oyuncu1_deger > oyuncu2_deger:
    return "Oyuncu 1 Kazandı!"
  elif oyuncu2_deger > oyuncu1_deger:
    return "Oyuncu 2 Kazandı!"
  else:
    return "Berabere!"

kazanan = kazanani_belirle(oyuncular)
print(kazanan)

Bu kod, `kart_degeri()` fonksiyonunu kullanarak bir kartın değerini hesaplar. Fonksiyon, bir sözlük kullanarak her kartın değerini tanımlar. `kazanani_belirle()` fonksiyonu, her oyuncunun kartlarının toplam değerini hesaplar ve kazananı belirler.

Tam Kod

İşte oyunun tamamı:


import random

renkler = ["Kupa", "Karo", "Maça", "Sinek"]
kartlar = ["As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Vale", "Kız", "Papaz"]

def deste_olustur():
  """İskambil destesinin tamamını oluşturur."""
  deste = []
  for renk in renkler:
    for kart in kartlar:
      deste.append(renk + " " + kart)
  return deste

def desteyi_karistir(deste):
  """İskambil destesindeki kartları karıştırır."""
  random.shuffle(deste)

def kart_dagit(deste, oyuncu_sayisi, kart_sayisi):
  """Oyunculara kart dağıtır."""
  oyuncular = []
  for _ in range(oyuncu_sayisi):
    oyuncular.append([])

  for _ in range(kart_sayisi):
    for i in range(oyuncu_sayisi):
      oyuncular[i].append(deste.pop())

  return oyuncular

def kart_degeri(kart):
  """Bir kartın değerini hesaplar."""
  kart_degerleri = {
      "As": 14,
      "2": 2,
      "3": 3,
      "4": 4,
      "5": 5,
      "6": 6,
      "7": 7,
      "8": 8,
      "9": 9,
      "10": 10,
      "Vale": 11,
      "Kız": 12,
      "Papaz": 13
  }
  kart_ismi = kart.split()[1]
  return kart_degerleri[kart_ismi]

def kazanani_belirle(oyuncular):
  """Kazanan oyuncuyu belirler."""
  oyuncu1_deger = sum(kart_degeri(kart) for kart in oyuncular[0])
  oyuncu2_deger = sum(kart_degeri(kart) for kart in oyuncular[1])

  print("Oyuncu 1 Toplam Değer: ", oyuncu1_deger)
  print("Oyuncu 2 Toplam Değer: ", oyuncu2_deger)

  if oyuncu1_deger > oyuncu2_deger:
    return "Oyuncu 1 Kazandı!"
  elif oyuncu2_deger > oyuncu1_deger:
    return "Oyuncu 2 Kazandı!"
  else:
    return "Berabere!"

deste = deste_olustur()
desteyi_karistir(deste)
oyuncular = kart_dagit(deste, 2, 5)

print("Oyuncu 1: ", oyuncular[0])
print("Oyuncu 2: ", oyuncular[1])

kazanan = kazanani_belirle(oyuncular)
print(kazanan)

Sonuç

Bu makalede, Python kullanarak basit bir kart oyunu geliştirdik. Bu oyun, iskambil destesi oluşturma, kartları karıştırma, oyunculara kart dağıtma ve kazananı belirleme gibi temel oyun geliştirme prensiplerini içermektedir. Bu örneği temel alarak, daha karmaşık kart oyunları geliştirebilirsiniz. Örneğin, poker, blackjack veya iskambil gibi oyunları Python kullanarak kodlayabilirsiniz.

Unutmayın, oyun geliştirme sürekli öğrenmeyi ve denemeyi gerektirir. Bu makaledeki kodu inceleyerek ve değiştirerek, Python ile oyun geliştirme becerilerinizi geliştirebilirsiniz.

İpuçları ve Geliştirmeler

  • Kullanıcı Arayüzü: Oyununuzu daha kullanıcı dostu hale getirmek için bir grafik kullanıcı arayüzü (GUI) ekleyebilirsiniz. Tkinter veya Pygame gibi kütüphaneleri kullanabilirsiniz.
  • Daha Fazla Oyuncu: Oyuncuların sayısını artırabilirsiniz.
  • Farklı Kart Değerlendirme Yöntemleri: Kazananı belirlemek için farklı kart değerlendirme yöntemleri kullanabilirsiniz (örneğin, aynı renkten kartları dikkate alma veya belirli kart kombinasyonlarını değerlendirme).
  • Hata Yönetimi: Kullanıcının yanlış giriş yapmasını önlemek için hata yönetimi ekleyebilirsiniz.

Umarım bu makale, Python ile oyun geliştirme yolculuğunuzda size yardımcı olur!

Cevap bırakın

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