Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added avbin64.dll
Binary file not shown.
66 changes: 66 additions & 0 deletions battle.py
Original file line number Diff line number Diff line change
@@ -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()
Binary file added celebrate.mp3
Binary file not shown.
Binary file added vikingRave.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
94 changes: 86 additions & 8 deletions vikingsClases.py
Original file line number Diff line number Diff line change
@@ -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)}"