现在,您具有可以将播放器移动单个空间的功能,您将使用此功能处理播放器的整个路径。
编写一个名为takePath
的函数,该函数以代表上述格式的级别的JSON
字符串和代表播放器动作的字符串数组作为参数作为参数,其中每个动作是“ w”,“ a”,“ s”或“ d”使用与第1部分相同的标准。
完成所有移动后,以格式[x,y]的数组形式返回新玩家位置。
您可能会认为没有钥匙,锁着的门,靴子,熔岩砖或水平仪上的出口。
尽管您可能需要修改movePlayer函数以满足您的新需求,但您还是需要从第1部分开始调用函数来完成这一部分。
function movePlayer(string, movement){
var parsed = JSON.parse(string)
var array = parsed['grid']
var answer = parsed['start']
var x = answer[0]
var y = answer[1];
var final = []
console.log(array[y][x-1])
if (movement == 'a') {
if ((x-1) >= 0) {
if (array[y][x-1] != 1);{
x = x - 1;
}
}
}
if (movement == 'd') {
if ((x+1) < array[y].length) {
if (array[y][x+1] != 1);{
x = x + 1;
}
}
}
if (movement == 'w') {
if ((y-1) >= 0) {
if (array[y-1][x] != 1);{
y = y - 1;
}
}
}
if (movement == 's') {
if ((y+1) < array[0].length) {
if (array[y+1][x] != 1);{
y = y + 1;
}
}
}
final = [x, y]
parsed['start'] = final;
JSON.stringify(parsed)
return final
} // end of MovePlayer function
function takePath(string, movementArray) {
var parsed = JSON.parse(string);
var start = parsed['start']
for (var movement of movementArray) {
string = JSON.stringify(parsed);
start = movePlayer(string, movement);
parsed['start'] = start;
}
return start;
} //end of takePath function
我的程序正在使播放器穿墙而出,我不知道如何解决。
函数takePath在输入['{“ start”:[2,0],“ grid”:[[1,1,0,1],[1,2,0,2],[2,2]中不正确,2、1],[0、1、0、0]]}',['d','d','w']]
返回:[3,0]
预期:[2,0]