2017-04-25 72 views
-3

基本上我创建一个简单的游戏,我想界出现,但是当他们被印在屏幕上,他们不能相互重叠。创建对象并将其放入一个数组列表中,并且当创建另一个数组时,它需要检查其与列表列表中已有数据的坐标,以确保其不同。要检查的方法称为isCollidingWith,并且有一个实际设置位置的setPosition方法。这是我的。查找NullPointerException异常

这是如何创建对象,我甚至不能得到一个被创建,一旦我得到它的工作我会创造更多的这些对象,因此这整点。

Circle circle = new Circle(rng,circles); 
    circles.add(circle); 

这是对象的构造函数需要一个随机数和圆阵列表​​。它以一个while循环,并为这个圈子的位置,然后它进入一个循环并检查它是否与其他的和碰撞,如果是,它打破并回到while循环的顶部和设置不同的位置,然后重复检查它是否与阵列列表中已有的其他位置发生碰撞。

public Planet(Random rng, ArrayList<Circle> circles){ 

     boolean key = true; 
     while(key){ 

     this.graphic.setPosition(rng.nextFloat()*GameEngine.getWidth(),rng.nextFloat()*GameEngine.getHeight()); 

     for(int i = 0; i<circles.size();i++){ 
      if(this.graphic.isCollidingWith(circles.get(i).graphic)){ 
       key = true; 
       break; 
      } 
      else key = false; 

     } 

     } 


    } 

问题是我不断收到一个NullPointerException在构造函数中它说this.graphic.setPosition的行。但我猜它与阵列列表有关,因为eclipse通常对于错误定位并不准确。如果有人能告诉我这里看起来有什么问题,那很好。

+0

你在哪里初始化*** ***图形对象??? –

+1

哇,从字面上看,我完全忘了初始化图形对象。哇,我觉得在过去的5个小时里一直盯着这个。非常感谢。 –

回答

0

1)如果你觉得“月蚀心不是准确的,错误positionning”你应该做一个干净的项目,重建它ABD刷新(F5)。它只是一个来源不明的问题,因为没有刷新。 2)为了理解更好的yoyr误差,你应该分几步来分解这条线:第一行计算第二行的值来设置它。 3)看起来像这样.graphic从不初始化,因此nullpointerexception?