【发布时间】:2012-08-07 15:08:25
【问题描述】:
我对游戏编程有点陌生,我决定用 Java 做一个小实验。我正在使用 Swing/AWT api 通过在 JPanel 上绘图来实现游戏。但是,我不确定如何在游戏中实现“打发时间”。有人对此有任何想法吗?
谢谢!
【问题讨论】:
我对游戏编程有点陌生,我决定用 Java 做一个小实验。我正在使用 Swing/AWT api 通过在 JPanel 上绘图来实现游戏。但是,我不确定如何在游戏中实现“打发时间”。有人对此有任何想法吗?
谢谢!
【问题讨论】:
您要查找的内容称为游戏循环。有很多关于此的文档。这是一个简单的:
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。
这是一个非常基本的游戏循环,它有一些问题,但如果你是初学者,它会做。一旦您变得更有经验,请查找可变和固定时间步长的游戏循环。
但是,您必须在单独的线程中运行此代码,才能真正更新显示。
【讨论】:
milliseconds,所以你必须引入1000而不是1。
Thread.sleep 也使用毫秒而不是秒。
也许你应该看看 Java 中的 threads:http://www.javaworld.com/jw-04-1996/jw-04-threads.html 创建一个专门用于重新绘制和处理游戏循环的新线程(参见其他答案)。
【讨论】: