Skip to content

Semai-Mirac/C_ile_Mario_Test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Super Mario C++ v3 (SDL2)

Bu proje, C++ ve SDL2 kullanilarak gelistirilmis (Orjinali Süper Mario olan) 2D platform oyunu prototipidir. Proje; menu sistemi, karakter secimi, seviye yukleme, carpisma, dusman davranisi ve HUD gibi temel platform oyunu bilesenlerini icerir.

Not: Proje, klasik Mario deneyiminden ilham alınıp ve bazı yerlerini kopyalanmış ozgun bir uygulamadir. Bu uygulama kesinlikle eğlenme ve eğlendirmek amacıyla yapılmamıştır, sadece C++ kod yapısını ve düzenini anlamak üzere yazılmıştır.

One Cikan Ozellikler

  • SDL2 ile gercek zamanli 2D render
  • Menu ekrani, karakter secim ekrani ve oyun akisi
  • Tile tabanli seviye sistemi
  • .txt dosyasindan seviye okuma (fallback destekli)
  • Soru bloklari, tugla bloklar, borular, zemin ve sert bloklar
  • Bayrak diregi ve kale hedef sistemi
  • Goomba benzeri dusmanlar ve temel AI hareketi
  • Coin toplama, skor sistemi ve can sistemi
  • Oyun sonu / seviye tamamlama ekranlari

Kullanilan Teknolojiler

Diller

  • C++17: Oyun mantigi, veri yapilari, render cagirilari, seviye parse islemleri
  • PowerShell / Batch: Derleme ve yerel gelistirme komutlari

Kutuphaneler

  • SDL2 (SDL.h):
    • Pencere yonetimi (SDL_Window)
    • Render altyapisi (SDL_Renderer)
    • Olay sistemi (SDL_Event, klavye/fare girisleri)
    • Basit 2D cizim (SDL_RenderFillRect, SDL_RenderDrawLine)

Araclar

  • MSVC (cl.exe): Windows uzerinde C++ derleme
  • VS Code: Kod duzenleme, gorevler ve C/C++ IntelliSense

Proje Yapisi

  • mario.cpp: Oyunun ana kaynagi (render, update, input, seviye yukleme, carpisma)
  • level_world_1_1_like.txt: Tile tabanli dis seviye dosyasi
  • SDL2.dll: Calistirma zamani SDL2 bagimliligi
  • build_mario.bat: Windows icin derleme kolaylastirici script
  • .vscode/c_cpp_properties.json: IntelliSense include/derleyici ayarlari
  • .vscode/tasks.json: VS Code gorevleri

Seviye Sistemi (TXT Tabanli)

Seviye dosyasi oyun basinda okunur:

  • Dosya yolu: level_world_1_1_like.txt
  • Kod tarafi: mario.cpp icindeki initLevel()

Eger dosya okunamazsa, oyun icinde fallback harita devreye girer.

Desteklenen Harita Sembolleri

  • . : Gokyuzu / bosluk
  • X : Zemin (GROUND)
  • : Tugla (BRICK)

  • ? : Soru blogu (QUESTION)
  • [ : Boru sol ust
  • ] : Boru sag ust
  • | : Boru govdesi
  • H : Sert blok (merdiven benzeri yapi)
  • B : Bayrak diregi isaretleyici
  • K : Kale isaretleyici

Boru parse mantigi [] + || satirlarini birlestirerek tek bir boru govdesi olusturur.

Oyun Mimarisi

Durum Yonetimi

GameState enum ile uc temel durum yonetilir:

  • MENU
  • CHAR_SELECT
  • PLAYING

Ana Dongu

  • Event polling (SDL_PollEvent)
  • Duruma gore update/render
  • Basit frame pacing (SDL_GetTicks, SDL_Delay)

Carpisma

  • AABB tabanli carpisma
  • MTV (minimum translation vector) ile ayristirma
  • X/Y ekseninde ayri cozumleme

Oyun Objeleri

  • Player
  • Enemy
  • Platform
  • Coin
  • Particle

Bu yapilar vektorlerde tutulur ve her frame update edilir.

Karakter, HUD ve Etkilesim

  • Karakter secim ekrani (kilitli karakterler / puanla acma)
  • HUD: skor ve can
  • Oyun sonu ekrani + menuye donus
  • Seviye tamamlandi ekrani + toplam skor gosterimi

Derleme ve Calistirma

Gereksinimler

  • Windows
  • Visual Studio C++ toolchain (cl.exe)
  • SDL2 headers + libs + dll

Ornek Derleme Komutu

cl.exe /EHsc /MD /I "C:\SDL2_extract\SDL2-2.30.3\include" mario.cpp /link /LIBPATH:"C:\SDL2_extract\SDL2-2.30.3\lib\x64" SDL2.lib SDL2main.lib /SUBSYSTEM:CONSOLE

Calistirma

Derleme sonrasi:

  • mario.exe

SDL2.dll dosyasi ayni klasorde bulunmalidir.

Kontroller

  • A / D: Hareket
  • W veya Space: Zipla
  • ESC: Cikis
  • Menu/ekran gecisleri: klavye + fare destegi

Bu Projede Yapilan Iyilestirmeler (Ozet)

  • Seviye verisi kod icinden dis dosyaya tasindi (.txt loader)
  • Harita sembol standardi genisletildi ve parser uyumlulugu artirildi
  • Boru parse mantigi ([] + ||) duzeltildi
  • Boru gorseli NES stiline daha yakin hale getirildi
  • Menu/karakter secim hitbox ve etkilesim hatalari giderildi
  • Derleme sonrasi gecici dosya/artik temizligi standardize edildi

Gelistirme Notlari

  • Proje tek dosya (mario.cpp) uzerinde ilerlemektedir.
  • Bir sonraki dogal adim, kodu modullere bolmektir:
    • renderer.*
    • level_loader.*
    • entities.*
    • game_state.*

Bu ayrim test edilebilirlik, bakim ve yeni ozellik ekleme hizini ciddi bicimde artirir.

Lisans

Depoya eklenecek lisans dosyasina gore guncellenmelidir (oneri: MIT).

About

C++ dilin yapısını ve kullanımını popüler bir oyun kodu üzerinden anlamaya çalışmak

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors