Bu makalede, C# kullanarak iki karakterin birbirine vurduğu ve savunmalarını azalttığı basit bir savaş oyunu uygulaması geliştireceğiz. Projede, Windows Forms arayüzü ile kullanıcı dostu bir deneyim sunarken, Object-Oriented Programming (OOP) yaklaşımı ile Karakter sınıfı oluşturacağız.
Projenin Amacı
Bu proje, C# dilindeki sınıf yapısını, özellikleri (Properties), metotları ve Windows Forms bileşenlerini kullanarak temel bir oyun mekaniği oluşturmayı hedefliyor. İki oyuncu, seçtikleri karakterler ile sırayla birbirlerine saldıracak ve savunmaları tükendiğinde kazanan belirlenecek.
Kullanılan Teknolojiler
- C# (Object-Oriented Programming)
- Windows Forms (Görsel Arayüz)
- Visual Studio 2022 Community
Proje Yapısı
Proje, iki ana bileşenden oluşuyor:
- Karakter Sınıfı: Karakter özellikleri ve vurma mekaniğini içerir.
- Form Arayüzü: Kullanıcıların karakter oluşturmasını ve saldırı yapmasını sağlar.
1. Karakter Sınıfı
Karakter sınıfı, karakterlerin adını, rolünü, defansını ve vuruş gücünü tanımlıyor. Ayrıca, karakterin diğerine saldırmasını sağlayan Vur()
metodu bulunuyor.
Karakter Özellikleri ve Yapıcı Metot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | internal class Karakter { string ad; string rol; int defans; int vurusGucu; public string Ad { get => ad; set => ad = value; } public string Rol { get => rol; set => rol = value; } public int Defans { get => defans; set => defans = value; } public int VurusGucu { get => vurusGucu; set => vurusGucu = value; } public Karakter(string ad, string rol) { Random rnd = new Random(); Ad = ad; Rol = rol; if (Rol == "Agresif") { Defans = rnd.Next(60, 90); VurusGucu = rnd.Next(4, 10); } else if (Rol == "Dengeli") { Defans = rnd.Next(65, 95); VurusGucu = rnd.Next(4, 8); } else { Defans = rnd.Next(70, 100); VurusGucu = rnd.Next(3, 8); } } } |
Açıklamalar:
- Ad ve Rol: Karakterin adı ve rolü (
Agresif
,Dengeli
,Defansif
) belirleniyor. - Defans ve Vuruş Gücü: Karakterin rolüne göre rastgele atanıyor.
- Random sınıfı ile değerler dinamik olarak belirleniyor.
Vur() Metodu
Vur()
metodu, karakterin diğerine saldırmasını ve savunma puanını azaltmasını sağlıyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public string Vur(Karakter karakter) { Random rnd = new Random(); string s = ""; int vurus = rnd.Next(0, this.VurusGucu); karakter.Defans = Math.Max(0, karakter.Defans - vurus); if (karakter.Defans == 0) { s = this.Ad + " Kazandı."; } else { s = String.Format("Vuran: {0}\nVuruş Gücü: {1}", this.Ad, vurus); if (vurus == 0) { s += "\nIskaladın."; } else if (vurus < 3) { s += "\nSıyırdı."; } else { s += "\nİyi Vuruş."; } } return s; } |
Açıklamalar:
- Random sınıfı kullanılarak vuruş gücü belirleniyor.
- Defans puanı, vuruş gücüne bağlı olarak düşürülüyor.
- Defans sıfıra ulaştığında kazanan belirleniyor ve mesaj gösteriliyor.
2. Windows Forms Arayüzü
Form bileşenleri şunlardır:
- TextBox: Oyuncu adlarını girmek için.
- ComboBox: Rol seçimleri (
Agresif
,Dengeli
,Defansif
) için. - Button: Karakter oluşturmak ve saldırmak için.
- Label: Bilgi ve özetleri göstermek için.

Form Kodları
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | public partial class Form1 : Form { public Form1() { InitializeComponent(); } Karakter karakter1; Karakter karakter2; private void btnOyuncu1Olustur_Click(object sender, EventArgs e) { karakter1 = new Karakter(txtOyuncu1Ad.Text, cmbOyuncu1Rol.Text); lblOyuncu1.Text = karakter1.KarakterYazdir(); } private void btnVurOyuncu1_Click(object sender, EventArgs e) { lblVurusOzet.Text = karakter1.Vur(karakter2); lblOyuncu2Yaz.Text = karakter2.KarakterYazdir(); } private void btnOyuncu2Olustur_Click(object sender, EventArgs e) { karakter2 = new Karakter(txtOyuncu2Ad.Text, cmbOyuncu2Rol.Text); lblOyuncu2.Text = karakter2.KarakterYazdir(); } private void btnVurOyuncu2_Click(object sender, EventArgs e) { lblVurusOzet.Text = karakter2.Vur(karakter1); lblOyuncu1Yaz.Text = karakter1.KarakterYazdir(); } } |
Açıklamalar:
btnOyuncu1Olustur
vebtnOyuncu2Olustur
: Oyuncuların karakterlerini oluşturur ve özelliklerini gösterir.btnVurOyuncu1
vebtnVurOyuncu2
: Karakterlerin sırayla saldırmasını sağlar.lblVurusOzet
: Vuruş özetini ve durumunu gösterir.
Ekran Görüntüleri:

Sonuç
Bu makalede, C# ile sınıf yapısını ve Windows Forms arayüzünü kullanarak basit bir savaş oyunu geliştirdik. Karakter
sınıfı ve Vur()
metodu ile oyun mekaniği oluşturulurken, kullanıcı dostu bir arayüz tasarımı sağlandı. Object-Oriented Programming prensipleri ile karakterlerin özelliklerini yönettik ve oyun akışını sağladık.