我的java游戏有问题.我是初学者,但我必须把它写成一个学校项目.
游戏被称为"生日蛋糕",蛋糕上有7个蜡烛,其中一个正在显示为30秒,在这段时间你必须点击它才能得到点,如果你在这段时间没有点击它下一支蜡烛将显示.10个蜡烛显示游戏结束.
我做了循环,我试图使它工作太久,我沮丧
我的for循环工作,但它是如此之快,我使用Thread.sleep(1000),我尝试了很多解决方案,它看起来不错.但是,当我开始游戏时,没有任何事情发生,几秒钟后,所有7支蜡烛显示并迅速消失.我想我做错了什么,但我不知道是什么.
if(Dane.start){ int liczbaLosowa = 0; for(int i=0; i<10 ;i++){ liczbaLosowa = (int)(Math.random()*7); this.wspX= wspX_p[liczbaLosowa]; this.wspY= wspY_p[liczbaLosowa]; g2d.drawImage(plomienImg, wspX, wspY,null); Toolkit.getDefaultToolkit().sync(); try { Thread.sleep(1000); } catch (Exception ex) { } //repaint(); } Dane.start=false; }
Hovercraft F.. 5
这个循环在JPanel paintComponent中...
永远,
永远,
调用Thread.sleep(...)
内部paintComponent
不断.请理解,此方法在很大程度上决定了程序的感知响应能力,任何减慢程序速度或冻结它的程序都会严重降低和冻结GUI.实际上你永远不应该在大多数Swing程序的代码中调用Thread.sleep(所有这些都在Swing事件线程上运行),但是在paintComponent中这样做是更糟糕的罪.解决方案是使用Swing Timer,并在Timer的ActionListener的actionPerformed代码中定期重复调用您想要调用的代码.在此方法中,更改类中字段所持有的值,例如wspX和wspY,调用repaint()
,然后使用paintComponent中的那些字段来确定在哪里绘制的内容.
这个循环在JPanel paintComponent中...
永远,
永远,
调用Thread.sleep(...)
内部paintComponent
不断.请理解,此方法在很大程度上决定了程序的感知响应能力,任何减慢程序速度或冻结它的程序都会严重降低和冻结GUI.实际上你永远不应该在大多数Swing程序的代码中调用Thread.sleep(所有这些都在Swing事件线程上运行),但是在paintComponent中这样做是更糟糕的罪.解决方案是使用Swing Timer,并在Timer的ActionListener的actionPerformed代码中定期重复调用您想要调用的代码.在此方法中,更改类中字段所持有的值,例如wspX和wspY,调用repaint()
,然后使用paintComponent中的那些字段来确定在哪里绘制的内容.