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

简单的游戏问题

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

}


感谢您的关注。任何意见,将不胜感激。

http://img.mukewang.com/629c1c5d00014ef003800395.jpg

倚天杖
浏览 100回答 1
1回答

慕无忌1623718

我需要弄清楚龙是否距离玩家 2 步(或更少)您可以这样看:如果距离超过 2 次,则 X 坐标相差 3+,或者 Y 坐标相差 3+,或者两者都有。或者,两个差值必须小于等于 2。所以函数可以是:function isTwoMovesAway(player, dragon){&nbsp; return Math.abs(player.x - dragon.x) <= 2 && Math.abs(player.y - dragon.y) <= 2;}如果龙在追赶玩家,我如何确定龙应该移动到哪个方格?确定从龙的坐标到玩家坐标的方向是:更大、更少或相同。如果更大,加1;如果小于,则减 1;如果相同,则添加 0。对 X 和 Y 坐标执行此操作。function moveDragon(){&nbsp; const xDiff = player.x > dragon.x&nbsp; &nbsp; ? 1&nbsp; &nbsp; : player.x < dragon.x&nbsp; &nbsp; &nbsp; ? -1&nbsp; &nbsp; &nbsp; : 0;&nbsp; const yDiff = player.y > dragon.y&nbsp; &nbsp; ? 1&nbsp; &nbsp; : player.y < dragon.y&nbsp; &nbsp; &nbsp; ? -1&nbsp; &nbsp; &nbsp; : 0;&nbsp; dragon.x += xDiff;&nbsp; dragon.y += yDiff;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript