简单的游戏问题
第 1 部分
我正在编写一个简单的 JavaScript 游戏(玩起来很简单,不一定要为我编写代码)。
我需要弄清楚龙是否距离玩家 2 步(或更小)。龙可以斜向移动。
因此,在我的想象中,D1 不是两步之遥,但是,D2 是两步之遥。
我认为我让事情变得比实际情况更困难。
var player = {
x: 4,
y: 2
}
var dragon1 = {
x: 1,
y: 3
}
var dragon2 = {
x: 6,
y: 3
}
function isTwoMovesAway(player, dragon){
// I JUST DON'T KNOW HOW TO MATHEMATICALLY
// FIGURE THIS OUT because sometimes I end
// end up with a negative number.
xDiff = player.x - dragon.x;
yDiff = player.y - dragon.y;
numSquaresAway = [ insert your magic here ];
return (numSquaresAway<=2) ? true: false;
}
第 2 部分
这个问题的第二部分是,如果龙正在追击玩家,我如何计算出它应该移动到哪个方格?我希望龙走最短路线。
function moveDragon(){
pX = player.x;
pY = player.y;
dX = dragon1.x;
dY = dragon1.y;
// In this case, I would expect the Dragon to move
// to either 2,2 or 2,3
// Is this just a matter of adding to X ??
Dragon1.x = [ YOUR MATH HERE ];
Dragon1.y = [ YOUR MATH HERE ];
}
感谢您的浏览。任何建议将不胜感激。
最佳答案
I need to figure out if the Dragon is 2 moves away (or less) from the player
您可以这样看:如果移动距离超过 2 步,则 X 坐标相差 3+,或者 Y 坐标相差 3+,或者两者都相差 3+。或者,两个差值必须为 2 或更小。所以函数可以是:
function isTwoMovesAway(player, dragon){
return Math.abs(player.x - dragon.x) <= 2 && Math.abs(player.y - dragon.y) <= 2;
}
how do I figure out what square the Dragon should move to if he is pursuing the player?
确定从龙的坐标到玩家坐标的方向是:更大、更小还是相同。如果更大,则加1;如果小于,则减1;如果相同,则添加 0。对于 X 和 Y 坐标都执行此操作。
function moveDragon(){
const xDiff = player.x > dragon.x
? 1
: player.x < dragon.x
? -1
: 0;
const yDiff = player.y > dragon.y
? 1
: player.y < dragon.y
? -1
: 0;
dragon.x += xDiff;
dragon.y += yDiff;
}
关于javascript - 如何判断玩家距离敌人是否 2 个格子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60897293/