問題:Java的貪吃蛇遊戲 - 重繪specifc drawString之()方法
我已經建立在Java中的貪吃蛇遊戲,一切都順利運行。我遇到的唯一問題是顯示分數。每當蛇「吃」一個蘋果時,分數增加10分。而不是顯示當前分數,它只是寫下當前分數而不真正擦除它。當我在重新顯示之前嘗試清除內容時,出現錯誤並且沒有顯示任何內容,除了我的背景顏色。
我有其他圖形組件,包括我不想受影響的paint()。
我嘗試(理論值):
我顯示使用調用
drawString之一個圖形對象( 「當前得分:」 + currScore,0,(Constants.TOTAL_HEIGHT + 15))的分數;
我想我必須調用一個clearRect()方法,這對我很有意義。不幸的是,我在指定clearRect()的行中得到一個NullPointerException異常。
我沒有使用Graphics2D,所以我可以先熟悉Graphics。如果解決這個問題涉及Graphics2D,我沒有問題使用它。
我嘗試(所討論的方法):
public void displayScore(Graphics g) {
//clearScore.clearRect(0, getY(), getWidth(), getHeight());
//g.clearRect(0, getY(), getWidth(), getHeight());
g.drawString("Current score: " + currHighScore, 0, (Constants.TOTAL_HEIGHT + 15));
}
在代碼中,clearScore是在類的任何方法之外聲明Graphics對象。我使用這個的原因是爲了避免影響其他圖形。我嘗試了每個clearRect()行,並且都產生了相同的NullPointerException,這就是爲什麼我將它們註釋掉了。 (Constants.TOTAL_HEIGHT + 15)負責分配Y座標。
錯誤消息:
Exception in thread "Thread-3" java.lang.NullPointerException
at com.nmw.view.CanvasFrame.displayScore(CanvasFrame.java:149)
at com.nmw.view.CanvasFrame.drawAll(CanvasFrame.java:43)
at com.nmw.view.CanvasFrame.run(CanvasFrame.java:64)
at java.lang.Thread.run(Thread.java:722)
drawAll在這裏我呼籲所有的我的方法是採取圖形繪製的遊戲片段。
道歉冗長的問題=/
我的蛇遊戲是一個獨立的項目,我一直在做更多的關於圖形。我只使用AWT庫,但是,我會嘗試使用標籤。感謝您對我爲什麼得到NullPointerException的回覆和解釋。 –
@CuckoOooo:請參閱編輯回答。 –
我將使用JLabel並編輯它包含的文本。爲了設置我想放置JLabel的位置,我想我應該使用setBounds(x,y,width,height)。這是用來調整x和y的理想方法還是有更適合的技術? –