So_Long

So_Long

Kullanılan Teknolojiler

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: 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.