【问题标题】:While loop not breaking inside a for statement虽然循环没有在 for 语句中中断
【发布时间】:2015-04-09 01:31:16
【问题描述】:

我正在尝试编写一个游戏,其中一个球生成三个回合,如果球越过屏幕底部,则回合结束。

下面是我编写的课程,我可以让球移动,但是当它移过屏幕底部时,球不会像我预期的那样在屏幕中间重新生成。

抱歉,如果这个问题是初步的,但我已经研究了一段时间,似乎卡住了。

private void initiateBall() {
        double bx = (WIDTH / 2) - BALL_RADIUS;
        double by = (HEIGHT / 2) - BALL_RADIUS;
        GOval ball = new GOval(bx, by,BALL_RADIUS, BALL_RADIUS);
        ball.setFilled(true);
        ball.setColor(Color.BLACK);
        vx = rgen.nextDouble(1.0, 1.2);
        if (rgen.nextBoolean(0.5)) vx = -vx;
        vy = 3.0;
        for (int i = 0; i <= NTURNS; i++) {
            add (ball);
            while (ball.getY() < HEIGHT && ball.getX() < HEIGHT) {
            ball.move(vx, vy);
            pause(DELAY);
        }
    }

【问题讨论】:

  • 我们需要movepause方法的内容。
  • 嗯...您的代码中打开的花括号比关闭的要多...
  • 您是否暂时缺少花括号}
  • 另外,您的 while 循环条件错误。 X 坐标应与 WIDTH 进行比较。此外,while 大括号没有结束。

标签: java for-loop while-loop


【解决方案1】:

私人无效initialBall() {

   for (int k = 0; k < NTURNS; k ++) {
        double bx = (WIDTH / 2) - BALL_RADIUS;
        double by = (HEIGHT / 2) - BALL_RADIUS;
        GOval ball = new GOval(bx, by, BALL_RADIUS, BALL_RADIUS);
        ball.setFilled(true);
        ball.setColor(Color.BLACK);
        vx = rgen.nextDouble(1.0, 1.2);
        if (rgen.nextBoolean(0.5)){
            vx = -vx;
        }
        vy = 3.0;
       double x = bx;
       double y = by;
       add(ball, (x), y);
    while (ball.getY() < HEIGHT) {
    ball.move(vx,vy);
    pause(DELAY);
    }
  }
}

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 2017-04-25
    • 1970-01-01
    • 2021-12-22
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多