You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
This project aims to teach you object-oriented programming principles by creating a class hierarchy in C++. It starts with a basic ClapTrap class and then adds derived classes such as ScavTrap, FragTrap, and DiamondTrap.
Bu proje, nesne yönelimli programlama (OOP) prensiplerini kullanarak temel bir oyun karakteri simülasyonu gerçekleştirmektedir. `ClapTrap`, `ScavTrap` ve `FragTrap` sınıfları, karakterlerin özelliklerini ve yeteneklerini modellemek amacıyla miras alma (inheritance) özelliğinden faydalanmaktadır. Her bir sınıf, kendine özgü özellikler ve metotlar içerirken, üst sınıfın (ClapTrap) temel işlevselliğinden yararlanmaktadır.
Hedefe saldırı yapar, hasar verir. Enerji puanı 1 azalır.
voidClapTrap::attack(const std::string& target) {// Eğer ClapTrap'in hitPoint veya energyPoint'i 0 veya daha düşükseif(this->hitPoint <=0 ||this->energyPoint <=0) { std::cout <<"I cannot do anything" << std::endl;// Yapamayacağını belirtreturn;// Fonksiyondan çık }// Enerji puanı varsa saldırı yapif(this->energyPoint >0) { std::cout <<this->name <<" attacks" << target <<" causing" <<this->attackDamage <<" damage!\n";this->energyPoint -=1;// Enerji puanını azalt } }
void takeDamage(unsigned int amount);
Belirtilen miktarda hasar alır.
voidClapTrap::takeDamage(unsignedint amount) {// Mevcut hit point'leri göster std::cout <<this->name <<" Hit points:" <<this->hitPoint <<" points\n";// Eğer hit point'ler 0 veya daha düşükse, fonksiyondan çıkif(this->hitPoint <=0)return;// Eğer hasar miktarı 0'dan büyükseif(int(amount) >0) { std::cout <<this->name <<" has taken" << (int)amount <<" damage!" << std::endl;// Hasar mesajı yazdırthis->hitPoint -= (int)amount;// Hit point'leri azalt }// Eğer hit point'ler 0 veya daha düşükse, ölüm mesajı yazdırif(this->hitPoint <=0) { std::cout <<this->name <<" dies..\n"; } }
void beRepaired(unsigned int amount);
Belirtilen miktarda can yeniler. Enerji puanı 1 azalır.
voidClapTrap::beRepaired(unsignedint amount) {// Mevcut hit point'leri göster std::cout <<this->name <<" Hit points:" <<this->hitPoint <<" points\n";// Eğer hit point'ler veya enerji puanları 0 veya daha düşükse, fonksiyondan çıkif(this->hitPoint <=0 ||this->energyPoint <=0) { std::cout <<"I cannot do anything" << std::endl;// Yapamayacağını belirtreturn; }// Eğer enerji puanı varsa ve onarıma uygun bir miktar belirtilmişseif(this->energyPoint >0 && (int)amount >=0) { std::cout <<this->name <<" healed" << amount <<" points\n";// Onarım mesajı yazdırthis->hitPoint += (int)amount;// Hit point'leri artırthis->energyPoint -=1;// Enerji puanını azalt }// Yeni hit point'leri göster std::cout <<this->name <<" New Hit points:" <<this->hitPoint <<" points\n"; }
Mesajlar:
Her fonksiyon çağrıldığında, durumu belirten bir mesaj yazdırmalıdır.
Yapıcı ve yıkıcı fonksiyonlar için de mesaj gösterilmelidir.
Ex01 - Serena, my love!
Gereksinimler
ScavTrap Sınıfı:
ClapTrap Sınıfından Türetilecektir:
Yapıcı ve yıkıcı fonksiyonları ClapTrap'tan miras alacak.
kod
ScavTrap::ScavTrap(std::string name) : ClapTrap(name) {// Hit points, energy points ve attack damage değerlerini ayarlathis->setVar(name,100,50,20);// ScavTrap yapıcısının çağrıldığını belirt std::cout <<this->getName() <<": ScavTrap Constructor call\n"; }
Not :ScavTrap sınıfıClapTrap sınıfından miras aldığı için, kendi değerlerinisetVar(name, 100, 50, 20); gibi bir fonksiyon kullanarak atar
Saldırı (attack()) fonksiyonu farklı bir mesaj yazdıracak.
Bu fonksiyon, pozitif bir "high five" isteği yazdıracak.
voidFragTrap::highFivesGuys(void) {// Eğer hit point'ler 0 veya daha düşükse, fonksiyondan çıkif(this->getHitPoint() <=0)return;// FragTrap'ın high five isteğini yazdır std::cout <<this->getName() <<": GIVE ME A FIVER, MAN!\n"; }
Yapıcı ve Yıkıcı İşlemleri:
FragTrap oluşturulurken, önceClapTrap oluşturulmalı ve ardındanFragTrap yapıcısı kendi değerlerini ayarlamalıdır. Tersine yok etme sırası korunmalıdır.
Miras Alma (inheritance) Nedir?
Miras alma (inheritance), nesne yönelimli programlamada (OOP) kullanılan bir kavramdır. Bir sınıfın (üst sınıf) özelliklerinin (değişkenler ve metotlar) başka bir sınıf (alt sınıf) tarafından devralınması anlamına gelir. Bu, kodun yeniden kullanılabilirliğini artırır ve daha temiz, düzenli bir yapı sağlar.
Temel Kavramlar
Üst Sınıf (Base Class): Diğer sınıflar tarafından kullanılabilecek genel özellikler ve metotlar içerir. Örneğin,ClapTrap sınıfı.
Alt Sınıf (Derived Class): Üst sınıftan miras alan sınıf. Üst sınıfın özelliklerini devralır ve kendi özel özelliklerini ekleyebilir. Örneğin,ScavTrap veFragTrap.
Miras Alma Türleri
Tek Miras: Bir alt sınıf yalnızca bir üst sınıftan miras alır.
Çoklu Miras: Bir alt sınıf birden fazla üst sınıftan miras alabilir.
Hiyerarşik Miras: Bir üst sınıf birden fazla alt sınıfa sahiptir.
Neden Kullanılır?
Kod Yeniden Kullanımı: Ortak özellikler ve metotlar bir üst sınıfta tanımlanarak alt sınıflarda tekrar yazılmasına gerek kalmaz.
Daha İyi Organizasyon: İlgili sınıflar arasında hiyerarşi oluşturarak kodun düzenli ve okunabilir olmasını sağlar.
Polimorfizm: Alt sınıfların, üst sınıfın metotlarını özelleştirerek farklı davranışlar sergilemesine olanak tanır.
Yukarıdaki örnekte ScavTrap, ClapTrap sınıfından miras alır ve attack() metodunu devralır, ayrıca kendi özel metodunu tanımlar.
2025 This project was created by Derya ACAR.
About
This project aims to teach you object-oriented programming principles by creating a class hierarchy in C++. It starts with a basic ClapTrap class and then adds derived classes such as ScavTrap, FragTrap, and DiamondTrap.