从GamePanel调用方法

时间:2013-07-25 14:03:43

标签: java swing java-2d 2d-games

我相信这是一个非常简单的OO问题,但我似乎无法找到答案:/ 我有一个游戏面板,在面板上涂上一堆球。当球击中面板底部时,应显示Game Over消息。

我正在处理的问题是关于这个游戏JOptionPane。我相信它应该保留在这个课程中,但我需要在Ball课程中调用它。

以下是我要调用方法的Ball类的一部分(标有**):

private void moveBall() {

    if (x == panel.getWidth() - size) {
        xa -= speed;
    } else if (x < 0) {
        xa += speed;
    }

    if (y == panel.getHeight() - size) {
        ya -= speed;
    } else if (y < 0) {
        ya += speed;
    }

    if (collision()) {
        ya = -speed;
        y = platform.getY() - DIAMETER;
    }

    if (y == panel.getHeight() - size) {

        // ***Call gameOver here***

    }
    x += xa;
    y += ya;
}

以下是我在游戏面板中从球类调用的构造函数:

// Constructor to pass a colour and a platform
public Ball(JFrame frame, JPanel panel, Platform platform, Color colour,
        int x, int y, int size) {

    this.platform = platform;

    this.frame = frame;
    this.panel = panel;
    this.colour = colour;

    // Location of the ball
    this.x = x;
    this.y = y;

    // Size of the ball
    this.size = size;

    animator = new Thread(this);
    animator.start();
}

那么如何获得该方法的访问权限?

注意(结构):框架 - &gt;面板 - &gt;球

由于

如果我没有很好地解释自己或者您需要更多信息,请告诉我

2 个答案:

答案 0 :(得分:2)

考虑从不同的班级观看球的位置,该班级可以访问gameOver功能。这样您就不需要将面板暴露给Ball类,并避免出现问题。

另外,你不能调用gameOver函数,因为它JFrame中不存在,如果你想使用当前的方法,你需要提供类或接口,包含gameOver构造函数的Ball函数。

答案 1 :(得分:1)

我没有让您的Ball课程从FramePanel课程调用方法,而是认为实现目标的更好方法是在{Ball中使用方法如果你的球击中了屏幕的底部,则表示/设置一个布尔值的类。然后当球触及屏幕底部时(当前你想将游戏放在方法调用上),可以触发此方法。

从那里开始,让有权访问你的gameover方法的类检查这个指示符/布尔值是否应该通过方法激活游戏。