Не срабатывает счетчик score

240
16 января 2018, 14:29

Не срабатывает счетчик score. Т.е. золото собираю (тип золота и номинал случайно выпадают), а игра это не отслеживает. Есть вероятность что на уровне баг - поэтому оставляю ссылку на уровень (исходный код открыт).

https://codecombat.com/play/level/accounts-department?

// Подсчитывай ценность собранных предметов и веди счёт игры.
// Расставь персонажи.
var hero = game.spawnHeroXY("captain", 40, 34);
hero.maxSpeed = 20;
var generator1 = game.spawnXY("generator", 4, 34);
var generator2 = game.spawnXY("generator", 76, 34);
generator1.spawnDelay = 7;
generator2.spawnDelay = 7;
// Сундуки самоцветов - наиболее ценные предметы.
game.spawnXY("chest", 68, 56);
game.spawnXY("chest", 14, 14);
// Эта функция порождает случайный предмет в случайном месте.
function spawnRandomItem() {
    var itemNumber = game.randomInteger(1, 3);
    var x = game.randomInteger(12, 68);
    var y = game.randomInteger(12, 56);
    if (itemNumber == 1) {
        game.spawnXY("bronze-coin", x, y);
    }
    else if (itemNumber == 2) {
        game.spawnXY("gold-coin", x, y);
    }
    else if (itemNumber == 3) {
        game.spawnXY("gem", x, y);
    }
}
var itemInterval = 1;
var itemSpawnTime = 0;
function checkSpawnTimer() {
    if (game.time >= itemSpawnTime) {
        spawnRandomItem();
        itemSpawnTime += itemInterval;
    }
}
game.score = 0;
// Событие "collect" срабатывает при сборе чего-либо.
function onCollect(event) {
    // `event.target` содержит сборщика.
    var collector = event.target;
    // `event.other` содержит собранный предмет.
    var item = event.other;
    if (item.value) {
        // Увеличивай счёт игры на ценность предмета:
        game.score += item.value;
    }
}
// Назначь обработчик `onCollect` для "hero" и события "collect".
game.setActionFor("hero", "collectn", onCollect);
// Настрой цели и интерфейс.
var endTime = 30;
// Необходимый для выигрыша счёт.
var requiredScore = 250;
var goldGoal = game.addManualGoal('Собери не менее 250 золота за 30 секунд.');
ui.track(game, "score");
ui.track(game, "time");
function checkGoals() {
    if (game.time >= endTime) {
        // Если счёт игры равен или больше `requiredScore`.
        if (game.score >= requiredScore)
            // Установи свойство успешности `goldGoal` true
            goldGoal = true;
        // Иначе `goldGoal` не достигнуто:
        goldGoal = false;
    }
}
while(true) {
    checkSpawnTimer();
    checkGoals();
}
READ ALSO
ECMAScript Script Jobs. Как инициировать работу этого типа?

ECMAScript Script Jobs. Как инициировать работу этого типа?

ECMAScript определяет 2 типа работ как обязательные: Promise Jobs и Script JobsСитуация с Promise Jobs понятна: создал себе Promise или асинхронную функцию - и все,...

147
Node.js node-config vs defer()

Node.js node-config vs defer()

День добрый, помогите разобраться:

159
Приватные свойства в js

Приватные свойства в js

Я не знаю как правильно сказать, но как сделать свойство, которое было бы не видно внешне, но было бы видно методам установленных через прототип?...

233