为了账号安全,请及时绑定邮箱和手机立即绑定

如何判断玩家是否距离敌人 2 个方格

如何判断玩家是否距离敌人 2 个方格

倚天杖 2022-06-05 11:00:23
简单的游戏问题第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 ];}感谢您的关注。任何意见,将不胜感激。
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我需要弄清楚龙是否距离玩家 2 步(或更少)


您可以这样看:如果距离超过 2 次,则 X 坐标相差 3+,或者 Y 坐标相差 3+,或者两者都有。或者,两个差值必须小于等于 2。所以函数可以是:


function isTwoMovesAway(player, dragon){

  return Math.abs(player.x - dragon.x) <= 2 && Math.abs(player.y - dragon.y) <= 2;

}

如果龙在追赶玩家,我如何确定龙应该移动到哪个方格?


确定从龙的坐标到玩家坐标的方向是:更大、更少或相同。如果更大,加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;

}


查看完整回答
反对 回复 2022-06-05
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信