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

Pygame ile Futbol Oyunu Kodlama Rehberi: Adım Adım 2D Futbol Oyunu Geliştirme

Pygame ile Futbol Oyunu Kodlama Rehberi

Pygame ile Futbol Oyunu Kodlama Rehberi: Adım Adım 2D Futbol Oyunu Geliştirme

Bu makalede, popüler Python oyun geliştirme kütüphanesi Pygame kullanarak basit bir 2D futbol oyunu nasıl geliştireceğinizi adım adım anlatacağım. Bu rehber, Pygame'e yeni başlayanlar için uygundur ve temel oyun geliştirme prensiplerini anlamanıza yardımcı olacaktır.

Gereksinimler

Başlamadan önce, aşağıdaki gereksinimlerin karşılandığından emin olun:

  • Python (3.6 veya üzeri)
  • Pygame kütüphanesi (pip install pygame komutuyla kurulabilir)

Oyunun Temel Yapısı

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

  1. Oyun penceresini oluşturma
  2. Oyun nesnelerini (oyuncular, top, kale vb.) tanımlama
  3. Oyun döngüsünü (game loop) oluşturma
  4. Kullanıcı girdilerini (klavye, fare) işleme
  5. Oyun nesnelerini güncelleme (konum, hız vb.)
  6. Oyun nesnelerini ekrana çizme
  7. Çarpışma algılama
  8. Skor tutma

Adım 1: Oyun Penceresini Oluşturma

İlk adım olarak, oyun penceresini oluşturmamız gerekiyor. Bu, Pygame'in pygame.init() fonksiyonu ile başlatılması ve pygame.display.set_mode() fonksiyonu ile pencere boyutunun belirlenmesiyle yapılır.


import pygame

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

# Pencere boyutları
width = 800
height = 600

# Pencere oluştur
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Pygame Futbol Oyunu")

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

  # Arka planı temizle
  screen.fill((0, 128, 0)) # Yeşil arka plan

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

# Pygame'i kapat
pygame.quit()

Bu kod, 800x600 boyutlarında bir pencere oluşturur ve yeşil bir arka planla doldurur. Oyun döngüsü, pencere kapatılana kadar çalışmaya devam eder.

Adım 2: Oyun Nesnelerini Tanımlama

Şimdi, oyun nesnelerini tanımlamamız gerekiyor. Bu örnekte, iki oyuncu, bir top ve iki kale oluşturacağız. Her bir nesne için bir sınıf tanımlayabiliriz.


class Oyuncu(pygame.sprite.Sprite):
  def __init__(self, x, y, renk):
    super().__init__()
    self.image = pygame.Surface([20, 20])
    self.image.fill(renk)
    self.rect = self.image.get_rect()
    self.rect.x = x
    self.rect.y = y
    self.hiz = 5

  def update(self, tuslar):
    if tuslar[pygame.K_LEFT]:
      self.rect.x -= self.hiz
    if tuslar[pygame.K_RIGHT]:
      self.rect.x += self.hiz
    if tuslar[pygame.K_UP]:
      self.rect.y -= self.hiz
    if tuslar[pygame.K_DOWN]:
      self.rect.y += self.hiz

class Top(pygame.sprite.Sprite):
  def __init__(self, x, y):
    super().__init__()
    self.image = pygame.Surface([15, 15])
    self.image.fill((255, 255, 255)) # Beyaz top
    self.rect = self.image.get_rect()
    self.rect.x = x
    self.rect.y = y
    self.hiz_x = 3
    self.hiz_y = 3

  def update(self):
    self.rect.x += self.hiz_x
    self.rect.y += self.hiz_y

    # Duvarlara çarpma
    if self.rect.left  width:
      self.hiz_x *= -1
    if self.rect.top  height:
      self.hiz_y *= -1

class Kale(pygame.sprite.Sprite):
  def __init__(self, x, y, boyut_x, boyut_y, renk):
    super().__init__()
    self.image = pygame.Surface([boyut_x, boyut_y])
    self.image.fill(renk)
    self.rect = self.image.get_rect()
    self.rect.x = x
    self.rect.y = y

Bu kod, Oyuncu, Top ve Kale sınıflarını tanımlar. Her sınıf, pygame.sprite.Sprite sınıfından türetilmiştir ve temel özellikleri (konum, boyut, renk) ve davranışları (hareket) içerir.

Adım 3: Oyun Nesnelerini Oluşturma ve Ekrana Çizme

Şimdi, oyun nesnelerini oluşturup ekrana çizmemiz gerekiyor.


