2d oyun yada uygulama yapanlar veya yapacak olan arkadaşlara basit bir rehber olarak orjinali bu sitede olan css sprite sheets örneğini python ortamında tasarlatarak sizlere sunuyorum. Şu anda bu projeden bağımsız 2d basit bir oyun tasarlıyorum.

PROJEYİ TAM HALİNDE İNDİR
Ken Street Fighter – Python ile 2D Oyun Geliştirme
Giriş
Bu Python betiği, Pygame kütüphanesi kullanılarak geliştirilmiş basit bir 2D dövüş oyunu prototipidir. Oyun, Street Fighter serisinden esinlenilmiş bir karakter olan "Ken" üzerine odaklanır. Oynanış, animasyonlar, kontroller ve temel dövüş mekaniği gibi önemli unsurlar içerir.
Kullanılan Teknolojiler
- Python 3: Programlama dili.
- Pygame: 2D grafikler, sesler ve oyun döngüsü için kullanılan oyun geliştirme kütüphanesi.
- Sprite Animasyonlar: Karakter hareketleri için sprite sheet'ler kullanılır.
1. Temel Yapı
Kodun başlangıcında gerekli modüller içe aktarılır:
import os
import sys
import pygame
Bu modüller; dosya yönetimi, sistem kontrolü ve oyun motoru için kullanılır.
Sabitler ve Ayarlar
SPRITE_WIDTH = 70
SPRITE_HEIGHT = 80
FPS = 60
SCREEN_WIDTH = 900
SCREEN_HEIGHT = 400
- Ekran boyutları, karakter sprite'larının genisşliği ve yüksekliği tanımlanır.
- FPS (Frame Per Second): Oyunun kaç karede bir güncellenmesi gerektiğini belirler.
2. Animasyon Sistemi
Animasyonlar, sprite sheet'lerdeki görsellerin belirli bir sırada oynatılmasıyla oluşturulur:
ANIMATIONS = {
'stance': {'sheet': 'ken', 'row': 1, 'frames': 4, 'duration': 500},
'punch': {'sheet': 'ken', 'row': 2, 'frames': 3, 'duration': 150},
...
}
Her animasyonun;
- Sprite sheet dosyası (sheet),
- Kaç kareden oluştuğu (frames),
- Ne kadar süreyle oynatılacağı (duration) belirtilmiştir.
Sprite Yükleme Fonksiyonu
def load_image(filename, colorkey=None):
image = pygame.image.load(path).convert_alpha()
return image
Bu fonksiyon, oyun içerisinde kullanılacak görselleri yükler.
3. Fireball (Hadoken) Sınıfı
Ken'in "Hadoken" hareketini temsil eden Fireball sınıfı, ateşlenebilir enerji topunu kontrol eder.
class Fireball:
def __init__(self, x, y, direction=1):
self.speed = 8
self.direction = direction
- update(): Ateş topunun hareketini ve animasyonunu günceller.
- draw(): Ateş topunu ekrana çizer.
4. Fighter (Ken) Sınıfı
Ken'in tüm hareketlerini yönetir:
class Fighter:
def do_punch(self):
self.set_animation('punch')
def do_hadoken(self):
return Fireball(self.x, self.y, self.direction)
- do_punch(), do_kick(), do_jump() gibi metodlarla Ken'in hareketleri kontrol edilir.
- update(): Ken'in konumunu ve animasyon durumunu günceller.
5. Oyun Döngüsü
Ana oyun döngüsü main()
fonksiyonu içerisinde tanımlanır:
def main():
while running:
dt = clock.tick(FPS)
ken.update(dt)
fireball.update(dt)
screen.blit(bg, (0, 0))
Bu döngü;
- Olay dinleme (klavye kontrolleri),
- Oyun mantığının güncellenmesi,
- Ekranın yeniden çizilmesi süreçlerini yönetir.
6. Klavye Kontrolleri
Oyuncu, klavye ile Ken’i kontrol edebilir:
- Hareket: ← (sol), → (sağ)
- Zıplama: ↑ (yukarı)
- Yumruk: A, F, G, H
- Tekme: Z, X, C
- Hadoken: S
Kullanıcı, ENTER tuşuna basarak kontrolleri gösteren bir popup ekran açabilir.
7. Görsel Arayüz ve Bilgi Popup'u
def draw_popup(surface, font):
pygame.draw.rect(surface, (240, 240, 240), popup_rect)
Bu fonksiyon, kontroller hakkında bilgiler içeren bir popup ekranı çizer.
8. Sonuç
Bu kod, Pygame kullanarak basit bir 2D dövüş oyununu nasıl geliştirilebileceğini gösterir.
- Sprite animasyonları,
- Karakter hareketleri,
- Klavye kontrol sistemleri,
- Oyun döngüsü gibi temel oyun geliştirme konseptlerini içerir.
Bu yapıyı geliştirerek daha karmaşık oyunlara adım atabilirsiniz.
Geliştirme Önerileri
- Rakip karakter eklemek.
- Skor sistemi ve can barı.
- Ses efektleri ve arka plan müzikleri.
- Multiplayer desteği ile PvP modu oluşturma.