So_Long

C
Grafik Programlama
Oyun Geliştirme
So_Long

Kullanılan Teknolojiler

C
MinilibX

Proje Açıklaması

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ı pencere yönetimi, olay (event) işleme ve temel oyun mekaniklerini öğrenmektir.

Projede, bir kedinin (Mya) haritadaki sushileri toplayıp engelleri aşarak en az hamleyle çıkışa ulaşması hedeflenir. Harita doğrulaması için Flood Fill algoritması kullanılmıştır.

  • MinilibX grafik kütüphanesi (X11) ile pencere, görüntü ve klavye/fare olayı (event handling) yönetimi yapıldı.
  • Flood Fill algoritması ile haritanın geçerli bir çıkış yoluna sahip olup olmadığı kontrol edildi.
  • Hamle sayısı hesabı ve harita formatı (.ber) doğrulama sistemi geliştirildi.

README.md

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: Duvar
  • 0: Zemin
  • P: Oyuncunun Başlangıç Konumu
  • C: 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.