From 12beaefe63155d20f6b53c4f8aa6ca2474d88bd5 Mon Sep 17 00:00:00 2001 From: AkashAdarkar Date: Tue, 3 Sep 2024 20:09:43 +0530 Subject: [PATCH] w3 OOPS assignment done --- src/viking.js | 108 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 104 insertions(+), 4 deletions(-) diff --git a/src/viking.js b/src/viking.js index fe1febf..f00ce17 100644 --- a/src/viking.js +++ b/src/viking.js @@ -1,14 +1,114 @@ // Soldier -class Soldier {} +class Soldier { + constructor(health,strength){ + this.health = health + this.strength = strength + } + + attack(){ + return this.strength; + } + + + receiveDamage(damage){ + this.health = this.health - damage; + } +} // Viking -class Viking {} +class Viking extends Soldier{ + constructor(name,health,strength){ + super(health,strength); + + this.name = name; + } + receiveDamage(damage) { + this.health -= damage; + if (this.health > 0) { + return `${this.name} has received ${damage} points of damage`; + } else { + return `${this.name} has died in act of combat`; + } + } + + + battleCry(){ + return `Odin Owns You All!`; + } +} // Saxon -class Saxon {} +class Saxon extends Soldier { + + + receiveDamage(damage) { + this.health -= damage; + if (this.health > 0) { + return `A Saxon has received ${damage} points of damage`; + } else { + return `A Saxon has died in combat`; + } + } +} // War -class War {} +class War { + constructor(){ + this.vikingArmy = [] + this.saxonArmy = [] + } + + addViking(viking){ + this.vikingArmy.push(viking) + } + + addSaxon(saxon){ + this.saxonArmy.push(saxon) + } + + + vikingAttack(){ + const randomSaxon = this.saxonArmy[Math.floor(Math.random() * this.saxonArmy.length)]; + + const randomViking = this.vikingArmy[Math.floor(Math.random() * this.vikingArmy.length)]; + + + + const result = randomSaxon.receiveDamage(randomViking.strength); + + this.saxonArmy = this.saxonArmy.filter(s => s.health > 0) + + return result ; + } + + saxonAttack(){ + const randomViking = this.vikingArmy[Math.floor(Math.random() * this.vikingArmy.length)]; + + const randomSaxon = this.saxonArmy[Math.floor(Math.random() * this.saxonArmy.length)]; + + const result = randomViking.receiveDamage(randomSaxon.strength); + + + this.vikingArmy = this.vikingArmy.filter(v => v.health > 0); + + return result; + + } + + showStatus(){ +if(this.saxonArmy.length === 0){ + return "Vikings have won the war of the century!"; +} +else if(this.vikingArmy.length === 0){ +return "Saxons have fought for their lives and survived another day..."; +} +else{ + + return "Vikings and Saxons are still in the thick of battle."; +} + + } +}