1+ from random import randint
2+ import time
3+
4+
5+ class BattleSystem :
6+ def damage (self ):
7+ return randint (self .damage_range [0 ], self .damage_range [1 ])
8+
9+ def critical_hit (self , damage ):
10+ return damage == self .damage_range [1 ]
11+
12+ def evasion_chance (self ):
13+ return randint (0 , 100 ) < self .evasion
14+
15+ def dead (self ):
16+ return self .health <= 0
17+
18+ def __str__ (self ):
19+ return (
20+ f'Vida { self .name } : { self .health } '
21+ )
22+
23+
24+ class Deadpool (BattleSystem ):
25+ def __init__ (self , health : int ):
26+ self .name = 'Deadpool'
27+ self .health = health
28+ self .damage_range = [10 , 100 ]
29+ self .regeneration = 1
30+ self .evasion = 25
31+
32+
33+ class Wolverine (BattleSystem ):
34+ def __init__ (self , health : int ):
35+ self .name = 'Wolverine'
36+ self .health = health
37+ self .damage_range = [10 , 120 ]
38+ self .regeneration = 1
39+ self .evasion = 20
40+
41+
42+ class BattleSimulation :
43+ @staticmethod
44+ def battle (deadpool : Deadpool , wolverine : Wolverine ):
45+ turn = 1
46+
47+ while True :
48+ #Comprueba si deadpool esta vivo
49+ if deadpool .dead ():
50+ print ("\n Deadpool ha sido derrotado. ¡Wolverine gana!\n " )
51+ break
52+
53+ print (f'\n Estamos en el turno { turn } ' )
54+
55+ #Si estamos empezando aun no se han realizado ataques
56+ if turn == 1 :
57+ damage = 0
58+ #Ataca Deapool si no le han hecho un daño critico
59+ if not wolverine .critical_hit (damage ):
60+ damage = deadpool .damage ()
61+
62+ if wolverine .evasion_chance ():
63+ print ('Wolverine esquiva el ataque!!' )
64+ else :
65+ wolverine .health -= damage
66+ print (f'+ Deadpool hace { damage } puntos de daño.' )
67+ print (wolverine )
68+
69+ #Comprueba si wolverine esta vivo
70+ if wolverine .dead ():
71+ print ("\n Wolverine ha sido derrotado. ¡Deadpool gana!\n " )
72+ break
73+
74+ # Ataca wolverine si no le han hecho un daño critico
75+ if not deadpool .critical_hit (damage ):
76+
77+ damage = wolverine .damage ()
78+ if deadpool .evasion_chance ():
79+ print ('Deadpool esquiva el ataque!!' )
80+ else :
81+ deadpool .health -= damage
82+ print (f'+ Wolverine hace { damage } puntos de daño.' )
83+ print (deadpool )
84+
85+ time .sleep (5 )
86+ turn += 1
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
98+
99+
100+ # Pruebas
101+ deadpool_char = Deadpool (int (input ('Introduce la vida inicial de Deadpool: ' )))
102+ print (deadpool_char )
103+ wolverine_char = Wolverine (int (input ('Introduce la vida inicial de Wolverine: ' )))
104+ print (wolverine_char )
105+
106+ BattleSimulation .battle (deadpool_char , wolverine_char )
0 commit comments