diff --git a/src/viking.js b/src/viking.js index fe1febf..14b3b06 100644 --- a/src/viking.js +++ b/src/viking.js @@ -1,14 +1,109 @@ // Soldier -class Soldier {} +class Soldier { + constructor(health,strength){ + this.health=health; + this.strength=strength; + } + + attack() { + return this.strength; + } + + receiveDamage(damage){ + 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{ + constructor(health,strength,name){ + super(health,strength); + this.name = name; + } + 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.attack()); + + if (randomSaxon.health<=0){ + this.saxonArmy = this.saxonArmy.filter(saxon => saxon.health > 0); + } + return result + } + + saxonAttack(){ + const randomSaxon = this.saxonArmy[Math.floor(Math.random()*this.saxonArmy.length)]; + const randomViking = this.vikingArmy[Math.floor(Math.random()*this.vikingArmy.length)]; + + const result = randomViking.receiveDamage(randomSaxon.attack()) + + if (randomViking.health <= 0){ + this.vikingArmy = this.vikingArmy.filter(viking => viking.health > 0) + } + + return result + } + + showStatus(){ + if (this.vikingArmy.length === 0 && this.saxonArmy.length >= 1){ + return "Saxons have fought for their lives and survived another day..." + } + + else if (this.saxonArmy.length === 0 && this.vikingArmy.length >= 1){ + return "Vikings have won the war of the century!" + } + + else + return "Vikings and Saxons are still in the thick of battle." + } +}