2012-08-07 56 views
0

我对游戏编程有点新,我决定在Java中做一个小实验。我使用Swing/AWT API通过在JPanel上绘图来实现游戏。但是,我不确定如何在游戏中实现“传球时间”。有没有人有任何想法呢?在Java中每秒更新游戏x次

谢谢!

回答

1

你要寻找的被称为游戏循环。关于这方面有很多可用的文档。这里有一个简单的一个:

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次。

这是一个非常基本的游戏循环,它有一些问题,但它会做,如果你是初学者。一旦你变得更有经验,查找变量和固定的时间步游戏循环。

但是,您必须在单独的线程中运行此代码,以便显示屏实际上得到更新。

+0

我认为睡眠时间在毫秒内,所以你必须引入'1000'而不是'1'。 – 2012-08-07 15:15:03

+0

如果使用swing,这个想法根本不好,Thread.sleep使用毫秒而不是秒。 – bestsss 2012-08-07 15:15:18

+6

如果你在事件调度线程上这样做,没有什么会重新绘制,你的整个UI会冻结 – Robin 2012-08-07 15:15:47