Функция takePath неверна при вводе

function takePath(jstring, move) {
    var string = JSON.parse(jstring);
    var crystal = 0;
    var grid = string['grid'];
    var start = string['start'];
    var x = start[0];
    var y = start[1];
    for (var i of move) {
        start = movePlayer(string, move[i]);
        if (grid[y][x] === 0 || grid[y][x] === 2) {
            if (grid[y][x] == 2) {
                crystal += 1;
                grid[y][x] = 0;
            }
        }
        var object = {
            "location": start, 
            "crystals": crystal
        };
        return object;
    }
}

function movePlayer(string, move){
    var start = string['start'];
    var grid = string['grid'];
    var x = start[0];
    var y = start[1];
    var len = grid.length;
    var xaxis = 0;
    var yaxis = 0;
    if (move === 'w'){
        y = start[1] - 1;
        yaxis = yaxis - 1;
        if (y > len - 1){
            return start;
        }
        if (y < 0){
            return start;
        }
        if (grid[y][x] == 1){
            return start;
        }
        if (grid[y][x] == 3){
            return start;
        }
        if (grid[y][x] == 7){
            return start;
        }
        else;
        return [x,y];
    }
    if (move === 'a'){
        x = start[0] - 1;
        xaxis = xaxis - 1;
        if (x > len - 1){
            return start;
        }
        if (x < 0){
            return start;
        }
        if (grid[y][x] == 1){
            return start;
        }
        if (grid[y][x] == 3){
            return start;
        }
        if (grid[y][x] == 7){
            return start;
        }
        else;
        return [x,y];
    }
    if (move === 's'){
        y = start[1] + 1;
        yaxis = yaxis + 1;
        if (y > len - 1){
            return start;
        }
        if (y < 0){
            return start;
        }
        if (grid[y][x] == 1){
            return start;
        }
        if (grid[y][x] == 3){
            return start;
        }
        if (grid[y][x] == 7){
            return start;
        }
        else;
        return [x,y];
    }
    if (move === 'd'){
        x = start[0] + 1;
        xaxis = xaxis + 1;
        if (x > len - 1){
            return start;
        }
        if (x < 0){
            return start;
        }
        if (grid[y][x] == 1){
            return start;
        }
        if (grid[y][x] == 3){
            return start;
        }
        if (grid[y][x] == 7){
            return start;
        }
        else;
        return [x,y];
    }
    return start;
}

Часть 3: Давайте теперь расширим функцию takePath, чтобы отслеживать количество кристаллов, собранных игроком. Начните с решения части 2 и расширьте его для этой части. Напишите функцию с именем «takePath», которая принимает в качестве параметров строку JSON, представляющую уровень в указанном выше формате, и массив строк, представляющих движения игрока в том порядке, в котором они выполняются, где каждый ход - либо «w», «a» , "s" или "d", используя тот же стандарт, что и в частях 1 и 2. Возвращает объект, содержащий ключи "location", сохраняющий новое местоположение игрока в виде массива в формате [x, y] и "кристаллы", сохраняющие количество кристаллов, собранных игроком на пути. Вы можете предположить, что на уровне нет ключей, запертых дверей, ботинок, плиток лавы или выхода. Также можно предположить, что игрок не запускается на кристалле

возвращено: {'кристаллы': 0, 'местоположение': [2, 1]} ожидается: {'кристаллы': 1, 'местоположение': [3, 1]}

Вот ввод: ['{"начало": [2, 1], "сетка": [[1, 1, 0, 1], [1, 2, 0, 2], [2, 2, 2, 1] ], [0, 1, 0, 0]]} ', [' d ',' w ',' s ',' a ',' d ',' d ']]]

Код нам НЕ был дан; Я написал это сам. Я пытаюсь понять, почему вывод неверен.

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

Jonas Wilms 06.11.2018 17:59

Я отредактировал соответственно, спасибо.

J. Doe 06.11.2018 18:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
136
0

Другие вопросы по теме