diff --git a/__pycache__/vikingsClasses.cpython-311.pyc b/__pycache__/vikingsClasses.cpython-311.pyc new file mode 100644 index 0000000..74b10c6 Binary files /dev/null and b/__pycache__/vikingsClasses.cpython-311.pyc differ diff --git a/file.py b/file.py new file mode 100644 index 0000000..34a98fa --- /dev/null +++ b/file.py @@ -0,0 +1,44 @@ +from vikingsClasses import Soldier +from vikingsClasses import Viking +from vikingsClasses import Saxon +from vikingsClasses import War + +import random as rn + +''' +def new_viking_team(n_vikings): + vikings=[] + for i in range(n_vikings): + vikings.append(Viking('viking'+i, rn.randint(1,100), rn.randint(1,100))) + return vikings + +def new_saxon_team(n_saxons): + saxons=[] + for i in range(n_saxons): + saxons.append(Saxon(rn.randint(1,100),rn.randint(1,100))) + return saxons +''' + +def war(n_vikings, n_saxons, days_of_battles=1000000000): + days=0 + guerra=War() + for i in range(n_vikings): + viking_sold = Viking('viking', rn.randint(1,50), rn.randint(1,50)) + guerra.addViking(viking_sold) + for i in range(n_saxons): + saxon_soldier = Saxon(rn.randint(1,50),rn.randint(1,50)) + guerra.addSaxon(saxon_soldier) + + while days < days_of_battles and guerra.saxonArmy and guerra.vikingArmy: + coin=rn.randint(0,1) + if coin: + guerra.vikingAttack() + else: + guerra.saxonAttack() + days+= 1 + + return guerra.showStatus() + + +war(10,10) + diff --git a/vikingsClasses.py b/vikingsClasses.py index b51cd5f..6c12e89 100644 --- a/vikingsClasses.py +++ b/vikingsClasses.py @@ -1,24 +1,88 @@ -# Soldier +import random as rn +# Soldier class Soldier: - pass + + def __init__(self, health, strength): + self.health = health + self.strength = strength + + def attack(self): + return self.strength + + def receiveDamage(self,damage): + self.health -= damage + + # Viking +class Viking(Soldier): + + def __init__(self, name, health, strength): + super().__init__(health, strength) + self.name=name + + def receiveDamage(self,damage): + self.health -= damage + if self.health>0: + return f"{self.name} has received {damage} points of damage" + else: + return f"{self.name} has died in act of combat" + -class Viking: - pass + def battleCry(self): + return "Odin Owns You All!" -# Saxon -class Saxon: - pass +# Saxon +class Saxon(Soldier): + + def receiveDamage(self,damage): + self.health -= damage + if self.health>0: + return f"A Saxon has received {damage} points of damage" + else: + return f"A Saxon has died in combat" + + # War +class War: + def __init__(self,): + self.vikingArmy = [] + self.saxonArmy = [] + + def addViking(self, viking_soldier): + self.vikingArmy.append(viking_soldier) + def addSaxon(self, saxon_soldier): + self.saxonArmy.append(saxon_soldier) -class War: - pass + def vikingAttack(self): + vik_soldier = self.vikingArmy[rn.randint(0,len(self.vikingArmy)-1)] + sax_soldier = self.saxonArmy[rn.randint(0,len(self.saxonArmy)-1)] + if sax_soldier.health <= vik_soldier.attack(): + self.saxonArmy.remove(sax_soldier) + return sax_soldier.receiveDamage(vik_soldier.attack()) + + + def saxonAttack(self): + vik_soldier = self.vikingArmy[rn.randint(0,len(self.vikingArmy)-1)] + sax_soldier = self.saxonArmy[rn.randint(0,len(self.saxonArmy)-1)] + if vik_soldier.health <= sax_soldier.attack(): + self.vikingArmy.remove(vik_soldier) + return vik_soldier.receiveDamage(sax_soldier.attack()) + + + def showStatus(self): + if not self.saxonArmy: + return "Vikings have won the war of the century!" + elif not self.vikingArmy: + return "Saxons have fought for their lives and survive another day..." + else: + return "Vikings and Saxons are still in the thick of battle." +