Сумма Сарвена, Пустыня Сарвен

// Чтобы отключить огненные ловушки, сложи наименьшее и наибольшее значения `trap.value`
// Иди к белой отметке X и скажи Китти результат.
// Сокруши всех огров, если осмелишься.
// Как только все огры повержены, иди на красную отметку X
// Ищи зелье, чтобы поправить здоровье.

var whiteX = {x:27, y:42};
var redX = {x:151 , y: 118};

while(true) {
    var fultrap = null;
    var nultrap = null;
    var trapsIndex = 0;
    var maxTrap = 9999;
    var minTrap = 0;
    var trapfire = hero.findByType("fire-trap");
    while(trapfire.length > trapsIndex) {
        var trap = trapfire[trapsIndex];
        if ( trap.value < maxTrap){
         fultrap = trap;
         maxTrap = fultrap.value;
        }
        if (trap.value > minTrap){
            nultrap = trap;
            minTrap = nultrap.value;
        }
        trapsIndex++;
    }
    hero.moveXY(27, 42);
    hero.say(maxTrap.value + minTrap.value );
    break;
}   
while(true) {
    var maxDistance = 0;
    var enemyIndex = 0;
    var asteroid = null;
    var enemies = hero.findEnemies();
    while(enemies.length > enemyIndex) {
        var enemy = enemies[enemyIndex];
        enemyIndex++;
        
        var distance = hero.distanceTo(enemy);
        if (distance > maxDistance){
            maxDistance = distance;
            asteroid = enemy;
        }
        if (asteroid){
            hero.attack(asteroid);
        }else{
            hero.moveXY(151, 118);
        }
    }
    break;
}

Пожалуйста, помогите мне понять, почему этот код не работает.
Когда появляются враги, он не атакует!
Даже не говори ничего Кити!

link–CodeCombat - Coding games to learn Python and JavaScript?

если вы замените эти 2 фрагмента кода на for loop, он может лучше подойти.
Например:

for (i in array) {
     code to be executed
     }

Не понимаю\ я заменил и все равно не работает.
for - это операторы pyton-- разве нет? я пищу на JS.
Я поменял
while true loop
на
while loop
… пращу помоги понять

Не могли бы вы опубликовать свой новый код?

Can you please post your code?

Кроме того, не следует переворачивать знак. Вместо “<” это могло бы подойти лучше “>”

То же самое здесь, я думаю, должно быть наоборот

while(true) {
    var fultrap = null;
    var nultrap = null;
    var trapsIndex = 0;
    var maxTrap = 9999;
    var minTrap = 0;
    var trapfire = hero.findByType("fire-trap");
    while (trapfire.length > trapsIndex) {
        var trap = trapfire[trapsIndex];
        if ( trap.value > maxTrap){
         fultrap = trap;
         maxTrap = fultrap.value;
        }
        if (trap.value < minTrap){
            nultrap = trap;
            minTrap = nultrap.value;
        }
        trapsIndex++;
    }
    var trapsum = (minTrap.value + maxTrap.value);
    hero.moveXY(27, 42);
    pet.say(trapsum);
    break;
}   

он не передает ничего китти. он что не понимает чего он должен сложить?

Можете прислать скриншот уровня? Чтобы я мог знать, что нужно для этого.

// Чтобы отключить огненные ловушки, сложи наименьшее и наибольшее значения `trap.value`
// Иди к белой отметке X и скажи Китти результат.
// Сокруши всех огров, если осмелишься.
// Как только все огры повержены, иди на красную отметку X
// Ищи зелье, чтобы поправить здоровье.

var whiteX = {x:27, y:42};
var redX = {x:151 , y: 118};

