2017-10-07 43 views
0

我想知道如何在程序中發生某些事情時調用包含圖形G的函數。如何調用包含圖形的函數g

public void dead (Graphics g) { 
    right = false; 
    left = false; 
    up = false; 
    down = false; 
    dead = true; 
    score = 0; 
    moves = 0; 
    g.setColor(Color.WHITE); 
    g.setFont(new Font("arial", Font.BOLD, 50)); 
    g.drawString("Game Over", 300, 300); 

    g.setFont(new Font("arial", Font.BOLD, 20)); 
    g.drawString("Press \"Space\" To Restart", 312, 340); 
} 

我該如何從其他地方調用這個?我試圖做死();但它說這種方法不適用於這個論點。提前致謝!

編輯:這是我的JFrame:

JFrame obj = new JFrame("Snake"); 
    gameplay gameplay = new gameplay(); 
    obj.setBounds(10, 10, 905, 700); 
    obj.setBackground(Color.DARK_GRAY); 
    obj.setResizable(false); 
    obj.setVisible(true); 
    obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    obj.add(gameplay); 
+0

如果這是一個Swing GUI(您沒有說,但應該因爲這是關鍵信息),那麼應該使用paintComponent方法調用JComponent或JPanel。請參閱:[Lesson:Performing Custom Painting](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html) –

+0

當您調用該方法時,您能向我們展示您的代碼嗎? – JClassic

+1

那麼,你需要有東西來繪製,這將取決於其餘的代碼 – MadProgrammer

回答

2

這死(G)的方法,我們應該在paintComponent(Graphics g)被調用時,蛇已經死了更新屏幕:

在面板顯示您繪畫,你就會有這樣的事情:

@Override 
public void paintComponent(Graphics g){ 
    super.paintComponent(g): 
    if(gameOver) 
     dead(g); 
} 

順便說一句,你可能不希望包括非相關的畫到你死的(G)的方法,如代碼:

right = flase: 
left = flase; 
... 
score = 0; 
moves = 0; 

只要有可能,保持您的繪畫方法凌亂與其他非繪畫相關的代碼。在極端情況下,混亂可能會導致顯示屏滯後。

+1

謝謝!我只是想到,我甚至不需要調用外部函數,但是你幫助我想出一個解決我的問題的方法,並教會了我一些東西,所以這非常有用:) –

相關問題