Проведите битву монстров на 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}
  1. Рухи атакуют Единорогов, нанося 48 урона (6 * 8), убивая одного и нанося урон следующему, оставляя ему 32/40 очков жизни.
  2. Остальные 3 единорога атакуют Рух, нанося им 39 повреждений (3 * 13), убивая 0, но оставляя первому только 1/40 очков жизни.
  3. Повторяйте, пока в одной из групп не останется 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

0 ответов

Другие вопросы по тегам