Нужна помощь с уровнем "Дикие Лошади"


#1

В уровне герой должен идти в точку, координата х которой больше или меньше координаты х лошади на 7 (x1 и х2):

if horse:
x1 = horse.pos.x - 7
x2 = horse.pos.x + 7

    if x1 >= 1:
        # Идите к y - координате лошади, но вместо x используйте x1.
        hero.moveXY(x1, horse.pos.y)
    elif x2 <= 79:
        # Идите к y - координате лошади, но вместо x используйте x2.
        hero.moveXY(x2, horse.pos.y)

Не могли бы вы объяснить, почему именно так? Почему бы не сделать так, чтобы герой двигался на позицию лошади?


#2

Сложно сказать если честно. Уровень старый и без документации. Могу предположить что автор хотел показать как отрабатывать крайние случай и выход за границы координат, но получить такой случай очень сложно на данном уровне. Спасибо за вопрос. Обсудим с командой “смысл” данного уровня.


#3

А как вообще пройти этот уровень? У меня вот такой код и он не работает

while(true) {
    // Как тебе найти ближайший союзный юнит?
    // horse = ?
    var horse = hero.findNearestByType("horse");
    if (horse) {
        var x1 = horse.pos.x - 7;
        var x2 = horse.pos.x + 7;
        if (x1 >= 1) {
            // Иди к координате `y` лошади, используя `x1` в качестве координаты `x`.
            hero.moveXY(x1, horse.pos.y);
        } else if (x2 <= 79) {
            // Иди к координате `y` лошади, используя `x2` в качестве координаты `x`.
            hero.moveXY(x2, horse.pos.y);
        }
        var distance = hero.distanceTo(horse);
        if (distance <= 10) {
            hero.say("Whoa");
            // Идите к красной отметке X, чтобы вернуть лошадь в стойло.
            hero.moveXY(27, 54);
            // Снова возвращайся на пастбище, ищи следующую лошадь.
            hero.moveXY(41, 18);
        }
    }
}