在游戏开始时摇摆组件和计时器

时间:2014-02-23 15:53:44

标签: java swing

我在游戏编程方面很陌生,对于它与java之间的关系有一些疑问。 之前我使用swing制作了一些用户界面,但在阅读有关使用它的游戏时,需要考虑很多新的点。

我知道swing和awt不应该组合在一起,但在许多教程和网站中它使用了带有jframe的画布,我想这可能会更好用jpanel并覆盖paint方法?

如果我打算添加,比方说,不同的面板与菜单左右(游戏的)可以通过不同面板的单独绘画完成,添加摆动元素(如jlabels或jbuttons)或我必须使方法绘制和检查事件的包含像素? 我不确定我是否在那里正确解释,我的意思是,例如,如果保持borderlayout的中心点在面板中显示东西,然后在东部地点添加一个完整的不同面板以用按钮填充它,或者必须是在第一个上绘制的按钮并构建他们自己的事件。

另一件事是,我曾经说过变量是针对方法的,并且必须使用getter和setter来获取它们,但到目前为止我看到所有这些都是静态的从外面捕获它们,这是正确的可以吗?

还知道它应该在run方法中有一个永久循环,我明白了,但我已经看到了关于使用定时器来触发事件的不同之处。我真的不明白,应该用一个柜台吗?或者使用java提供的其中一个计时器?以及哪个计时器将用于此类任务?摇摆或者工具:/

2 个答案:

答案 0 :(得分:0)

您可以查看我在Java中实现的Snake Game。它会告诉你如何从头开始制作游戏。代码不是我能想到的最好的代码,但它仍然是可以理解的。我很久以前就写过它,最近才将它发布给GitHub。

我还计划推动我的Game Framework,这将减少很多样板代码,但是在我在Github上发布它之前,我必须重构它。

尽管如此,蛇游戏可以是一个良好的开端,你可以从那里使用各种想法。

另请查看基于Java的Processing语言,并让您轻松创建简单的游戏。

还有一个流行的Java游戏库,名为LibGDX,你可以尝试一下。它已经为程序员处理了很多样板代码,但是它有一个简单的学习曲线。

答案 1 :(得分:0)

  

“我想这可能会更好用jpanel并覆盖paint方法?”

即可。 Ditch Canvas转到JPanel

  

“如果我打算添加,比方说,不同的面板可以通过不同面板的个别绘画来完成(游戏的)菜单”

使用CardLayoutJPanel之间切换。请参阅How to use CardLayout并查看CardLayout示例here

  

“另一件事是我曾经说过变量是针对方法的,并且必须使用getter和setter来获取它们,但到目前为止我看到所有这些都是静态的从外面捕获它们,这是正确的要做什么?“

不要过度使用static不必要地进行类之间的通信。利用getter和setter(研究封装);利用参考传递;利用接口;有关更高级的功能,请查看MVC设计模式和观察者模式。

  

“还知道它应该在run方法中有一个永久循环,我理解,但我已经看到了关于使用定时器来触发事件的不同方法。”

javax.swing.Timer是要走的路( java.util.Timer)。见How to use Swing Timers。还可以看到一个示例herehere以及herehere