# Oyuncuları oluştur
oyuncu1 = Oyuncu(100, 300, (255, 0, 0)) # Kırmızı oyuncu
oyuncu2 = Oyuncu(700, 300, (0, 0, 255)) # Mavi oyuncu

# Topu oluştur
top = Top(400, 300)

# Kaleleri oluştur
kale1 = Kale(0, 250, 20, 100, (255, 255, 255))
kale2 = Kale(780, 250, 20, 100, (255, 255, 255))

# Tüm sprite'ları grupla
tum_spriteler = pygame.sprite.Group()
tum_spriteler.add(oyuncu1)
tum_spriteler.add(oyuncu2)
tum_spriteler.add(top)
tum_spriteler.add(kale1)
tum_spriteler.add(kale2)

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

  # Kullanıcı girdilerini al
tuslar = pygame.key.get_pressed()

  # Oyuncuları güncelle
oyuncu1.update(tuslar)

  # Topu güncelle
top.update()

  # Çarpışma algılama (oyuncu ve top)
  if pygame.sprite.collide_rect(oyuncu1, top):
    top.hiz_x *= -1
    top.hiz_y *= -1
  if pygame.sprite.collide_rect(oyuncu2, top):
    top.hiz_x *= -1
    top.hiz_y *= -1

  # Arka planı temizle
  screen.fill((0, 128, 0))

  # Tüm sprite'ları çiz
tum_spriteler.draw(screen)

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

  # Frame rate'i ayarla
  pygame.time.Clock().tick(60)

# Pygame'i kapat
pygame.quit()

Bu kod, oyuncuları, topu ve kaleleri oluşturur ve pygame.sprite.Group kullanarak tüm sprite'ları gruplar. Ardından, oyun döngüsünde, kullanıcı girdilerini alır, oyuncuları ve topu günceller, çarpışma algılar ve tüm sprite'ları ekrana çizer.

Adım 4: Skor Tutma ve Oyun Sonunu Yönetme

Şimdi, skor tutma ve oyun sonunu yönetme işlevselliğini ekleyelim.


# Skorları tanımla
skor1 = 0
skor2 = 0

# Fontu tanımla
font = pygame.font.Font(None, 36)

# ... (Önceki kod buraya gelecek) ...

  # Çarpışma algılama (top ve kale)
  if pygame.sprite.collide_rect(top, kale1):
    skor2 += 1
    top.rect.x = 400
    top.rect.y = 300
  if pygame.sprite.collide_rect(top, kale2):
    skor1 += 1
    top.rect.x = 400
    top.rect.y = 300

  # Skoru ekrana yazdır
skor_yazisi = font.render(f"Kırmızı: {skor1} - Mavi: {skor2}", True, (255, 255, 255))
screen.blit(skor_yazisi, (300, 10))

  # Oyun sonu kontrolü
  if skor1 >= 5 or skor2 >= 5:
    oyun_sonu_yazisi = font.render("Oyun Bitti!", True, (255, 255, 255))
    screen.blit(oyun_sonu_yazisi, (350, 200))
    pygame.display.flip()
    pygame.time.delay(3000) # 3 saniye bekle
    running = False

  # ... (Sonraki kod buraya gelecek) ...

Bu kod, skorları tutar, bir font tanımlar ve skoru ekrana yazdırır. Ayrıca, topun kalelerle çarpışmasını algılar ve skorları günceller. Bir oyuncu 5 puana ulaştığında, oyun biter ve bir mesaj görüntülenir.

Sonuç

Bu makalede, Pygame kullanarak basit bir 2D futbol oyunu nasıl geliştireceğinizi öğrendiniz. Bu rehber, temel oyun geliştirme prensiplerini anlamanıza ve kendi oyunlarınızı geliştirmeye başlamanıza yardımcı olacaktır. Bu oyunu daha da geliştirmek için, yapay zeka, daha karmaşık hareketler, ses efektleri ve daha fazlasını ekleyebilirsiniz.

Ek Fikirler

  • Yapay Zeka: Oyuncuların kendi başlarına hareket etmesini sağlayacak basit bir yapay zeka ekleyebilirsiniz.
  • Daha Karmaşık Hareketler: Oyunculara şut çekme, kayma gibi farklı hareketler ekleyebilirsiniz.
  • Ses Efektleri: Topa vurulduğunda veya gol olduğunda ses efektleri ekleyebilirsiniz.
  • Grafikleri İyileştirme: Daha detaylı ve çekici grafikler kullanabilirsiniz.
  • Online Çok Oyunculu Mod: Oyunu online olarak birden fazla oyuncunun oynamasını sağlayabilirsiniz.
Cevap bırakın

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