Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript突破游戏中如何将球保持在墙边界内?_Javascript_Breakout - Fatal编程技术网

在JavaScript突破游戏中如何将球保持在墙边界内?

在JavaScript突破游戏中如何将球保持在墙边界内?,javascript,breakout,Javascript,Breakout,我正在创建一个Javascript突破游戏,但在将球保持在墙边界内时遇到了一个问题 在运行程序时,桨叶很好地工作在一个静止的球中间。直到我设置代码使球保持在墙的上、左、右边界内,在这一点上,错误发生了,整个程序停止工作 我已经尝试了几个if/else变体来修复它,但无法找出代码不起作用的原因。JavaScript代码如下所示: function createPaddle(gw) { let x0 = (gw.getWidth() - PADDLE_WIDTH) / 2; let y0 =

我正在创建一个Javascript突破游戏,但在将球保持在墙边界内时遇到了一个问题

在运行程序时,桨叶很好地工作在一个静止的球中间。直到我设置代码使球保持在墙的上、左、右边界内,在这一点上,错误发生了,整个程序停止工作

我已经尝试了几个if/else变体来修复它,但无法找出代码不起作用的原因。JavaScript代码如下所示:

function createPaddle(gw) {
  let x0 = (gw.getWidth() - PADDLE_WIDTH) / 2;
  let y0 = PADDLE_Y;
  let paddle = GRect(x0, y0, PADDLE_WIDTH, PADDLE_HEIGHT);
  paddle.setFilled(true);
  gw.add(paddle);

  let mouseMoveAction = function(e) {
    let x = e.getX() - (PADDLE_WIDTH / 2);
    let y = PADDLE_Y;
    if (x > 0 && x <= gw.getWidth() - PADDLE_WIDTH) {
      paddle.setLocation(x, y);
    }
  };
  gw.addEventListener("mousemove", mouseMoveAction);
}


function createBall(gw) {
  let centerX = gw.getWidth() / 2;
  let centerY = gw.getHeight() / 2;
  let x0 = centerX - (BALL_SIZE / 2);
  let y0 = centerY - (BALL_SIZE / 2);
  let ball = GOval(x0, y0, BALL_SIZE, BALL_SIZE);
  ball.setFilled(true);
  gw.add(ball);

  let clickAction = function(e) {
    let vy = INITIAL_Y_VELOCITY;
    let vx = randomReal(MIN_X_VELOCITY, MAX_X_VELOCITY);
    if (randomChance()) vx = -vx;

    let step = funtion() {
      if (ball.getX() > 0 && ball.getY() > 0 &&
          ball.getX() < gw.getWidth() - BALL_SIZE &&
          ball.getY() < gw.getHeight() - BALL_SIZE) {
        ball.move(vx, vy);
      } if (ball.getX() < 0 || ball.getX() > gw.getWidth() - BALL_SIZE) {
        vx = -vx;
        ball.move(vx, vy);
      } if (ball.getY() < 0) {
        vy = -vy;
        ball.move(vx, vy);
      } else if (ball.getY() > gw.getHeight() - BALL_SIZE) {
        clearInterval(timer);
      }
    };
    let timer = setInterval(step, TIME_STEP);
  };
  gw.addEventListener("click", clickAction);
}

非常感谢你的帮助。谢谢

问题在于打字错误:

let step = funtion()
将其更改为:

let step = function()
考虑使用一些IDE/编辑器,它会通知您此类输入错误。我使用了visual studio代码,它告诉我出了问题:

在修正你的打字错误之前 在修正你的打字错误之后
你说发生了错误。你能更新这个问题来显示你所遇到的错误吗?让step=funtion在你的代码中也出现了这个错误,还是就在stackoverflow上?应该让step=functionalhh这正是我的错误来源。谢谢@Pajacar123。对于这样的错误给您带来的不便,我深表歉意。在Atom中运行代码时,我无法跟踪错误。我想知道是否有一种方法可以至少显示一条警告或错误消息,这样我就可以轻松地跟踪代码状态。谢谢