From 5677819492a559a42a56a7e60603e837ba51b248 Mon Sep 17 00:00:00 2001 From: Airam Santos diaz Date: Fri, 4 Oct 2024 16:07:47 +0200 Subject: [PATCH 1/2] completed bonus missing --- src/viking.js | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/src/viking.js b/src/viking.js index 9017bfc8a..50b943d00 100755 --- a/src/viking.js +++ b/src/viking.js @@ -1,11 +1,52 @@ // 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{ + 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 {} From 60333280f6bacdc0db974b125c303773ed401a3e Mon Sep 17 00:00:00 2001 From: Airam Santos diaz Date: Fri, 4 Oct 2024 18:15:45 +0200 Subject: [PATCH 2/2] finished --- src/viking.js | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/viking.js b/src/viking.js index 50b943d00..9fd242b56 100755 --- a/src/viking.js +++ b/src/viking.js @@ -49,4 +49,59 @@ class Saxon extends Soldier{ } // War -class War {} +class War { + constructor(){ +this.vikingArmy = []; +this.saxonArmy = []; +} + + +addViking(vikingObject){ +this.vikingArmy.push(vikingObject); +} +addSaxon(saxonObject){ + this.saxonArmy.push(saxonObject); +} +vikingAttack(){ + let saxonMan = this.saxonArmy[Math.floor(Math.random()*this.saxonArmy.length)]; + let vikingMan = this.vikingArmy[Math.floor(Math.random()*this.vikingArmy.length)]; + + let movingSolution = saxonMan.receiveDamage(vikingMan.attack()); + if(saxonMan.health <= 0){ + this.saxonArmy.splice(this.saxonArmy.indexOf(saxonMan), 1); + } + return movingSolution; +} + + +saxonAttack(){ + let saxonMan = this.saxonArmy[Math.floor(Math.random()*this.saxonArmy.length)]; + let vikingMan = this.vikingArmy[Math.floor(Math.random()*this.vikingArmy.length)]; + + let movingSolution = vikingMan.receiveDamage(saxonMan.attack()); + if(vikingMan.health <= 0){ + this.vikingArmy.splice(this.vikingArmy.indexOf(vikingMan), 1); + } + return movingSolution; +} +showStatus(){ + if(this.saxonArmy == 0){ + return "Vikings have won the war of the century!"; + } + else if (this.vikingArmy == 0){ + return "Saxons have fought for their lives and survived another day..."} + else return "Vikings and Saxons are still in the thick of battle."; +} + +} + + + + + + + + +//testing: +const war1 = new War(); +console.log(war1);