Не получается пройти уровень


#1

Уровень Алмазная дюжина в Пустыне Сарвена. Требуется собрать оптимальное количество золота. Имеется такой код(комментарии удалены):

function findMostHealth(enemies) {
var target = null;
var targetHealth = 0;
var enemyIndex = 0;
while(enemyIndex < enemies.length) {
var enemy = enemies[enemyIndex];
if(enemy.health > targetHealth) {
target = enemy;
targetHealth = enemy.health;
}
enemyIndex += 1;
}
return target;
}
function findOptimalCoin(coins) {
var bestCoin = null;
var coinValue = 0;
var coinIndex = 0;
while(coinIndex < coins.length) {
var c = coins[coinIndex];
if((c.value/hero.distanceTo©) > coinValue) {
bestCoin = c;
coinValue = c.value/hero.distanceTo©;
}
coinIndex += 1;
}
return bestCoin;
}

while(true) {
var enemies = hero.findEnemies();
var enemy = findMostHealth(enemies);
if(enemy && enemy.health > 15) {
while(enemy.health > 0) {
hero.attack(enemy);
}
} else {
var coins = hero.findItems();
var coin = null;
coin = findOptimalCoin(coins);
if(coin) {
hero.moveXY(coin.pos.x, coin.pos.y);
}
}
}
Подскажите,пожалуйста, где ошибка?


#2

Remove var coin=null;


#3

var coin=null; - строка присутствовала в изначальном коде,к тому же удаление этой строки ничего не дает кроме ошибки. В процессе выполнения мной была добавлена только функция findOptimalCoin().


#4

Are you sure about this line?
Вы уверены, что об этой линии? ( Google Translate )


#5

Строка правильная, рабочая.


#6

В итоге оказалось что персонажу просто не хватало скорости добежать до нужного предмета.помогли более быстрые боты,кольцо к скорости и пришлось несколько раз сгенерировать уровень.


#7

тоже прошел только раза с 5 и только с кольцом и сапогами… (хотя с такой скоростью герой иногда умудряется взять несколько коинов). так и не понял где ошибка возможно в самом уровне…

function findMostHealth(enemies) {
var target = null;
var targetHealth = 0;
var enemyIndex = 0;
while(enemyIndex < enemies.length) {
var enemy = enemies[enemyIndex];
if(enemy.health > targetHealth) {
target = enemy;
targetHealth = enemy.health;
}
enemyIndex += 1;
}
return target;
}

function valueOverDistance(item) {
return item.value / hero.distanceTo(item);
}

// Return the item with the highest valueOverDistance(item)
function findBestItem(items) {
var bestItem = null;
var bestValue = 0;
var i = 0;

// Loop over the items array.
// Find the item with the highest valueOverDistance()
while(items.length > i) {
    var item = items[i];  
    var value = valueOverDistance (item);

if( value > bestValue){
bestValue = value;
bestItem = item;
i++;
}
i++;
}
return bestItem;
}

while(true) {
var enemies = hero.findEnemies();
var enemy = findMostHealth(enemies);
if(enemy && enemy.health > 15) {
while(enemy.health > 0) {
if( hero.distanceTo(hero.findNearestEnemy()) < 8 && enemy && hero.isReady(“cleave”)){ hero.cleave(enemy); }
else if(enemy && hero.isReady(“bash”) && enemy.type === “ogre”){ hero.bash(enemy); }
else if(enemy){hero.attack(enemy);
}
}
} else {
var coins = hero.findItems();
var coin = null;
coin = findBestItem(coins);
if(coin) {
hero.moveXY(coin.pos.x, coin.pos.y);
}
}
}


#8

i++ только один раз нужно


#9

Здравствуйте! подскажите, где ж я косячу с уровнем “Известный враг”? Java script. Выжила, но не победила.

var enemy1 = “Kratt”;
var enemy2 = “Gert”;
var enemy3 = “Ursa”;
hero.attack(enemy1);
hero.attack(enemy1);
hero.attack(enemy2);
hero.attack(enemy2);
hero.attack(enemy3);
hero.attack(enemy3);