0

我目前正在尝试自学用 Java 编写代码,并且我正在使用 eclipse,并且我有一个创建 pong 的教程,但是有些它是如何丢失的。我唯一遇到问题的部分是完成球课。我已经让它渲染并正确显示在窗口中,但实际上并没有做任何事情,它只是保持静止。这是因为我不知道我需要什么代码,并且所有的谷歌搜索都只导致对不起作用的代码感到沮丧。

到目前为止,这就是我在球课上的全部内容。

import java.awt.Color;
import java.awt.Graphics;


public class Ball extends Entity {

public Ball(int x, int y, Color color) {
    super(x, y, color);
    this.width = 15;
    this.height = 15;
    int yspeed = 1;
    int xspeed = 2;
}

public void render( Graphics g ) {
    super.render( g );
}




public void update() {
    if (y <= 0) {
        y = 0;
    }

    if (y >= window.HEIGHT - height - 32 ) {
        y = window.HEIGHT - height -32;
    }
}

任何建议将不胜感激。

4

2 回答 2

3

到目前为止,您所写的(或从教程中复制的)看起来不错。您错过了将“生命”放入其中的代码,例如使球移动的代码。xspeed您有一些类似and的字段yspeed,但没有代码可以将增量从一个时间单位实际应用到另一个时间单位。(我希望)定期调用的update()方法应该将两个值都应用于xy字段:

public void update() {
    x += xspeed;
    y += yspeed;

    if (y <= 0) {
        y = 0;
    }

    if (y >= window.HEIGHT - height - 32 ) {
        y = window.HEIGHT - height -32;
    }
}

这就是你需要的update部分。下一件大事是实现当球击中墙壁或桨时发生的逻辑。对于这样的事件,您需要操纵xspeedyspeed变量。

于 2013-06-11T14:03:23.037 回答
0

显而易见的步骤是:

public void update() {
    x += xspeed;
    y += yspeed;

    if (y <= 0) {
        y = 0;
    }

    if (y >= window.HEIGHT - height - 32 ) {
        y = window.HEIGHT - height -32;
    }

    // TODO: Code to change the direction of the ball (i.e. xspeed and yspeed)
    // when it hits a wall or paddle.
}

而且你一定不要忘记在打电话update()之前打电话render()

于 2013-06-11T14:03:48.973 回答