javascript - 涉及数组和 json javascript 的基本 2d 游戏问题
问题描述
现在这个游戏的格式已经确定了,让我们开始一次一小部分地编写一些功能。对于这一部分,编写一个名为“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]
我很困惑,不知道如何解决这个问题,如果有人能帮助我,我将不胜感激。
解决方案
您得到 [2,0],但随后陷入检查,最后一条else
语句将您返回到 [2,1],这是您的start
.
我认为你在grid.includes(grid[y][x])
条件上是错误的,它总是错误的,因为grid
是数组数组,你正在检查它的确切整数值。
推荐阅读
- spring-cloud - 使用 Spring Cloud Bus Kafka 的多个实例
- python-3.x - 从 Python 中的 XSD 文件中提取带有文档的枚举
- python - 如何在numpy中沿轴应用操作
- java - 无法在文本视图中显示所需的结果,Android Studio
- r - 如何汇总 R 中某个位置内存在/不存在数据的多个观察结果?
- python - 从存储为熊猫数据框中的字符串的列表中提取项目
- web - 我如何证明某个 http 资源在特定时间存在于服务器中?(存在证明/POE)
- docker - docker-compose 中的伪 tty 分配
- android - FirebaseAnalytics 缺少几个参数常量
- python - 带有 y 变量名称的图例,不仅是处理