我正在尝试使用同时用作输入字段和游戏显示的输入框来创建一个简单的寻宝游戏。游戏中有一个英雄-h和多个杀手-k,它们由计算机控制,试图杀死该英雄。这是我拥有的示例板:到目前为止,我已经对一些if语句进行了硬编码,以检查英雄和给定的杀手的坐标(基于他们当前所在的输入框),以确定杀手应该以哪种方式移动(向上,向下,向右,向左和向左)对角线)。但是,它并不总是找到最佳的发展方向。if (killerX < heroX) { if (killerY < heroY) { console.log("move down andright"); } else if (killerY > heroY) { console.log("move up and right"); }}我当时正在考虑使用Dijkstra的算法,但是我不知道如何针对给定的问题来实现它。我正在寻找一种更有效的替代方法,以发现凶手必须采取哪种行动才能与英雄保持距离。
3 回答

繁花不似锦
TA贡献1851条经验 获得超4个赞
如果您的地图上没有任何墙,那是一个非常琐碎的练习!
您的代码中有2个问题。首先,您不处理案件killerX > heroX,其次,您必须逐步移动,而不是2步2步。
let diffX = killerX - playerX;
let diffY = killerY - playerY;
if(Math.abs(diffX) > Math.abs(diffY)) {
if(diffX>0) {
console.log('move left');
}
else {
console.log('move right');
}
} else {
if(diffY>0) {
console.log('move up');
} else {
console.log('move down');
}
}
添加回答
举报
0/150
提交
取消