2013-07-25 46 views
0

的方法,我相信這是一個非常簡單的面向對象的問題,但我似乎無法找到答案:/ 我有一個遊戲面板,球的負載都塗到面板上。當球擊中面板的底部時,應該顯示遊戲結束消息。撥打國際長途的GamePanel

該我負責的是關於這個遊戲結束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(); 
} 

那麼,如何可以訪問該方法?

注(結構):框架 - >面板 - >球

感謝

讓我知道,如果我沒有解釋自己好,或者您需要了解更多信息

回答

2

考慮觀賞的位置來自不同班級的球,可以使用gameOver功能。這樣您就不需要將面板暴露在Ball類中,並避免了您的問題。

而且,你不能調用gameOver功能,因爲它不存在JFrame,如果你想用這個目前的做法,你需要提供類或接口,其中包含gameOver功能的Ball構造函數。

+0

所以不會我需要創建的GamePanel在這一類新的即時然後,然後在球類創建類的實例? – Katana24

+0

如果您創建一次GamePanel,則可以將其傳遞到任何地方。您不必重新創建它。 – Jonatan

+0

這樣一個簡單的問題,當我真的停下來思考java的工作方式時,有了這樣一個簡單的答案。完成。感謝那個大聲笑 – Katana24

1

而不必你Ball類從您的FramePanel類調​​用一個方法,我認爲更好的方式來實現你想要的是在你的Ball類中的方法指示/設置一個布爾的,如果你的球有擊中屏幕的底部。然後當球接觸到屏幕底部(當前想要通過方法調用將遊戲置於其中)時觸發此方法。

從那裏,有一個可以訪問您的GAMEOVER方法檢查它是否應該解僱遊戲結束方法這個指標/布爾類。

相關問題