我相信这是一个非常简单的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;球
由于
如果我没有很好地解释自己或者您需要更多信息,请告诉我
答案 0 :(得分:2)
考虑从不同的班级观看球的位置,该班级可以访问gameOver功能。这样您就不需要将面板暴露给Ball
类,并避免出现问题。
另外,你不能调用gameOver
函数,因为它JFrame
中不存在,如果你想使用当前的方法,你需要提供类或接口,包含gameOver
构造函数的Ball
函数。
答案 1 :(得分:1)
我没有让您的Ball
课程从Frame
或Panel
课程调用方法,而是认为实现目标的更好方法是在{Ball
中使用方法如果你的球击中了屏幕的底部,则表示/设置一个布尔值的类。然后当球触及屏幕底部时(当前你想将游戏放在方法调用上),可以触发此方法。
从那里开始,让有权访问你的gameover方法的类检查这个指示符/布尔值是否应该通过方法激活游戏。