涉及数组和json javascript的基本2d游戏问题

时间:2018-11-28 12:17:21

标签: javascript arrays json

2d javascript question

现在已经确定了该游戏的格式,让我们开始一次编写一些小功能。对于这一部分,编写一个名为“ movePlayer”的函数,该函数以代表上述格式的关卡的JSON字符串和代表播放器的第一动作的字符串作为参数。根据玩家打算用“ w”向上移动,“ a”左移动,“ s”向下移动的方向,移动字符串将为“ w”,“ a”,“ s”或“ d”,和“ 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;
}

功能movePlayer在输入['{“ 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]

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

1 个答案:

答案 0 :(得分:1)

您得到[2,0],但随后受到检查,最后一条else语句使您返回到[2,1],即您的start

我认为您误以为grid.includes(grid[y][x])的情况,它总是错误的,因为grid是一个数组数组,您正在检查它的确切整数值。