首页 > 解决方案 > 涉及数组和 json javascript 的基本 2d 游戏问题

问题描述

2d javascript 问题

现在这个游戏的格式已经确定了,让我们开始一次一小部分地编写一些功能。对于这一部分,编写一个名为“movePlayer”的函数,该函数将一个 JSON 字符串作为参数,该字符串表示上述格式的关卡,一个字符串表示玩家的第一个动作。根据玩家打算移动的方向,移动字符串将是“w”、“a”、“s”或“d”,“w”表示向上,“a”表示向左,“s”表示向下,和“d”代表权利。以 [x, y] 格式的数组返回新玩家位置。记得检查墙壁、上锁的门和出口,因为玩家无法穿过这些(你可以假设玩家没有钥匙,也没有所有的水晶)。你可以假设玩家没有走进熔岩砖。如果玩家走进地图边缘,则应将其视为一堵墙(例如,在已经在地图右边缘时向右走不应移动玩家)

function movePlayer(json_object, f){
    var level = JSON.parse(json_object);
    var grid = level["grid"];
    var pos = level["start"];
    var x = pos[0];
    var y = pos[1];

    if (f=="w"){
        y = y - 1;
    }
    else if (f=="s"){
        y = y + 1;
    }
    else if (f=="a"){
        x = x - 1;
    }
    else if(f=="d"){
        x = x + 1;
    }


    if (grid[y][x] == 1 || grid[y][x] == 3 || grid[y][x] == 7){
        pos = level["start"];
    }


    else if (grid.includes(grid[y][x])){
        pos = [x, y];
    }
    else{
        pos = level["start"]
    }
    return pos;
}

输入 ['{"start": [2, 1], "grid": [[1, 1, 0, 1], [0, 3, 0, 7], [1, 0, 0, 1], [0, 1, 0, 0]]}', 'w']

返回:[2, 1] 预期:[2, 0]

我很困惑,不知道如何解决这个问题,如果有人能帮助我,我将不胜感激。

标签: javascriptarraysjson

解决方案


您得到 [2,0],但随后陷入检查,最后一条else语句将您返回到 [2,1],这是您的start.

我认为你在grid.includes(grid[y][x])条件上是错误的,它总是错误的,因为grid是数组数组,你正在检查它的确切整数值。


推荐阅读