javascript - 如何判断玩家是否距离敌人 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 ];
}
感谢您的关注。任何意见,将不胜感激。
解决方案
我需要弄清楚龙是否距离玩家 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;
}
推荐阅读
- flutter - 是什么意思 ”!。” 在飞镖?“!”的等效代码是什么?? -扑
- java - 为什么这个 4 字节的十六进制数不能转换成 int?
- airflow - 如何在以编程方式触发 dag 时跳过任务
- mysql - 将主键转换为mysql中的唯一键
- python - 十六进制字符串列表到十六进制文字
- python - Django ImportError:使用 Docker 时无法导入 Django
- flutter - 单选按钮不会更改 Flutter 中的选择
- ios - Wireguard-apple 构建失败并出现错误:ExternalBuildToolExecution 失败,退出代码为非零
- javascript - Bootstrap Pills 选项卡:下一个和上一个按钮无法正常工作
- user-interface - wxpython动态改变Choice的内容