Önceki Ders 5 / 10

🏗️ Yapılar (Struct)

🎮 Ortaokul Bu derste: Pokemon gibi yaratıklar tasarla!
📚 Lise Bu derste: Özel veri tipleri oluştur
🎓 Üniversite Bu derste: Data modeling, encapsulation ve builder pattern

🎒 Kendi Yaratığını Tasarla!

Struct = Şablon! Bir yaratığın tüm özelliklerini bir arada tutabilirsin.

📝 Örnek 1: Evcil Hayvan Oyunu

🐾 pet.berk
// 🐾 Evcil hayvan şablonu
yapi EvcilHayvan {
    isim: metin,
    tur: metin,
    yas: tamsayı,
    mutluluk: tamsayı,
    aclik: tamsayı,
}

// Evcil hayvana özellikler ekle
impl EvcilHayvan {
    // Yeni hayvan oluştur
    fonksiyon yeni(isim: metin, tur: metin) -> EvcilHayvan {
        don EvcilHayvan {
            isim: isim,
            tur: tur,
            yas: 0,
            mutluluk: 50,
            aclik: 50,
        };
    }
    
    // Besle 🍖
    fonksiyon besle(&mut self) {
        self.aclik = self.aclik - 20;
        self.mutluluk = self.mutluluk + 10;
        yazdir("🍖 {} yemek yedi! Mutluluk: {}", self.isim, self.mutluluk);
    }
    
    // Oyna 🎾
    fonksiyon oyna(&mut self) {
        self.mutluluk = self.mutluluk + 20;
        self.aclik = self.aclik + 10;
        yazdir("🎾 {} ile oynadın! Mutluluk: {}", self.isim, self.mutluluk);
    }
    
    // Durum göster
    fonksiyon durum(&self) {
        yazdir("╔══════════════════╗");
        yazdir("║ 🐾 {} ({})     ", self.isim, self.tur);
        yazdir("║ 😊 Mutluluk: {}  ", self.mutluluk);
        yazdir("║ 🍖 Açlık: {}     ", self.aclik);
        yazdir("╚══════════════════╝");
    }
}

fonksiyon ana() {
    değişken mut kopek = EvcilHayvan::yeni("Karabaş", "🐕 Köpek");
    
    kopek.durum();
    kopek.oyna();
    kopek.besle();
    kopek.durum();
}

📝 Örnek 2: Monster Kartları

👾 monsters.berk
yapi Canavar {
    isim: metin,
    element: metin,
    can: tamsayı,
    saldiri: tamsayı,
    savunma: tamsayı,
}

impl Canavar {
    fonksiyon kart_goster(&self) {
        yazdir("┌─────────────────────┐");
        yazdir("│ {} {}              ", self.element, self.isim);
        yazdir("├─────────────────────┤");
        yazdir("│ ❤️  HP: {:3}         │", self.can);
        yazdir("│ ⚔️  ATK: {:3}        │", self.saldiri);
        yazdir("│ 🛡️  DEF: {:3}        │", self.savunma);
        yazdir("└─────────────────────┘");
    }
    
    fonksiyon saldir(&self, hedef: &mut Canavar) {
        değişken hasar = self.saldiri - hedef.savunma;
        eğer hasar > 0 yap
            hedef.can = hedef.can - hasar;
            yazdir("💥 {} -> {} için {} hasar!", self.isim, hedef.isim, hasar);
        değilse yap
            yazdir("🛡️ Saldırı engellendi!");
        son
    }
}

fonksiyon ana() {
    değişken mut ejderha = Canavar {
        isim: "Ateş Ejderhası",
        element: "🔥",
        can: 100,
        saldiri: 40,
        savunma: 20,
    };
    
    değişken mut golem = Canavar {
        isim: "Kaya Golemi",
        element: "🪨",
        can: 150,
        saldiri: 25,
        savunma: 35,
    };
    
    ejderha.kart_goster();
    golem.kart_goster();
    
    yazdir("\n⚔️ SAVAŞ!\n");
    ejderha.saldir(&mut golem);
    golem.kart_goster();
}

📌 Özet