From 7697936b89d90ff68e80a52bb6af714fa0b60fb3 Mon Sep 17 00:00:00 2001 From: ruben-9091 Date: Tue, 7 Apr 2026 13:40:03 +0200 Subject: [PATCH] Solved lab --- src/viking.js | 99 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 95 insertions(+), 4 deletions(-) diff --git a/src/viking.js b/src/viking.js index 9017bfc8a..89bede55c 100755 --- a/src/viking.js +++ b/src/viking.js @@ -1,11 +1,102 @@ // 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 = 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 = 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 index1 = Math.floor(Math.random() * this.saxonArmy.length) + const randomSaxon = this.saxonArmy [index1] + const index2 = Math.floor(Math.random() * this.vikingArmy.length) + const randomViking = this.vikingArmy [index2] + const result = randomSaxon.receiveDamage(randomViking.strength) + + if(randomSaxon.health <=0) { + this.saxonArmy.splice(index1,1) + } + return result; + } + + saxonAttack(){ + const index1 = Math.floor(Math.random() * this.vikingArmy.length) + const randomViking = this.vikingArmy [index1] + const index2 = Math.floor(Math.random() * this.saxonArmy.length) + const randomSaxon = this.saxonArmy [index2] + const result = randomViking.receiveDamage(randomSaxon.strength) + + if(randomViking.health <=0) { + this.vikingArmy.splice(index1,1) + } + return result; + } + + showStatus(){ + if (this.saxonArmy.length === 0) { + return `Vikings have won the war of the century!` + } + + if (this.vikingArmy.length === 0) { + return `Saxons have fought for their lives and survived another day...` + } + return `Vikings and Saxons are still in the thick of battle.` + } + }