while(true) {
    var fultrap = null;
    var nultrap = null;
    var trapsIndex = 0;
    var maxTrap = 9999;
    var minTrap = 0;
    var trapfire = hero.findByType("fire-trap");
    while (trapfire.length > trapsIndex) {
        var trap = trapfire[trapsIndex];
        if ( trap.value > maxTrap){
         fultrap = trap;
         maxTrap = fultrap.value;
        }
        if (trap.value < minTrap){
            nultrap = trap;
            minTrap = nultrap.value;
        }
        trapsIndex++;
    }
    var trapsum = (minTrap.value + maxTrap.value);
    hero.moveXY(27, 42);
    pet.say(trapsum);
    break;
}   
while(true) {
    var maxDistance = 0;
    var enemyIndex = 0;
    var asteroid = null;
    var enemies = hero.findEnemies();
    while(enemies.length > enemyIndex) {
        var enemy = enemies[enemyIndex];
        enemyIndex++;
        
        var distance = hero.distanceTo(enemy);
        if (distance > maxDistance){
            maxDistance = distance;
            asteroid = enemy;
        }
        if (asteroid){
            hero.attack(asteroid);
        }else{
            hero.moveXY(151, 118);
        }
    }
}

может заделать иво как function и патом в while создать процесс – как этом уровне
link – CodeCombat - Coding games to learn Python and JavaScript?

// Собери 150 золота, избегая огров с помощью телепортов.
// С каждой победой уровень становится сложнее (но и вознаграждение больше).
// Если проиграешь, придётся ждать сутки до следующей попытки.
// Запомни, обстановка меняется каждый раз.

var leftTop = {x:5, y:49};
var leftBottom = {x:4, y:19};
var ringhtTop = {x:76, y:51};
var ringhtBottom = {x:77, y:19};

// aici incepe functia 

function coinPort(){
    var coinsColetPort = null;
    var coinsIndex = 0;
    var minDistance = 0;
    var coinColet = hero.findItems();
    while(coinColet.length > coinsIndex) {
        var coin = coinColet[coinsIndex];
        
        var distance = hero.distanceTo(coin);
        if (distance < minDistance){
            minDistance = distance;
            coinsColetPort = coin;
        }
        coinsIndex++;
    }
    return coinsColetPort;
}


function enemyOgredis(){
    var minDistances = 0;
    var enemyIndex = 0;
    var enemies = hero.findEnemies();
    var enemyOgres = null;

    while(enemies.length > enemyIndex) {
    var enemy = enemies[enemyIndex];

    var distances = hero.distanceTo(enemy);
    if (distances < minDistances){
        minDistances = distances;
        enemyOgres = enemy;
    }
  enemyIndex++;
    }
    return enemyOgres;
}


while(true) {
    var coinsCool = coinPort();
    var enemyDis = enemyOgredis();
    var flag = hero.findFlag();
    if (coinsCool){
        hero.moveXY(coinsCool.pos.x, coinsCool.pos.y);
        if (enemyDis && hero.distanceTo(enemyDis) > hero.distanceTo(leftTop)){
            hero.moveXY(leftTop);
        }else {
             hero.moveXY(coinsCool.pos.x, coinsCool.pos.y);
        }
        if (enemyDis && hero.distanceTo(enemyDis) > hero.distanceTo(leftBottom)){
            hero.moveXY(leftBottom);
        }else {
             hero.moveXY(coinsCool.pos.x, coinsCool.pos.y);
        }
        if (enemyDis && hero.distanceTo(enemyDis) > hero.distanceTo(ringhtTop)){
            hero.moveXY(ringhtTop);
        }else{
             hero.moveXY(coinsCool.pos.x, coinsCool.pos.y);
        }
        
        if (enemyDis && hero.distanceTo(enemyDis) > hero.distanceTo(ringhtBottom)){
            hero.moveXY(ringhtBottom);
        }else{
             hero.moveXY(coinsCool.pos.x, coinsCool.pos.y);
        }
    }
    if (flag){
    hero.pickUpFlag(flag);
    }
}



1 Like

С помощью этого кода максимальные и минимальные значения никогда не будут достигнуты, поскольку максимальное значение никогда не будет больше 9999, а минимальное никогда не будет меньше нуля.

var maxTrap = 0;
var minTrap = 9999