我正在尝试做一个非常短的游戏,球进入一个球门,然后它们都消失了。我怎么做?我对Java相当陌生。问题在于评论//球进入球门(“ background(“ blue”)“是我实际尝试执行的占位符)。
goal.setAnimation("goal for design.png_1");
goal.scale = 0.75;
goal.rotation = 5;
var ball = createSprite(40, randomNumber(25, 360));
ball.setAnimation("animation_1");
function draw() {
background("white");
// BALL MOVING CODE
if (keyDown ("right")) {
ball.x = ball.x + 5;
}
if (keyDown ("down")) {
ball.y = ball.y + 5;
}
if (keyDown ("up")) {
ball.y = ball.y - 5;
}
if (keyDown ("left")) {
ball.x = ball.x - 5;
}
// ball in goal
if ((ball.x && ball.y) == (goal.x && goal.y)) {
background("blue");
}
drawSprites();
}
这里:
if ((ball.x && ball.y) == (goal.x && goal.y)) {
//...
}
假设您要检查ball
和goal
的坐标是否相同,则表达式不正确。
让我们看看如何计算此表达式:
(ball.x && ball.y)
计算为ball.y
,除非ball.x
虚假。也就是说,(-5 && 10)
-> 10
和(0 && 10)
-> 0
。(goal.x && goal.y)
。==
对1.和2进行比较。[在大多数情况下,这种逻辑显然无法正常工作。
例如,当ball
为{x: 1, y: 10}
而goal
为{x: 20, y: 10}
时:
(1 && 10) == (20 && 10)
-> (10) == (10)
-> true
当然不是您想要的结果。
您需要做的是将坐标一一比较,并将结果与逻辑AND相结合:
if ((ball.x === goal.x) && (ball.y === goal.y)) {
//...
}