JavaScript ile Boksör Müsabakası Oyunu Oluşturma

Merhaba! Bu blog yazısında, JavaScript kullanarak boksörler arasında bir müsabaka oluşturmayı ele alacağız. İlgili kod öbeği aşağıdaki gibi bir Boksor sınıfı, Musabaka sınıfı ve ilgili işlevleri içermektedir:

class Boksor {
    constructor(ad, guc, saglik, siklet, kacinmaOrani) {
        this.ad = ad;
        this.guc = guc;
        this.saglik = saglik;
        this.siklet = siklet;
        this.kacinmaOrani = kacinmaOrani;
    }

    hit(rakip) {
        console.log("------------");
        console.log(this.ad + " => " + rakip.ad + " " + this.guc + " hasar vurdu.");
        if (this.kacinma()) {
            console.log(rakip.ad + " gelen hasarı savurdu.");
            return rakip.saglik;
        }
        if (rakip.saglik - this.guc < 0) {
            return 0;
        }
        return rakip.saglik - this.guc;
    }

    kacinma() {
        let rastgeleDeger = Math.random() * 100; // 0.0 to 99.9
        return rastgeleDeger <= this.kacinmaOrani;
    }
}

Boksor Sınıfı:
Özellikler:
ad: Boksörün adını temsil eden bir dize.
guc: Boksörün saldırı gücünü belirten bir tamsayı.
saglik: Boksörün sağlık puanını gösteren bir tamsayı.
siklet: Boksörün sikletini temsil eden bir tamsayı.
kacinmaOrani: Boksörün saldırılardan kaçma şansını yüzdesel olarak belirleyen bir tamsayı.
Metodlar:
constructor(ad, guc, saglik, siklet, kacinmaOrani): Boksör nesnesi oluşturur ve özelliklere başlangıç değerlerini atar.
hit(rakip): Boksörün rakibe saldırdığı işlemi gerçekleştirir. Hasarı hesaplar ve sonuçları konsola yazdırır.
kacinma(): Boksörün saldırılardan kaçma olasılığını hesaplar ve sonucunu döndürür.

class Musabaka {
    constructor(boksor1, boksor2, minSiklet, maxSiklet) {
        this.boksor1 = boksor1;
        this.boksor2 = boksor2;
        this.minSiklet = minSiklet;
        this.maxSiklet = maxSiklet;
    }

    roundBasla() {
        let raund = 1;
        if (this.sikletKontrolEt()) {
            while (this.boksor1.saglik > 0 && this.boksor2.saglik > 0) {
                if (this.roundKontrol(raund)) {
                    break;
                }
                console.log("======== " + raund + ". ROUND ===========");
                this.boksor2.saglik = this.boksor1.hit(this.boksor2);
                if (this.kazanan()) {
                    break;
                }
                this.boksor1.saglik = this.boksor2.hit(this.boksor1);
                if (this.kazanan()) {
                    break;
                }
                this.spiker();
                raund++;
            }
        } else {
            console.log("Sporcuların ağırlıkları uyuşmuyor.");
        }
    }

    sikletKontrolEt() {
        return (this.boksor1.siklet >= this.minSiklet && this.boksor1.siklet <= this.maxSiklet) &&
            (this.boksor2.siklet >= this.minSiklet && this.boksor2.siklet <= this.maxSiklet);
    }

    kazanan() {
        if (this.boksor1.saglik === 0) {
            console.log("Maçı Kazanan: " + this.boksor2.ad);
            return true;
        } else if (this.boksor2.saglik === 0) {
            console.log("Maçı Kazanan: " + this.boksor2.ad);
            return true;
        }
        return false;
    }

    roundKontrol(raund) {
        if (raund === 6) {
            console.log("Toplamda oynanan round: " + raund);
            if (this.boksor1.saglik < this.boksor2.saglik) {
                console.log("Maçı Kazanan: " + this.boksor2.ad);
                return true;
            } else if (this.boksor2.saglik < this.boksor1.saglik) {
                console.log("Maçı Kazanan: " + this.boksor1.ad);
                return true;
            } else {
                console.log("Maç Berabere Bitti");
                return true;
            }
        }
        return false;
    }

    spiker() {
        console.log("------------");
        console.log(this.boksor1.ad + " Kalan Can: " + this.boksor1.saglik);
        console.log(this.boksor2.ad + " Kalan Can: " + this.boksor2.saglik);
    }
}

 

Musabaka Sınıfı:

Özellikler:

boksor1 ve boksor2: Müsabakaya katılan iki boksör nesnesini temsil eden örnekler.
minSiklet ve maxSiklet: Müsabakanın geçerli olduğu siklet aralığını belirleyen tamsayılar.

Metodlar:

constructor(boksor1, boksor2, minSiklet, maxSiklet): Musabaka nesnesi oluşturur ve boksörler ile siklet aralığını kaydeder.
roundBasla(): Müsabakanın raundlarını başlatır ve sonuçları konsola yazdırır.
sikletKontrolEt(): Boksörlerin sikletlerinin müsabaka kurallarına uygun olup olmadığını kontrol eder.
kazanan(): Müsabakanın sonucunu kontrol eder ve kazananı belirler.
roundKontrol(raund): Belirli bir raundun sonucunu kontrol eder ve müsabakanın tamamlanıp tamamlanmadığını belirler.
spiker(): Müsabaka sırasında boksörlerin kalan sağlık puanlarını konsola yazdırır.

Örnek Uygulama:

const ahmet = new Boksor("Ahmet", 15, 100, 90, 60);
const ali = new Boksor("Ali", 10, 85, 90, 50);
const mac = new Musabaka(ahmet, ali, 90, 100);
mac.roundBasla();

 

Yukarıdaki kod örneği, “Ahmet” ve “Ali” adında iki boksör nesnesi oluşturuyor. Ardından, bu boksörler arasında bir müsabaka yaratılıyor ve raundlar başlatılıyor. Müsabakanın sonucu ve raundlar sırasında boksörlerin durumları konsola yazdırılıyor.

Bu kod örneği, JavaScript ile basit bir boksör müsabakası simülasyonu yapmanıza olanak sağlar. Boksörlerin özelliklerini ve saldırı stratejilerini ayarlayarak farklı senaryoları deneyebilirsiniz.

Kodun tamamına erişmek için