【发布时间】:2021-01-21 19:44:48
【问题描述】:
我正在尝试获取 2 个对象位置,因此我可以让我编写的 AI 不会穿过墙壁。我的问题是,当我将它们添加到脚本时,它会忽略任何额外的 if 语句。
function findEntities() { //Function for finding the players position and setting the playerLeft and playerTop variables
playerLeft = parseInt(player.style.left);
playerTop = parseInt(player.style.top);
enemyLeft = parseInt(enemy.style.left);
enemyTop = parseInt(enemy.style.top);
WallLeft = parseInt(wall.style.left);
WallTop = parseInt(wall.style.top);
chooseMovement();
setTimeout(findEntities, 1000) //starting a loop.
}
findEntities();
function chooseMovement() { //Chooses the direction to move, moves on X-axis first, then Y-axis
if((playerLeft - 64) > enemyLeft) || ((WallLeft - 64) != enemyLeft) {
Right();
} else if((playerLeft + 64) < enemyLeft) {
Left();
} else if((playerTop + 64) < enemyTop) {
Up();
} else if((playerTop - 64) > enemyTop) {
Down();
} else {
damagePlayer();
}}
function Right() { //Moves the enemy right
enemy.style.left = parseInt(enemy.style.left) + 64;
enemyLeft += 64;
}
function Left() { //Moves the enemy left
enemy.style.left = parseInt(enemy.style.left) - 64;
enemyLeft -= 64;
}
function Up() { //Moves the enemy up
enemy.style.top = parseInt(enemy.style.top) - 64;
enemyTop -= 64;
}
function Down() { //Moves the enemy down
enemy.style.top = parseInt(enemy.style.top) + 64;
enemyTop += 64;
}
【问题讨论】:
-
if((playerLeft - 64) > enemyLeft) || ((WallLeft - 64) != enemyLeft)— 这是语法错误。请使用const或let并正确确定变量的范围;这将避免几个潜在的问题。 “它忽略了任何额外的 if 语句” — 不,没有任何东西被忽略。具体是什么问题? -
你能用一个它忽略的附加语句的例子来更新代码吗?
-
我的问题是它忽略了``` if((playerLeft - 64) >enemyLeft) || ((WallLeft - 64) !=enemyLeft) { Right(); ``` 即使我将 Or 更改为另一个嵌套的 if 语句
-
使用browser console (dev tools)(点击
F12)并阅读任何错误。语法无效。嵌套的if语句和||不等效。仔细考虑这个函数的逻辑。 -
@Brice 仔细看括号。它说
if ( (…)…) || ( (…)…)。那是无效的。你的是if ( (…) || (…) ),当然是有效的。
标签: javascript html artificial-intelligence