我想將一個.png圖片添加到我的畫布窗口,但是我遇到了一些問題。比方說,即時將不同類型的對象添加到我的窗口。有類Pacman,它擴展了類GameObject。但是,我的pacman目前是一個矩形,我想用一個Pacman的圖片替換這個矩形。我嘗試了10種不同的代碼,但你需要擴展canvas或JFrame。不幸的是,我不能這樣做,因爲我已經用class GameObject擴展了類Pacman。將圖像添加到畫布窗口
我是新來的對象編程,但有沒有辦法添加圖片到窗口?
我想將一個.png圖片添加到我的畫布窗口,但是我遇到了一些問題。比方說,即時將不同類型的對象添加到我的窗口。有類Pacman,它擴展了類GameObject。但是,我的pacman目前是一個矩形,我想用一個Pacman的圖片替換這個矩形。我嘗試了10種不同的代碼,但你需要擴展canvas或JFrame。不幸的是,我不能這樣做,因爲我已經用class GameObject擴展了類Pacman。將圖像添加到畫布窗口
我是新來的對象編程,但有沒有辦法添加圖片到窗口?
考慮以MVC(模型 - 視圖 - 控制)方式重新設計GUI程序,其關鍵在於模型(程序的邏輯表示)與視圖不同(視覺表示)的程序)。這樣,您的Pacman模型類可以擴展您的GameObject模型類,而Pacman的可視化表示形式可以是一個JLabel,它可以在ImageIcon中保存您的pacman圖像。
編輯:或者,或者如MadProgrammer所述,在遊戲的主JPanel中將其可視化表示作爲其paintComponent(Graphics g)
方法中的精靈繪製。
這裏的關鍵是您的遊戲的邏輯表示 - 主要涉及演員的位置,移動和相互作用,如吃豆人,敵人,「食物」,動力位,迷宮邊界,不考慮GUI,圖像或用戶交互進行編碼。這部分代碼不會使用Swing或AWT等GUI庫,也不會使用KeyListeners或密鑰綁定。它會有一個遊戲循環和邏輯來移動非用戶控制的元素,它會檢查吃豆人和敵人的觸摸,它會爲吃豆人的狀態 - 正常和授權 - 和邏輯爲什麼根據吃豆人的狀態,當吃豆人觸及敵人時會這樣做。它會有方法允許另一個班級移動Pac-Man,如moveRight()
,moveLeft()
,moveUp()
和moveDown()
。
GUI將顯示迷宮和演員,取決於他們在模型中的位置。聽衆將通過GUI通知模型狀態的變化,然後重新繪製自身和演員的新位置。它會讓偵聽器監聽用戶交互,然後將這些信息傳遞給控制器,然後控制器會改變模型的狀態。例如,鍵綁定可以通知控件類用戶正在按向上箭頭,然後如果沒有障礙物阻止這種情況發生,則控件將調用模型的moveUp()
方法來移動Pac-Man。
更多的M-V-C和鞦韆上,請查看:
我真的很感謝你的努力,但是對於java和對象編程來說我還是一個相當新的東西,我不知道我有多少理解 –
那就不用Pacman擴展了GameObject,或者讓GameObject成爲一個接口並讓Pacman實現它。 –
'Graphics#drawImage'? – MadProgrammer
是的,我嘗試使用Graphics.drawImage,但我不知道如何處理ImageObserver參數 –