2015-04-18 109 views
1

我想将一个.png图片添加到我的画布窗口,但是我遇到了一些问题。比方说,即时将不同类型的对象添加到我的窗口。有类Pacman,它扩展了类GameObject。但是,我的pacman目前是一个矩形,我想用一个Pacman的图片替换这个矩形。我尝试了10种不同的代码,但你需要扩展canvas或JFrame。不幸的是,我不能这样做,因为我已经用class GameObject扩展了类Pacman。将图像添加到画布窗口

我是新来的对象编程,但有没有办法添加图片到窗口?

+0

那就不用Pacman扩展了GameObject,或者让GameObject成为一个接口并让Pacman实现它。 –

+1

'Graphics#drawImage'? – MadProgrammer

+0

是的,我尝试使用Graphics.drawImage,但我不知道如何处理ImageObserver参数 –

回答

4

考虑以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和秋千上,请查看:

+0

我真的很感谢你的努力,但是对于java和对象编程来说我还是一个相当新的东西,我不知道我有多少理解 –