1. Python / Говнокод #19632

    −43

    1. 1
    2. 2
    damage, self.magic_shield_hp = sorted([0, magic_shield_hp - damage])
    damage = -damage

    Интуитивно понятный способ реализовать урон, пробивающий защиту.

    Запостил: Soul_re@ver, 15 Марта 2016

    Комментарии (14) RSS

    • Сегодня на ревью прислали исправленную версию:
      damage, self.magic_shield_hp = map(abs, sorted([0, self.magic_shield_hp - damage]))

      Пойду, пообщаюсь с человеком лично.
      Ответить
      • Передай от меня ногой в пах
        Ответить
      • А чо не так? Ну можно переписать в лестницу из ифов.
        Ответить
        • Лестницу из одного ифа.
          Ответить
        • Если я не ошибаюсь, это сводится к
          x = min(self.magic_shield_hp, damage)
          damage -= x
          self.magic_shield_hp -= x

          что явно проще и легче читается.
          Ответить
          • Ответить
          • Дубово, зато логика сразу понятна:
            if damage > magic_shield_hp:
                # пробили щит
                damage -= magic_shield_hp
                magic_shield_hp = 0
            else:
                # не пробили щит
                magic_shileld_hp -= damage
                damage = 0
            Ответить
            • Кстати, я сначала map/sort именно в этот вариант перевёл, а затем пошёл на min.
              Ответить
            • magic_shileld_hp -= damage
              if (magic_shileld_hp < 0) {
              hp +=magic_shileld_hp;
              magic_shileld_hp = 0;
              }

              сделаем вид, что героя бьет не уроном, а щитом
              Ответить
    • Я ничего не понимаю в ваших питонах.
      Ответить
      • Вот, что-то похожее на ES6ES2015:
        var damage;
        [damage, this.magicShieldHp] = [0, magicShieldHp - damage].sort((x,y) => x-y);
        damage = -damage;
        var damage;
        [damage, this.magicShieldHp] = [0, this.magicShieldHp - damage]
            .sort((x,y) => x-y)
            .map(Math.abs);
        Ответить
      • пошел напитон!
        Ответить

    Добавить комментарий