
Proje Açıklaması
so_long, C programlama dilinde ve MinilibX grafik kütüphanesi kullanılarak geliştirilmiş 2D yukarıdan aşağıya (top-down) basit bir macera oyunudur.
Projenin temel amacı; temel grafik programlama kavramlarını öğrenmek, pencere ve görsel sprite yönetimini gerçekleştirmek, klavye/fare girdilerini (events) anlık olarak işlemek ve algoritmik harita analizleri yapmaktır.
- Oyun Mekanikleri: Bir kedinin (Mya) harita üzerindeki tüm sushileri (koleksiyon öğelerini) toplayıp engelleri aşarak en az hamleyle çıkış kapısına ulaşması.
- Klavye Girdileri ve Hareket: WASD veya yön tuşlarıyla karakterin akıcı bir şekilde yönlendirilmesi.
- Harita Doğrulama (Map Validation): Dosyadan okunan haritanın (.ber) etrafının duvarlarla çevrili olması, dikdörtgen yapıda olması ve geçersiz karakter barındırmaması gibi kuralların kontrolü.
- Flood Fill Algoritması: Oyun başlamadan önce haritada çıkış kapısına ve tüm toplanabilir öğelere ulaşan geçerli bir yolun (kazanılabilir bir senaryonun) olup olmadığının doğrulanması.
- Hamle Sayacı: Oyuncunun attığı her adımın terminalde anlık olarak yazdırılarak hamle takibinin yapılması.
README.md Dosyasını Görüntüle
So_long - 2D Küçük Oyun Projesi
Proje Hakkında
so_long, Ecole 42 müfredatının bir parçası olan, MinilibX kütüphanesi kullanılarak C dilinde geliştirilmiş 2D basit bir oyun projesidir. Projenin amacı, grafik programlamaya giriş yapmak, pencere yönetimi, olay (event) işleme ve temel oyun mantığını kavramaktır.
Bu sürümde, bir kedinin (Mya) haritadaki sushileri toplayarak çıkışa ulaşması hedeflenmektedir.
Özellikler
- Grafik Arayüzü: MinilibX (X11) kullanılarak pencereli grafik yapısı.
- Harita Doğrulama: Haritanın dikdörtgen olup olmadığı, duvarlarla çevrili olup olmadığı ve geçerli bir yol (Flood Fill algoritması) içerip içermediği kontrol edilir.
- Hamle Sayacı: Oyuncunun yaptığı her geçerli hamle terminal üzerinden takip edilebilir.
Gereksinimler
Projenin derlenmesi ve çalıştırılması için aşağıdaki kütüphanelerin sisteminizde yüklü olması gerekir:
Linux (Ubuntu/Debian)
MinilibX'in düzgün çalışması için X11 ve ilgili geliştirme paketleri gereklidir:
sudo apt-get update
sudo apt-get install cc make xorg libxext-dev libbsd-dev
Derleme ve Çalıştırma
Derleme
Proje kök dizininde Makefile dosyasını kullanarak projeyi derleyebilirsiniz:
make
Bu komut sonucunda so_long adında bir çalıştırılabilir dosya oluşacaktır.
Çalıştırma
Programı çalıştırmak için bir harita dosyası (.ber uzantılı) parametre olarak verilmelidir:
./so_long maps/map.ber
Makefile Komutları
make: Programı derler.make clean: Nesne (.o) dosyalarını siler.make fclean: Nesne dosyalarını ve çalıştırılabilir programı siler.make re: Her şeyi silip yeniden derler.
Kontroller
Oyunu aşağıdaki tuşlarla kontrol edebilirsiniz:
- W: Yukarı Hareket
- A: Sola Hareket
- S: Aşağı Hareket
- D: Sağa Hareket
- ESC: Oyundan Çıkış
Harita Kuralları
Harita dosyası .ber uzantılı olmalı ve aşağıdaki karakterlerden oluşmalıdır:
1: Duvar0: ZeminP: Oyuncunun Başlangıç KonumuC: Toplanabilir Nesne (Sushi)E: Çıkış Kapısı
Önemli Notlar:
- Harita duvarlarla tamamen çevrili olmalıdır.
- Harita dikdörtgen olmalıdır.
- Haritada en az 1 oyuncu (P), 1 çıkış (E) ve en az 1 toplanabilir nesne (C) bulunmalıdır.
- Oyuncunun tüm nesnelere ve çıkışa ulaşabileceği geçerli bir yol bulunmalıdır.
Örnek Harita
Aşağıda geçerli bir harita (map.ber) örneği verilmiştir:
1111111111111
1001000000001
10010111110P1
10000000C0001
1111111E11111
Klasör Yapısı
src/: Kaynak kod dosyaları.include/: Başlık (.h) dosyaları.maps/: Örnek harita dosyaları.images/: Oyun içi görseller (XPM formatında).libft/: Özel C kütüphanesi fonksiyonları.minilibx/: Grafik kütüphanesi.