倚天杖
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;
}
添加回答
舉報
0/150
提交
取消