Проведите битву монстров на Python: вычислите победителя в Heroes Might and Magic
Я хотел бы смоделировать битву монстров из Heroes Might & Magic. Проблема в том, что только мой монстр №2 (единорог) теряет свои очки. Что я делаю неправильно?
Объяснение боевой механики:
mon1 = {"type": "Roc", "hitpoints": 40, "number": 6, "damage":8 }
mon2 = {"type": "Unicorn", "hitpoints": 40, "number": 4, "damage":13}
- Рухи атакуют Единорогов, нанося 48 урона (6 * 8), убивая одного и нанося урон следующему, оставляя ему 32/40 очков жизни.
- Остальные 3 единорога атакуют Рух, нанося им 39 повреждений (3 * 13), убивая 0, но оставляя первому только 1/40 очков жизни.
- Повторяйте, пока в одной из групп не останется 0 единиц.
код
import math
def who_would_win(mon1, mon2):
mon1 = {'type': "Roc", 'hitpoints': 40, 'number': 6, 'damage' : 8 }
mon2 = {'type': "Unicorn", 'hitpoints': 40, 'number': 4, 'damage' : 13}
while mon1['number'] > 0 and mon2['number'] > 0:
mon2['hitpoints']*mon2['number']-mon1['damage']*mon1['number']
mon2['number'] = int(math.ceil((mon2['hitpoints']*mon2['number']-mon1['damage']*mon1['number'])/mon2['hitpoints']))
mon1['hitpoints']*mon1['number']-mon2['damage']*mon2['number']
mon1['number'] = int(math.ceil((mon1['hitpoints']*mon1['number']-mon2['damage']*mon2['number'])/mon1['hitpoints']))
if mon1['number'] > 0 and mon2['number'] <= 0:
return (f'{mon1["number"]} {mon1["type"]}(s) won')
if mon2['number'] > 0 and mon1['number'] <= 0:
return (f'{mon2["number"]} {mon2["type"]}(s) won')
else:
continue