我对游戏编程有点新,我决定在Java中做一个小实验。我使用Swing/AWT API通过在JPanel上绘图来实现游戏。但是,我不确定如何在游戏中实现“传球时间”。有没有人有任何想法呢?在Java中每秒更新游戏x次
谢谢!
我对游戏编程有点新,我决定在Java中做一个小实验。我使用Swing/AWT API通过在JPanel上绘图来实现游戏。但是,我不确定如何在游戏中实现“传球时间”。有没有人有任何想法呢?在Java中每秒更新游戏x次
谢谢!
你要寻找的被称为游戏循环。关于这方面有很多可用的文档。这里有一个简单的一个:
private boolean isRunning;
public void gameLoop()
{
while(isRunning) //the loop
{
doGameUpdates();
render();
Thread.sleep(1000); //the timing mechanism
}
}
的想法是,while循环中的代码遍地执行,将睡执行之间的1秒。这是实施“时间流逝”的一种方式。例如,如果您的对象具有X位置,并且在while循环中放置了object.X += 1
,则对于循环的每次迭代,对象的X位置都会前进1,即每秒1次。
这是一个非常基本的游戏循环,它有一些问题,但它会做,如果你是初学者。一旦你变得更有经验,查找变量和固定的时间步游戏循环。
但是,您必须在单独的线程中运行此代码,以便显示屏实际上得到更新。
也许你应该看看线程在Java中:http://www.javaworld.com/jw-04-1996/jw-04-threads.html 创建,致力于重新绘制和处理游戏循环(见对方的回答)一个新的线程。
编辑:本教程可能是有用的:http://zetcode.com/tutorials/javagamestutorial/
关于编辑,你可以参考一个具体的教程 – Blunderchips 2017-11-22 12:43:30
我认为睡眠时间在毫秒内,所以你必须引入'1000'而不是'1'。 – 2012-08-07 15:15:03
如果使用swing,这个想法根本不好,Thread.sleep使用毫秒而不是秒。 – bestsss 2012-08-07 15:15:18
如果你在事件调度线程上这样做,没有什么会重新绘制,你的整个UI会冻结 – Robin 2012-08-07 15:15:47