2D芯片游戏JavaScript数组粘在最后一部分

时间:2018-11-28 16:12:37

标签: javascript arrays 2d

image2

现在,您具有可以将播放器移动单个空间的功能,您将使用此功能处理播放器的整个路径。
编写一个名为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]

0 个答案:

没有答案