java游戏编程敌人爆炸

时间:2015-06-08 17:11:14

标签: java animation graphics repaint

嗨,我正在创建一个小型游戏作为项目。 这个游戏类似于鸡入侵者。

游戏由gameLoop运行,该游戏不断调用渲染(Graphics g)方法来绘制变化,并使用tick()方法更改所有移动对象的x,y坐标。

我试图让我的鸡在影响中被释放(将他们的照片改为爆炸) 我的问题是变化发生的速度太快,用户无法看到它。

我试图使用以下内容:

timer.schedule(new TimerTask() {
              @Override
              public void run() {
                int temp = deleteExploasion;
                exploasions.get(temp).setExplosion(false);
                deleteExploasion++;
              }
            }, /*2*60*1000*/ 1500);

它在鸡上设置一个布尔值,在1.5秒内,鸡应该在下一个渲染方法中被涂上。 但我一直在

Timer already cancelled.
at java.util.Timer.sched(Unknown Source)

Exception in thread "Timer-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.LinkedList.checkElementIndex(Unknown Source)

非常感谢有关如何实施此类事情的帮助或建议。

2 个答案:

答案 0 :(得分:0)

由于您已经使用tick()方法更新游戏,因此您还应该使用它来处理计时器。

创建一个名为延迟或计时器的int,然后在tick()方法中减少它,然后检查计时器是否完成并调用爆炸或删除方法。

答案 1 :(得分:0)

好吧我已经设法解决了这个问题 我用过这个:

if(deleteExploasion == 0){
        timer.scheduleAtFixedRate(new TimerTask() {
              @Override
              public void run() {
              exploasions = new LinkedList<Chicken>();
              }
            }, 2000, 2000);
        deleteExploasion++;
        }
基本上我删了鸡。 然后我创建了包含所有爆炸的探索LinkedList(带x,y的图像) 然后我开始一次时间周期并每隔几秒重置一次。

非常感谢你的帮助 正如这里提到的,这个方法确实在render()方法中 (就像tick()一样,它也被不断调用)。

如果有人发现我的实施问题会批评评论。