Skip to content

Commit 2509893

Browse files
committed
#32 - python
1 parent 57ad82b commit 2509893

File tree

1 file changed

+84
-42
lines changed
  • Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/python

1 file changed

+84
-42
lines changed

Roadmap/32 - BATALLA DEADPOOL Y WOLVERINE/python/javi-kl.py

Lines changed: 84 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,52 @@
1-
from abc import ABC, abstractmethod # para clases abstractas y metodos
2-
import random # Para crear números random
3-
import time # para crear lapso de tiempo 1 seg
1+
from abc import ABC, abstractmethod
2+
import random
3+
import time
44

55

6-
class Interfaz(ABC): # interfaz que seguiran mis superheroes
6+
class Interfaz(ABC):
77
@abstractmethod
8-
def __init__(self) -> None: # atributos
9-
self.vida = None
8+
def __init__(self, vida) -> None:
9+
self.vida = vida
1010

1111
@abstractmethod
12-
def atacar(self) -> int: # metodo para atacar que devuelve valor
12+
def atacar(self) -> int:
13+
pass
14+
15+
@abstractmethod
16+
def evadir(self) -> bool:
1317
pass
1418

1519
@abstractmethod
16-
def evadir(self) -> bool: # metodo para evadir que devuelve true o false
20+
def devolver_vida(self) -> int:
1721
pass
1822

1923
@abstractmethod
20-
def mostrar_vida(self) -> int: # metodo para mostrar la vida
24+
def recibir_daño(self, daño) -> None:
2125
pass
2226

2327

2428
class Wolverine(Interfaz):
25-
def __init__(self) -> None:
26-
self.vida = 300
29+
def __init__(self, vida) -> None:
30+
self.vida = vida
2731

2832
def atacar(self) -> int:
29-
daño_aleatorio = random.randint(10, 120) # genera un rango aleatorio
33+
daño_aleatorio = random.randint(10, 120)
3034
return daño_aleatorio
3135

3236
def evadir(self) -> bool:
33-
num_evasion = random.randint(
34-
0, 100
35-
) # si sale menor que la probabilidad de evadir, True
37+
num_evasion = random.randint(0, 100)
3638
return num_evasion < 20
3739

38-
def mostrar_vida(self) -> int: # devuelve la vida actual
40+
def devolver_vida(self) -> int:
3941
return self.vida
4042

43+
def recibir_daño(self, daño) -> None:
44+
self.vida -= daño
45+
4146

4247
class Deadpool(Interfaz):
43-
def __init__(self) -> None:
44-
self.vida = 300
48+
def __init__(self, vida) -> None:
49+
self.vida = vida
4550

4651
def atacar(self) -> int:
4752
daño_aleatorio = random.randint(10, 100)
@@ -51,47 +56,84 @@ def evadir(self) -> bool:
5156
num_evasion = random.randint(0, 100)
5257
return num_evasion < 25
5358

54-
def mostrar_vida(self) -> int:
59+
def devolver_vida(self) -> int:
5560
return self.vida
5661

62+
def recibir_daño(self, daño) -> None:
63+
self.vida -= daño
5764

58-
wolverine = Wolverine()
59-
deadpool = Deadpool()
65+
66+
wolverine = Wolverine(500)
67+
deadpool = Deadpool(500)
6068

6169

62-
# Faltaría hacer que simule hasta que uno gane, con un bucle
6370
class Simulador:
6471
def __init__(self) -> None:
6572
self.turno = 0
6673

6774
def siguiente_turno(self):
75+
print("Cambio de turno")
76+
time.sleep(1)
6877
self.turno += 1
69-
# agregar la espera de 1 seg
7078

7179
def omitir_turno(self):
80+
print("Turno omitido por golpe critico")
81+
time.sleep(1)
7282
self.turno += 2
73-
# agregar la espera de 1 seg
7483

7584
def simular(self):
76-
77-
if self.turno % 2 == 0:
78-
daño = wolverine.atacar()
79-
exito_evadir = deadpool.evadir()
80-
if exito_evadir:
81-
print("Deadpool ha evadido con exito")
82-
Simulador.siguiente_turno(self)
83-
85+
"""Si la vida de uno es menor a 0 finaliza el combate,
86+
si el turno es par ataca Wolverino, si no Deadpool"""
87+
88+
while True:
89+
vida_wolverine = wolverine.devolver_vida()
90+
vida_deadpool = deadpool.devolver_vida()
91+
if vida_deadpool <= 0:
92+
print("Wolverine derroto a su oponente")
93+
break
94+
elif vida_wolverine <= 0:
95+
print("Deadpool derroto a su oponente")
96+
break
8497
else:
85-
if daño == 120:
86-
print("Wolverine ha inflingido golpe critico")
87-
print("Volverá a atacar en el siguiente turno")
88-
Simulador.omitir_turno(self)
89-
90-
print(f"Wolverine ha inflingido {daño} puntos de daño.")
91-
Simulador.siguiente_turno(self)
92-
else:
93-
daño = deadpool.atacar()
94-
exito_evadir = wolverine.evadir()
98+
print(
99+
f"Puntos de vida\nWolverine: {vida_wolverine}\nDeadpool: {vida_deadpool}"
100+
)
101+
print(f"\nTurno {self.turno}")
102+
103+
if self.turno % 2 == 0:
104+
daño = wolverine.atacar()
105+
exito_evadir = deadpool.evadir()
106+
if exito_evadir:
107+
print("Deadpool ha evadido con exito")
108+
Simulador.siguiente_turno(self)
109+
110+
else:
111+
deadpool.recibir_daño(daño)
112+
113+
if daño == 120:
114+
print("Wolverine inflinge golpe critico")
115+
print("Volverá a atacar en el siguiente turno")
116+
Simulador.omitir_turno(self)
117+
118+
print(f"Wolverine inflinge {daño} puntos de daño.")
119+
Simulador.siguiente_turno(self)
120+
121+
else:
122+
daño = deadpool.atacar()
123+
exito_evadir = wolverine.evadir()
124+
if exito_evadir:
125+
print("Wolverine ha evadido con exito")
126+
Simulador.siguiente_turno(self)
127+
128+
else:
129+
wolverine.recibir_daño(daño)
130+
if daño == 100:
131+
print("Deadpool inflinge golpe critico")
132+
print("Volverá a atacar en el siguiente turno")
133+
Simulador.omitir_turno(self)
134+
135+
print(f"Deadpool inflinge {daño} puntos de daño.")
136+
Simulador.siguiente_turno(self)
95137

96138

97139
simulador = Simulador()

0 commit comments

Comments
 (0)