diff --git a/avbin64.dll b/avbin64.dll new file mode 100644 index 0000000..0948c67 Binary files /dev/null and b/avbin64.dll differ diff --git a/battle.py b/battle.py new file mode 100644 index 0000000..343e388 --- /dev/null +++ b/battle.py @@ -0,0 +1,66 @@ +import vikingsClases as v +import random as rd +import time as t +import pyglet + +def randomNumber(): + return rd.randint(1, 10) + +while 1: + try: + numberSaxon = int(input("Number of Saxons: ")) + numberVikings = int(input("Number of Vikings: ")) + if numberSaxon == 0 or numberVikings == 0: + print("Debe introduccir un número mayor que 0") + continue + break + except Exception as e: + print("Se debe introduccir un número") + +war = v.War() +for i in range(0, numberSaxon): + war.addViking(v.Viking(f"Viking-{i + 1}", randomNumber(), randomNumber())) + war.addSaxon(v.Saxon(randomNumber(), randomNumber())) + +contador = 1 +for i in range(1, 4): + t.sleep(0.75) + print(f"{i}............") +t.sleep(0.75) +print("Gooooo") + +while 1: + t.sleep(1) + print(f"{contador}.- War") + print("-----") + contador += 1 + whoFight = randomNumber() + if whoFight < 5: + print(war.saxonAttack()) + if whoFight >= 5: + print(war.vikingAttack()) + print("-----\n") + if len(war.saxonArmy) == 0 or len(war.vikingArmy) == 0: + print(f"{war.showStatus()}") + print("WAR IS OVER!!!") + print("LET'S CELEBRATE") + break + +t.sleep(2) +animation = pyglet.image.load_animation("vikingRave.gif") +animSprite = pyglet.sprite.Sprite(animation) +w = animSprite.width +h = animSprite.height +window = pyglet.window.Window(width=w, height=h, fullscreen=True) +window.set_visible(True) +r, g, b, alpha = 0.5, 0.5, 0.8, 0.5 +pyglet.gl.glClearColor(r, g, b, alpha) +music = pyglet.resource.media("celebrate.mp3", streaming=False) +music.play() + +@window.event +def on_draw(): + window.clear() + animSprite.draw() + +pyglet.app.run() \ No newline at end of file diff --git a/celebrate.mp3 b/celebrate.mp3 new file mode 100644 index 0000000..6136d7b Binary files /dev/null and b/celebrate.mp3 differ diff --git a/vikingRave.gif b/vikingRave.gif new file mode 100644 index 0000000..cd37ae8 Binary files /dev/null and b/vikingRave.gif differ diff --git a/vikingsClases.py b/vikingsClases.py index b51cd5f..73d4637 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -1,24 +1,102 @@ +import random as rd # Soldier +class Soldier: + def __init__(self, health, strength): + self.health = health + self.strength = strength -class Soldier: - pass + def attack(self): + return self.strength + + def receiveDamage(self, damage): + self.health -= damage + + def __repr__(self): + return f"[SOLDIER] health: {self.health}, strength: {self.strength}" # Viking +class Viking(Soldier): + + def __init__(self, name, health, strength): + super().__init__(health, strength) + self.name = name + def attack(self): + return super().attack() + + def receiveDamage(self, damage): + self.health -= damage + return f"{self.name} has received {damage} points of damage" \ + if int(self.health) > 0 else f"{self.name} has died in act of combat" + + def battleCry(self): + return "Odin Owns You All!" + + def __repr__(self): + return f"[VIKING] name: {self.name}, health: {0 if self.health <= 0 else self.health}, strength: {self.strength}" -class Viking: - pass # Saxon +class Saxon(Soldier): + def __init__(self, health, strength): + super().__init__(health, strength) -class Saxon: - pass + def attack(self): + return super().attack() -# War + def receiveDamage(self, damage): + self.health -= damage + return f"A Saxon has received {damage} points of damage" if self.health > 0 else f"A Saxon has died in combat" + def __repr__(self): + return f"[SAXON] health: {self.health}, strength: {self.strength}" +# War class War: - pass + + def __init__(self): + self.vikingArmy = [] + self.saxonArmy = [] + + def randomSoldier(self, army): + return rd.randint(0, len(army)) - 1 + + def addViking(self, viking): + self.vikingArmy.append(viking) + + def addSaxon(self, saxon): + self.saxonArmy.append(saxon) + + def vikingAttack(self): + viking = self.vikingArmy[self.randomSoldier(self.vikingArmy)] + saxon = self.saxonArmy[self.randomSoldier(self.saxonArmy)] + print(viking) + print("vs") + print(f"{saxon}\n") + resultado = saxon.receiveDamage(viking.strength) + if saxon.health <= 0: + self.saxonArmy.remove(saxon) + return resultado + + def saxonAttack(self): + viking = self.vikingArmy[self.randomSoldier(self.vikingArmy)] + saxon = self.saxonArmy[self.randomSoldier(self.saxonArmy)] + print(saxon) + print("vs") + print(f"{viking}\n") + resultado = viking.receiveDamage(saxon.strength) + if viking.health <= 0: + self.vikingArmy.remove(viking) + return resultado + + def showStatus(self): + return "Vikings have won the war of the century!" if len(self.saxonArmy) == 0 \ + else "Saxons have fought for their lives and survive another day..." \ + if len(self.vikingArmy) == 0 else "Vikings and Saxons are still in the thick of battle." + + def __repr__(self): + return f"vikingArmy: {len(self.vikingArmy)} \nsaxonArmy: {len(self.saxonArmy)}" +