javascript - 如何判断玩家距离敌人是否 2 个格子

标签 javascript arrays math

简单的游戏问题

第 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 ];
}

感谢您的浏览。任何建议将不胜感激。

Grid Question

最佳答案

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/

相关文章:

linux - Jiffies Counter Over Flow 案例 + Linux

javascript - 关于 jQuery 对象中的 "this"

javascript - 使用可能更少的内存将图像转换为文本

javascript - 从 Google Maps Javascript API 中的重叠层获取信息

php - Symfony 错误 - EntityManager#persist() 期望参数 1 是一个实体对象,数组给定

php - 如何获取数字的整数部分和小数部分?

javascript - jQuery。运行时更改 setInterval 时间

PHP - 复制数组更改内部指针?

使用atoi将char数组转换为整数导致段错误

math - javascript-标准化数字,使其介于0到1之间