当前位置: 首页 > 知识库问答 >
问题:

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

颛孙子民
2023-03-14

我正在创建一个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);
}

非常感谢你的帮助。谢谢!

共有1个答案

穆招
2023-03-14

问题是输入错误:

let step = funtion()

将其更改为:

let step = function()

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

  • 在修正你的打字错误之前
  • 修复你的错字后
 类似资料:
  • 问题内容: 我是Javafx的新手,正在创建一个简单的程序。我想要实现的目标是让球从墙壁上弹起,但我还没有弄清楚该怎么做。另外,请随时留下有关我的代码的其他建议。 这是源代码: 感谢您的帮助。 问题答案: 一个提示:您应该避免比较双精度值的完全相等 。 只需对代码进行一些小的更改,您就已经可以使用:

  • 我想问题是我标记的地方。它在这里: 但我不知道为什么。我的理论是:球向上移动,击中了顶墙,踢进,使=真,那么和相应地改变(如果击中了顶墙,应该保持不变,而应该乘以-1)。然后它会向下移动,因此从顶墙上“弹”出来。 注意:目前我只工作的顶部墙壁。其他三个等我能想出怎么先从顶墙上弹开的时候再做。 你能帮我看看有什么问题吗?而如果这种操作需要使用vector2类,你能给我解释一下,或者给我一个学习的地方

  • 所以我对Python、PyGame和任何编程都是全新的。我遵循了在PyGame中制作蛇游戏的教程。现在一切都结束了,但为了给自己一个挑战,我正试图改变一下比赛。首先我想添加边界,但我真的迷路了。我试过看其他教程,但它们的图像似乎有所不同。这是我的代码(因为我不知道什么可以帮助你帮助我,所以我把它全部发送了): 基本上,我希望当我的蛇撞到边界时发生的事情和它撞到自己时发生的事情是一样的。如果你能帮助

  • 这似乎是一个非常基本的问题,但我有一个模型(用户),我想存储一个字符串的ArrayList(它们是其他用户的ID)。我这样声明列表: 控制器方法: 和一个非常简单的观点:

  • 问题内容: 我正在使用和在CSS中创建一个半透明的圆圈。 在这个圆的周围,我希望有另一个完全透明的边界(例如10个像素),而又想有另一个半透明的边界(10个像素)。 这是我创建圈子的方式: 我需要怎么做才能在现有边界周围创建另一个边界,然后再创建另一个边界? 问题答案: 您可以使用简单的边框并将背景裁剪到,以在填充区域中创建透明部分: 您也可以考虑 您可以轻松缩放到任意数量的边界:

  • 我是python新手,我正在尝试跟随一个教程,使用PyGame创建一个类似蛇的游戏。由于某种原因,我的界限不起作用。这可能很简单,但我看不出有什么理由不起作用。我没有犯任何错误,蛇只是越过了界限,比赛没有结束。