diff --git a/src/viking.js b/src/viking.js index 9017bfc8a..11d25cd9c 100755 --- a/src/viking.js +++ b/src/viking.js @@ -1,11 +1,114 @@ // 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 died in act of combat` + } else { + return `${this.name} has received ${damage} points of damage` + } + } + + battleCry() { + return `Odin Owns You All!` + } +} + // Saxon -class Saxon {} +class Saxon extends Soldier { + constructor(health, strength) { + super(health, strength) + } + + receiveDamage(damage) { + + this.health -= damage + + if (this.health <= 0) { + return `A Saxon has died in combat` + } else { + return `A Saxon has received ${damage} points of damage` + } + } +} + + // War -class War {} +class War { + constructor() { + this.vikingArmy = [] + this.saxonArmy = [] + } + + addViking(vikingObj) { + this.vikingArmy.push(vikingObj) + } + + addSaxon(saxonObj) { + this.saxonArmy.push(saxonObj) + } + + vikingAttack() { + let randomViking = this.vikingArmy[Math.floor(Math.random() * this.vikingArmy.length)] + let randomSaxon = this.saxonArmy[Math.floor(Math.random() * this.saxonArmy.length)] + + randomSaxon.receiveDamage(randomViking.attack()) + + + if (randomSaxon.health <= 0) { + this.saxonArmy.splice(this.saxonArmy.indexOf(randomSaxon), 1) + return `A Saxon has died in combat` + } else { + return `A Saxon has received ${randomViking.attack()} points of damage` + } + } + + saxonAttack() { + let randomSaxon = this.saxonArmy[Math.floor(Math.random() * this.saxonArmy.length)] + let randomViking = this.vikingArmy[Math.floor(Math.random() * this.vikingArmy.length)] + + randomViking.receiveDamage(randomSaxon.attack()) + + + if (randomViking.health <= 0) { + this.vikingArmy.splice(this.vikingArmy.indexOf(randomViking), 1) + return `${randomViking.name} has died in act of combat` + } else { + return `${randomViking.name} has received ${randomSaxon.attack()} points of damage` + } + } + + showStatus(){ + if(this.vikingArmy.length === 0){ + return `Saxons have fought for their lives and survived another day...` + } else if(this.saxonArmy.length === 0){ + return `Vikings have won the war of the century!` + } else { + return `Vikings and Saxons are still in the thick of battle.` + } + } + +}