From 52755265c2c30f839d033a91580548b017cd0de7 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Fri, 17 Jan 2020 16:18:06 +0100 Subject: [PATCH 1/9] haciendo el bonus --- vikingsClases.py | 64 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/vikingsClases.py b/vikingsClases.py index b51cd5f..7a67662 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -1,24 +1,72 @@ # 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 + + #attack se hereda automaticamente + + def receiveDamage(self, damage): + super().receiveDamage(damage) + if(self.health > 0): + return self.name+" has received "+str(damage)+" points of damage" + else: + return self.name+" has died in act of combat" + + def battleCry(self): + return "Odin Owns You All!" -class Viking: - pass # Saxon +class Saxon(Soldier): + def __init__(self, health, strength): + super().__init__(health, strength) + + #attack se hereda automaticamente -class Saxon: - pass + def receiveDamage(self, damage): + super().receiveDamage(damage) + if(self.health > 0): + return "A Saxon has received "+str(damage)+" points of damage" + else: + return "A Saxon has died in combat" # War - class War: - pass + def __init__(self): + self.vikingArmy = [] + self.saxonArmy = [] + + def addViking(self,viking): + self.vikingArmy.append(viking) + + def addSaxon(self,saxon): + self.saxonArmy.append(saxon) + + def vikingAttack(self): + #viki = + #saxo = + + def saxonAttack(): + pass + + def showStatus(): + pass From b481f260082966f391359d421de0ecf865c0c6e2 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Fri, 17 Jan 2020 16:57:58 +0100 Subject: [PATCH 2/9] terminado con bonus --- vikingsClases.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/vikingsClases.py b/vikingsClases.py index 7a67662..d5188b0 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -1,4 +1,4 @@ - +import random # Soldier class Soldier: @@ -62,11 +62,26 @@ def addSaxon(self,saxon): self.saxonArmy.append(saxon) def vikingAttack(self): - #viki = - #saxo = - - def saxonAttack(): - pass - - def showStatus(): - pass + viki = random.randint(0,len(self.vikingArmy)-1) + saxo = random.randint(0,len(self.saxonArmy)-1) + resultado = self.saxonArmy[saxo].receiveDamage(self.vikingArmy[viki].attack()) + if(resultado[-1] == "t"): + self.saxonArmy.remove(self.saxonArmy[saxo]) + return resultado + + def saxonAttack(self): + viki = random.randint(0,len(self.vikingArmy)-1) + saxo = random.randint(0,len(self.saxonArmy)-1) + resultado = self.vikingArmy[viki].receiveDamage(self.saxonArmy[saxo].attack()) + if(resultado[-1] == "t"): + self.vikingArmy.remove(self.vikingArmy[viki]) + return resultado + + def showStatus(self): + if(len(self.saxonArmy) == 0): + return "Vikings have won the war of the century!" + elif(len(self.vikingArmy) == 0): + return "Saxons have fought for their lives and survive another day..." + else: + return "Vikings and Saxons are still in the thick of battle." + From f3f22af1195eacbc090df7263ed2b6580b0be9a4 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Fri, 17 Jan 2020 17:25:54 +0100 Subject: [PATCH 3/9] programando flujo de juego --- 5-playTheGame.py | 18 ++++++++++++++++++ vikingsClases.py | 5 +++++ 2 files changed, 23 insertions(+) create mode 100644 5-playTheGame.py diff --git a/5-playTheGame.py b/5-playTheGame.py new file mode 100644 index 0000000..e400bf1 --- /dev/null +++ b/5-playTheGame.py @@ -0,0 +1,18 @@ +from vikingsClases import War +from vikingsClases import Viking +from vikingsClases import Saxon +import random + + + +guerra = War() +nombres_vikingos = ['Aren','Axe','Bjorn','Daven','Egil','Einar','Erik','Esben','Gerd','Gisli','Haakon','Helge','Hans',\ + 'Harald','Ivar','Jensen','Jorgen','Lars','Niels','Olav','Olson','Olson','Sveinn','Thor','Viggo'] + +v = Viking(random.choice(nombres_vikingos),100,30) +s = Saxon(100,20) + +print(v) +print(s) + +#print(guerra) \ No newline at end of file diff --git a/vikingsClases.py b/vikingsClases.py index d5188b0..bdaf089 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -22,6 +22,9 @@ def __init__(self, name, health, strength): #attack se hereda automaticamente + def __repr__(self): + return "["+self.name+"] "+"HP: "+str(self.health)+" AT: "+str(self.strength) + def receiveDamage(self, damage): super().receiveDamage(damage) if(self.health > 0): @@ -40,6 +43,8 @@ def __init__(self, health, strength): super().__init__(health, strength) #attack se hereda automaticamente + def __repr__(self): + return "[un saxon] "+"HP: "+str(self.health)+" AT: "+str(self.strength) def receiveDamage(self, damage): super().receiveDamage(damage) From 68ff5049cda3feda6efee8d3d7ffe0f95080d0f2 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Fri, 17 Jan 2020 18:16:15 +0100 Subject: [PATCH 4/9] terminado con juego bonus (fichero 5) --- 5-playTheGame.py | 59 ++++++++++++++++++++++++++++++++++++++++++------ vikingsClases.py | 5 +++- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/5-playTheGame.py b/5-playTheGame.py index e400bf1..bbd5901 100644 --- a/5-playTheGame.py +++ b/5-playTheGame.py @@ -4,15 +4,60 @@ import random - -guerra = War() nombres_vikingos = ['Aren','Axe','Bjorn','Daven','Egil','Einar','Erik','Esben','Gerd','Gisli','Haakon','Helge','Hans',\ 'Harald','Ivar','Jensen','Jorgen','Lars','Niels','Olav','Olson','Olson','Sveinn','Thor','Viggo'] -v = Viking(random.choice(nombres_vikingos),100,30) -s = Saxon(100,20) -print(v) -print(s) +def askArmySize(): + while True: + try: + tam = int(input("How many soldiers will fight? -> ")) + return tam + except: + print('invalid value. try again') + +def askWhichOneStarts(): + while True: + try: + ini = input("Who will start the war? [v/s] -> ") + if ini not in ("v","s"): + raise NameError("Not in [v/s]") + else: + return ini + except: + print('invalid value. try again') + +def generateArmies(g,size): + for i in range(0,size): + g.addViking(Viking(random.choice(nombres_vikingos),random.randint(1,51)+50,random.randint(1,11)+25)) + g.addSaxon(Saxon(random.randint(1,51)+50,random.randint(1,11)+25)) + + +def battle(g,turno): + while len(g.saxonArmy) != 0 and len(g.vikingArmy) != 0: + if(turno=="s"): + g.saxonAttack() + turno="v" + else: + g.vikingAttack() + turno="s" + print(g) + print(g.showStatus()) + +guerra = War() + +n = askArmySize() +generateArmies(guerra,n) +print("Armies are:",guerra) +emp = askWhichOneStarts() +if emp == "s": + print("Saxons will start the war") +else: + print("Vikings will start the war") + +battle(guerra,emp) + + +#print(guerra) + -#print(guerra) \ No newline at end of file diff --git a/vikingsClases.py b/vikingsClases.py index bdaf089..f709616 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -44,7 +44,7 @@ def __init__(self, health, strength): #attack se hereda automaticamente def __repr__(self): - return "[un saxon] "+"HP: "+str(self.health)+" AT: "+str(self.strength) + return "[a saxon] "+"HP: "+str(self.health)+" AT: "+str(self.strength) def receiveDamage(self, damage): super().receiveDamage(damage) @@ -60,6 +60,9 @@ def __init__(self): self.vikingArmy = [] self.saxonArmy = [] + def __repr__(self): + return str(len(self.vikingArmy))+" vikings and "+str(len(self.saxonArmy))+" saxons" + def addViking(self,viking): self.vikingArmy.append(viking) From 0b4c0224a8e71d82791d4245337df5b7cf81a576 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Sat, 18 Jan 2020 00:24:50 +0100 Subject: [PATCH 5/9] terminado con juego bonus (fichero 5) v2 --- 5-playTheGame.py | 10 +++++++--- vikingsClases.py | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/5-playTheGame.py b/5-playTheGame.py index bbd5901..913de4f 100644 --- a/5-playTheGame.py +++ b/5-playTheGame.py @@ -11,7 +11,7 @@ def askArmySize(): while True: try: - tam = int(input("How many soldiers will fight? -> ")) + tam = int(input("How many soldiers will fight for each army? -> ")) return tam except: print('invalid value. try again') @@ -43,12 +43,16 @@ def battle(g,turno): turno="s" print(g) print(g.showStatus()) + try: + input("Press enter to continue") + except SyntaxError: + pass guerra = War() n = askArmySize() generateArmies(guerra,n) -print("Armies are:",guerra) +print(guerra) emp = askWhichOneStarts() if emp == "s": print("Saxons will start the war") @@ -57,7 +61,7 @@ def battle(g,turno): battle(guerra,emp) +guerra.heroesOfWar() -#print(guerra) diff --git a/vikingsClases.py b/vikingsClases.py index f709616..c6c00c5 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -5,6 +5,7 @@ class Soldier: def __init__(self, health, strength): self.health = health self.strength = strength + self.kills = 0 def attack(self): return self.strength @@ -23,7 +24,10 @@ def __init__(self, name, health, strength): #attack se hereda automaticamente def __repr__(self): - return "["+self.name+"] "+"HP: "+str(self.health)+" AT: "+str(self.strength) + s = "["+self.name+"] "+"HP: "+str(self.health)+" AT: "+str(self.strength) + if self.kills > 0: + s += " Kills: "+str(self.kills) + return s def receiveDamage(self, damage): super().receiveDamage(damage) @@ -44,7 +48,10 @@ def __init__(self, health, strength): #attack se hereda automaticamente def __repr__(self): - return "[a saxon] "+"HP: "+str(self.health)+" AT: "+str(self.strength) + s = "[a saxon] "+"HP: "+str(self.health)+" AT: "+str(self.strength) + if self.kills > 0: + s += " Kills: "+str(self.kills) + return s def receiveDamage(self, damage): super().receiveDamage(damage) @@ -61,7 +68,14 @@ def __init__(self): self.saxonArmy = [] def __repr__(self): - return str(len(self.vikingArmy))+" vikings and "+str(len(self.saxonArmy))+" saxons" + s = "\n-----Standing battle members:-----\n" + for i in self.vikingArmy: + s += str(i) + '\n' + print('\n') + for j in self.saxonArmy: + s += str(j) + '\n' + #s= str(len(self.vikingArmy))+" vikings and "+str(len(self.saxonArmy))+" saxons" + return s def addViking(self,viking): self.vikingArmy.append(viking) @@ -75,6 +89,7 @@ def vikingAttack(self): resultado = self.saxonArmy[saxo].receiveDamage(self.vikingArmy[viki].attack()) if(resultado[-1] == "t"): self.saxonArmy.remove(self.saxonArmy[saxo]) + self.vikingArmy[viki].kills += 1 return resultado def saxonAttack(self): @@ -83,6 +98,7 @@ def saxonAttack(self): resultado = self.vikingArmy[viki].receiveDamage(self.saxonArmy[saxo].attack()) if(resultado[-1] == "t"): self.vikingArmy.remove(self.vikingArmy[viki]) + self.saxonArmy[saxo].kills += 1 return resultado def showStatus(self): @@ -92,4 +108,16 @@ def showStatus(self): return "Saxons have fought for their lives and survive another day..." else: return "Vikings and Saxons are still in the thick of battle." + + def heroesOfWar(self): + if(len(self.saxonArmy) != 0): + print("This battle will be long remembered...") + elif(len(self.vikingArmy) != 0): + remain = self.vikingArmy[0] + for i in self.vikingArmy: + if remain.kills < i.kills: + remain = i + print("This battle will always be remembered as THE BATTLE OF "+str.upper(remain.name)+"\n") + else: + print("---") From 896f2f23d7506e017ce917b200124fddb0eeb873 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Sat, 18 Jan 2020 13:32:01 +0100 Subject: [PATCH 6/9] terminado con juego bonus (fichero 5) v3 --- 5-playTheGame.py | 29 +++++++++++++++++++------- vikingsClases.py | 53 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 71 insertions(+), 11 deletions(-) diff --git a/5-playTheGame.py b/5-playTheGame.py index 913de4f..26d417e 100644 --- a/5-playTheGame.py +++ b/5-playTheGame.py @@ -3,6 +3,13 @@ from vikingsClases import Saxon import random +# Generar ejércitos (pedir por teclado cantidad o hacer random) +# generar salud y fuerza aleatorias entre un minimo y un maximo +# preguntar quién inicia el conflicto +# Hacer métodos de representación para las clases (poder hacer print de un soldado y del estado de los ejercitos) +# versión "coward mode" de VikingAttack y SaxonAttack en los que, en lugar de elegirlos de forma aleatoria, sea el más fuerte el que ataque al contrario de menos salud + + nombres_vikingos = ['Aren','Axe','Bjorn','Daven','Egil','Einar','Erik','Esben','Gerd','Gisli','Haakon','Helge','Hans',\ 'Harald','Ivar','Jensen','Jorgen','Lars','Niels','Olav','Olson','Olson','Sveinn','Thor','Viggo'] @@ -11,8 +18,11 @@ def askArmySize(): while True: try: - tam = int(input("How many soldiers will fight for each army? -> ")) - return tam + tam = int(input("How many soldiers will fight for each army? (max 10) -> ")) + if tam > 0: + return tam + else: + raise Exception except: print('invalid value. try again') @@ -31,18 +41,22 @@ def generateArmies(g,size): for i in range(0,size): g.addViking(Viking(random.choice(nombres_vikingos),random.randint(1,51)+50,random.randint(1,11)+25)) g.addSaxon(Saxon(random.randint(1,51)+50,random.randint(1,11)+25)) + if (random.randint(0,9) >= 5): + #g.removeViking() + g.vikingArmy[0].becomeBerserker() + #g.addViking(Viking('^^BERSERKER^^',250,80)) def battle(g,turno): while len(g.saxonArmy) != 0 and len(g.vikingArmy) != 0: if(turno=="s"): - g.saxonAttack() + g.saxonAttackCow() turno="v" else: - g.vikingAttack() + g.vikingAttackCow() turno="s" print(g) - print(g.showStatus()) + #print(g.showStatus()) try: input("Press enter to continue") except SyntaxError: @@ -51,7 +65,8 @@ def battle(g,turno): guerra = War() n = askArmySize() -generateArmies(guerra,n) +generateArmies(guerra,min(10,n)) +# como maximo seran 10 por ejercito print(guerra) emp = askWhichOneStarts() if emp == "s": @@ -60,7 +75,7 @@ def battle(g,turno): print("Vikings will start the war") battle(guerra,emp) - +print(guerra.showStatus()) guerra.heroesOfWar() diff --git a/vikingsClases.py b/vikingsClases.py index c6c00c5..b57aeca 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -20,14 +20,23 @@ class Viking(Soldier): def __init__(self, name, health, strength): super().__init__(health, strength) self.name = name + self.isBerserker = False #attack se hereda automaticamente def __repr__(self): - s = "["+self.name+"] "+"HP: "+str(self.health)+" AT: "+str(self.strength) + s = "[" + if self.isBerserker: + s += '⚔ ' + s += self.name+"] "+"HP: "+str(self.health)+" AT: "+str(self.strength) if self.kills > 0: - s += " Kills: "+str(self.kills) + s += " ☠ "+str(self.kills) return s + + def becomeBerserker(self): + self.isBerserker = True + self.health = 250 + self.strength = 80 def receiveDamage(self, damage): super().receiveDamage(damage) @@ -50,7 +59,7 @@ def __init__(self, health, strength): def __repr__(self): s = "[a saxon] "+"HP: "+str(self.health)+" AT: "+str(self.strength) if self.kills > 0: - s += " Kills: "+str(self.kills) + s += " ☠ "+str(self.kills) return s def receiveDamage(self, damage): @@ -80,6 +89,9 @@ def __repr__(self): def addViking(self,viking): self.vikingArmy.append(viking) + def removeViking(self): + self.vikingArmy.remove(self.vikingArmy[0]) + def addSaxon(self,saxon): self.saxonArmy.append(saxon) @@ -117,7 +129,40 @@ def heroesOfWar(self): for i in self.vikingArmy: if remain.kills < i.kills: remain = i - print("This battle will always be remembered as THE BATTLE OF "+str.upper(remain.name)+"\n") + print("This battle will always be remembered as THE BATTLE OF MIGHTY "+str.upper(remain.name)+"\n") else: print("---") + def vikingAttackCow(self): + viki = 0 + for i in range(len(self.vikingArmy)): + if self.vikingArmy[viki].strength < self.vikingArmy[i].strength: + viki = i + saxo = 0 + for i in range(len(self.saxonArmy)): + if self.saxonArmy[saxo].health > self.saxonArmy[i].health: + saxo = i + #viki = random.randint(0,len(self.vikingArmy)-1) + #saxo = random.randint(0,len(self.saxonArmy)-1) + resultado = self.saxonArmy[saxo].receiveDamage(self.vikingArmy[viki].attack()) + if(resultado[-1] == "t"): + self.saxonArmy.remove(self.saxonArmy[saxo]) + self.vikingArmy[viki].kills += 1 + return resultado + + def saxonAttackCow(self): + saxo = 0 + for i in range(len(self.saxonArmy)): + if self.saxonArmy[saxo].strength < self.saxonArmy[i].strength: + saxo = i + viki = 0 + for i in range(len(self.vikingArmy)): + if self.vikingArmy[viki].health > self.vikingArmy[i].health: + viki = i + #viki = random.randint(0,len(self.vikingArmy)-1) + #saxo = random.randint(0,len(self.saxonArmy)-1) + resultado = self.vikingArmy[viki].receiveDamage(self.saxonArmy[saxo].attack()) + if(resultado[-1] == "t"): + self.vikingArmy.remove(self.vikingArmy[viki]) + self.saxonArmy[saxo].kills += 1 + return resultado \ No newline at end of file From 6159377a99e745418631d3fba203aa19c31f5ae6 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Sat, 18 Jan 2020 17:52:47 +0100 Subject: [PATCH 7/9] terminado con juego bonus (fichero 5) v4 --- 5-playTheGame.py | 8 +++----- vikingsClases.py | 35 +++++++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/5-playTheGame.py b/5-playTheGame.py index 26d417e..fc98d04 100644 --- a/5-playTheGame.py +++ b/5-playTheGame.py @@ -41,19 +41,17 @@ def generateArmies(g,size): for i in range(0,size): g.addViking(Viking(random.choice(nombres_vikingos),random.randint(1,51)+50,random.randint(1,11)+25)) g.addSaxon(Saxon(random.randint(1,51)+50,random.randint(1,11)+25)) - if (random.randint(0,9) >= 5): - #g.removeViking() + if (random.randint(0,9) == 5): g.vikingArmy[0].becomeBerserker() - #g.addViking(Viking('^^BERSERKER^^',250,80)) def battle(g,turno): while len(g.saxonArmy) != 0 and len(g.vikingArmy) != 0: if(turno=="s"): - g.saxonAttackCow() + g.saxonAttackStrong() turno="v" else: - g.vikingAttackCow() + g.vikingAttackStrong() turno="s" print(g) #print(g.showStatus()) diff --git a/vikingsClases.py b/vikingsClases.py index b57aeca..140e16c 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -83,13 +83,12 @@ def __repr__(self): print('\n') for j in self.saxonArmy: s += str(j) + '\n' - #s= str(len(self.vikingArmy))+" vikings and "+str(len(self.saxonArmy))+" saxons" return s def addViking(self,viking): self.vikingArmy.append(viking) - def removeViking(self): + def removeFirstViking(self): self.vikingArmy.remove(self.vikingArmy[0]) def addSaxon(self,saxon): @@ -134,23 +133,45 @@ def heroesOfWar(self): print("---") def vikingAttackCow(self): + viki = random.randint(0,len(self.vikingArmy)-1) + saxo = 0 + for i in range(len(self.saxonArmy)): + if self.saxonArmy[saxo].health > self.saxonArmy[i].health: + saxo = i + resultado = self.saxonArmy[saxo].receiveDamage(self.vikingArmy[viki].attack()) + if(resultado[-1] == "t"): + self.saxonArmy.remove(self.saxonArmy[saxo]) + self.vikingArmy[viki].kills += 1 + return resultado + + def saxonAttackCow(self): + saxo = random.randint(0,len(self.saxonArmy)-1) + viki = 0 + for i in range(len(self.vikingArmy)): + if self.vikingArmy[viki].health > self.vikingArmy[i].health: + viki = i + resultado = self.vikingArmy[viki].receiveDamage(self.saxonArmy[saxo].attack()) + if(resultado[-1] == "t"): + self.vikingArmy.remove(self.vikingArmy[viki]) + self.saxonArmy[saxo].kills += 1 + return resultado + + def vikingAttackStrong(self): viki = 0 for i in range(len(self.vikingArmy)): if self.vikingArmy[viki].strength < self.vikingArmy[i].strength: viki = i saxo = 0 for i in range(len(self.saxonArmy)): - if self.saxonArmy[saxo].health > self.saxonArmy[i].health: + if self.saxonArmy[saxo].strength < self.saxonArmy[i].strength: saxo = i - #viki = random.randint(0,len(self.vikingArmy)-1) - #saxo = random.randint(0,len(self.saxonArmy)-1) resultado = self.saxonArmy[saxo].receiveDamage(self.vikingArmy[viki].attack()) if(resultado[-1] == "t"): self.saxonArmy.remove(self.saxonArmy[saxo]) self.vikingArmy[viki].kills += 1 return resultado - def saxonAttackCow(self): + def saxonAttackStrong(self): saxo = 0 for i in range(len(self.saxonArmy)): if self.saxonArmy[saxo].strength < self.saxonArmy[i].strength: @@ -159,8 +180,6 @@ def saxonAttackCow(self): for i in range(len(self.vikingArmy)): if self.vikingArmy[viki].health > self.vikingArmy[i].health: viki = i - #viki = random.randint(0,len(self.vikingArmy)-1) - #saxo = random.randint(0,len(self.saxonArmy)-1) resultado = self.vikingArmy[viki].receiveDamage(self.saxonArmy[saxo].attack()) if(resultado[-1] == "t"): self.vikingArmy.remove(self.vikingArmy[viki]) From cb5ddadb6c312645a6d55ebc90ed87b37b65da88 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Sat, 18 Jan 2020 19:51:01 +0100 Subject: [PATCH 8/9] terminado con nuevo juego bonus (fichero 6) --- 6-clash-of-TAs.py | 80 +++++++++++++++++++++++++++++++++++++++++++ vikingsClases.py | 86 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 6-clash-of-TAs.py diff --git a/6-clash-of-TAs.py b/6-clash-of-TAs.py new file mode 100644 index 0000000..cbb4e10 --- /dev/null +++ b/6-clash-of-TAs.py @@ -0,0 +1,80 @@ +from vikingsClases import BootcampWar +from vikingsClases import Teacher +from vikingsClases import Alumn +import random + +# Generar ejércitos (pedir por teclado cantidad o hacer random) +# generar salud y fuerza aleatorias entre un minimo y un maximo +# preguntar quién inicia el conflicto +# Hacer métodos de representación para las clases (poder hacer print de un soldado y del estado de los ejercitos) +# versión "coward mode" de VikingAttack y SaxonAttack en los que, en lugar de elegirlos de forma aleatoria, sea el más fuerte el que ataque al contrario de menos salud + + +nombres_TAs = ['Felipe','Blanca','Clara','Fran'] +nombres_alumnos = ['Jose','Jose','Patri','Miguel','Eduardo','Ricardo','Fer','Alex','Santi','Guille','Irene','Elisa',\ + 'Cristina','Sergio','Laura','Fabian','Guillermo','Eduardo','Maria','Amanda','Xabier','Marlena','Iván','Héctor'] + +''' +def askArmySize(): + while True: + try: + tam = int(input("How many soldiers will fight for each army? (max 10) -> ")) + if tam > 0: + return tam + else: + raise Exception + except: + print('invalid value. try again') + +def askWhichOneStarts(): + while True: + try: + ini = input("Who will start the war? [t/a] -> ") + if ini not in ("t","a"): + raise NameError("Not in [t/a]") + else: + return ini + except: + print('invalid value. try again') +''' +def generateArmies(g): + for i in nombres_TAs: + g.addTeacher(Teacher(i,random.randint(1,51)+50,random.randint(1,11)+25)) + for i in g.teachersArmy: + i.becomeBerserker() + for j in nombres_alumnos: + g.addAlumn(Alumn(j,random.randint(1,51)+50,random.randint(1,16)+25)) + + +def battle(g,turno): + while len(g.teachersArmy) != 0 and len(g.alumnsArmy) != 0: + if(turno=="t"): + g.teacherAttack() + turno="a" + else: + g.alumnAttack() + turno="t" + print(g) + #print(g.showStatus()) + try: + input("Press enter to continue") + except SyntaxError: + pass + +guerra = BootcampWar() + +#n = askArmySize() +generateArmies(guerra) +print(guerra) +emp = "a" #askWhichOneStarts() +if emp == "a": + print("Alumns will start the war") +else: + print("Teachers will start the war") + +battle(guerra,emp) +print(guerra.showStatus()) +guerra.heroesOfWar() + + + diff --git a/vikingsClases.py b/vikingsClases.py index 140e16c..ccf1d0a 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -80,7 +80,7 @@ def __repr__(self): s = "\n-----Standing battle members:-----\n" for i in self.vikingArmy: s += str(i) + '\n' - print('\n') + print('\n\n') for j in self.saxonArmy: s += str(j) + '\n' return s @@ -184,4 +184,86 @@ def saxonAttackStrong(self): if(resultado[-1] == "t"): self.vikingArmy.remove(self.vikingArmy[viki]) self.saxonArmy[saxo].kills += 1 - return resultado \ No newline at end of file + return resultado + + + +class Teacher(Viking): + def __init__(self, name, health, strength): + super().__init__(name, health, strength) + + def receiveDamage(self, damage): + return super().receiveDamage(damage) + + def becomeBerserker(self): + super().becomeBerserker() + +class Alumn(Viking): + def __init__(self, name, health, strength): + super().__init__(name, health, strength) + + def receiveDamage(self, damage): + return super().receiveDamage(damage) + + +class BootcampWar: + def __init__(self): + self.teachersArmy = [] + self.alumnsArmy = [] + + def __repr__(self): + s = "\n-----Standing battle members:-----\n" + for i in self.teachersArmy: + s += str(i) + '\n' + print('\n\n') + for j in self.alumnsArmy: + s += str(j) + '\n' + return s + + def addTeacher(self,teacher): + self.teachersArmy.append(teacher) + + def addAlumn(self,alumn): + self.alumnsArmy.append(alumn) + + def alumnAttack(self): + alu = random.randint(0,len(self.alumnsArmy)-1) + tea = random.randint(0,len(self.teachersArmy)-1) + resultado = self.teachersArmy[tea].receiveDamage(self.alumnsArmy[alu].attack()) + if(resultado[-1] == "t"): + self.teachersArmy.remove(self.teachersArmy[tea]) + self.alumnsArmy[alu].kills += 1 + return resultado + + def teacherAttack(self): + alu = random.randint(0,len(self.alumnsArmy)-1) + tea = random.randint(0,len(self.teachersArmy)-1) + resultado = self.alumnsArmy[alu].receiveDamage(self.teachersArmy[tea].attack()) + if(resultado[-1] == "t"): + self.alumnsArmy.remove(self.alumnsArmy[alu]) + self.teachersArmy[tea].kills += 1 + return resultado + + def showStatus(self): + if(len(self.teachersArmy) == 0): + return "Alumns have won the war of the century!" + elif(len(self.alumnsArmy) == 0): + return "Teachers suspended the whole class" + else: + return "Alumns and Teachers are still in the thick of battle." + + def heroesOfWar(self): + if(len(self.alumnsArmy) != 0): + remain = self.alumnsArmy[0] + for i in self.alumnsArmy: + if remain.kills < i.kills: + remain = i + print("ALL HAIL "+str.upper(remain.name)+"!\n") + elif(len(self.teachersArmy) != 0): + remain = self.teachersArmy[0] + for i in self.teachersArmy: + if remain.kills < i.kills: + remain = i + print(str.upper(remain.name)+" has been a pain in the ass for us\n") + else: + print("---") \ No newline at end of file From 6bb54b3d2e2e8f79a16d4ad97d314078774ebb74 Mon Sep 17 00:00:00 2001 From: SergioGomis Date: Sat, 18 Jan 2020 21:50:01 +0100 Subject: [PATCH 9/9] terminado con nuevo juego bonus (fichero 6) v2 --- 5-playTheGame.py | 9 +++++---- 6-clash-of-TAs.py | 18 ++++++++++-------- vikingsClases.py | 10 +++++----- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/5-playTheGame.py b/5-playTheGame.py index fc98d04..3b7341b 100644 --- a/5-playTheGame.py +++ b/5-playTheGame.py @@ -47,14 +47,15 @@ def generateArmies(g,size): def battle(g,turno): while len(g.saxonArmy) != 0 and len(g.vikingArmy) != 0: + print('\n') if(turno=="s"): - g.saxonAttackStrong() + print(g.saxonAttackStrong()) turno="v" else: - g.vikingAttackStrong() + print(g.vikingAttackStrong()) turno="s" print(g) - #print(g.showStatus()) + print(g.showStatus()) try: input("Press enter to continue") except SyntaxError: @@ -73,7 +74,7 @@ def battle(g,turno): print("Vikings will start the war") battle(guerra,emp) -print(guerra.showStatus()) +#print(guerra.showStatus()) guerra.heroesOfWar() diff --git a/6-clash-of-TAs.py b/6-clash-of-TAs.py index cbb4e10..dc91286 100644 --- a/6-clash-of-TAs.py +++ b/6-clash-of-TAs.py @@ -48,18 +48,20 @@ def generateArmies(g): def battle(g,turno): while len(g.teachersArmy) != 0 and len(g.alumnsArmy) != 0: + try: + input("Press enter to continue") + except SyntaxError: + pass + print('\n') if(turno=="t"): - g.teacherAttack() + print(g.teacherAttack()) turno="a" else: - g.alumnAttack() + print(g.alumnAttack()) turno="t" print(g) - #print(g.showStatus()) - try: - input("Press enter to continue") - except SyntaxError: - pass + print(g.showStatus()) + guerra = BootcampWar() @@ -73,7 +75,7 @@ def battle(g,turno): print("Teachers will start the war") battle(guerra,emp) -print(guerra.showStatus()) +#print(guerra.showStatus()) guerra.heroesOfWar() diff --git a/vikingsClases.py b/vikingsClases.py index ccf1d0a..d0651ba 100644 --- a/vikingsClases.py +++ b/vikingsClases.py @@ -80,7 +80,7 @@ def __repr__(self): s = "\n-----Standing battle members:-----\n" for i in self.vikingArmy: s += str(i) + '\n' - print('\n\n') + s += '\n' for j in self.saxonArmy: s += str(j) + '\n' return s @@ -122,7 +122,7 @@ def showStatus(self): def heroesOfWar(self): if(len(self.saxonArmy) != 0): - print("This battle will be long remembered...") + print("This battle will be soon forgotten...") elif(len(self.vikingArmy) != 0): remain = self.vikingArmy[0] for i in self.vikingArmy: @@ -215,7 +215,7 @@ def __repr__(self): s = "\n-----Standing battle members:-----\n" for i in self.teachersArmy: s += str(i) + '\n' - print('\n\n') + s += '\n' for j in self.alumnsArmy: s += str(j) + '\n' return s @@ -246,9 +246,9 @@ def teacherAttack(self): def showStatus(self): if(len(self.teachersArmy) == 0): - return "Alumns have won the war of the century!" + return "Alumns have won the limited-edition Axe" elif(len(self.alumnsArmy) == 0): - return "Teachers suspended the whole class" + return "Teachers won. BOYANDER must be proud" else: return "Alumns and Teachers are still in the thick of battle."