Methods 作为方法参数的Null指针异常错误

Methods 作为方法参数的Null指针异常错误,methods,null,boolean,processing,sprite,Methods,Null,Boolean,Processing,Sprite,我使用两个精灵作为方法的参数,但是我得到了一个空指针异常错误。 这是我的密码。 错误在checkCollision方法中。 我试图声明参数Sprite s1和Sprite s2,但它们仍然无法识别。我不确定我做错了什么,因为当我声明其他精灵作为参数时,没有空指针异常。我非常感谢你的帮助。先谢谢你 Sprite p; Sprite e; Sprite f; Sprite q; Sprite l; Sprite m; Sprite n; PImage red_brick; PImage other_

我使用两个精灵作为方法的参数,但是我得到了一个空指针异常错误。 这是我的密码。 错误在checkCollision方法中。 我试图声明参数Sprite s1和Sprite s2,但它们仍然无法识别。我不确定我做错了什么,因为当我声明其他精灵作为参数时,没有空指针异常。我非常感谢你的帮助。先谢谢你

Sprite p;
Sprite e;
Sprite f;
Sprite q;
Sprite l;
Sprite m;
Sprite n;
PImage red_brick;
PImage other_block;
final static float MOVE_SPEED = 5;
final static float SPRITE_SCALE = 50.0/128;
final static float SPRITE_SIZE = 50.0;
final static float GRAVITY = 0.6;
ArrayList <Sprite> platforms;



void setup(){
 size(1000,600);
 createPlatforms("data/map.csv");
 red_brick = loadImage("block.png");
 other_block = loadImage("diamond.png");
 platforms = new ArrayList <Sprite>();
 platforms.add(e);
  platforms.add(f);
   platforms.add(q);
    platforms.add(l);
     platforms.add(m);
  platforms.add(n);
 imageMode(CENTER);
 
p = new Sprite("data/sprite.png", 0.5,67,450);



e = new Sprite("data/block.png", 1.0, 67, 600);
f = new Sprite("data/block.png", 1.0, 195, 600);
q = new Sprite("data/block.png", 1.0, 323, 600);
l = new Sprite("data/block.png", 1.0, 451, 600);
m = new Sprite("data/diamond.png", 1.0, 451, 472);
n = new Sprite("data/bigblock.png", 1.0, 907,600);

resolvePlatformCollisions(p, platforms);

}

void draw(){
  background(255);
p.display(); 
e.display();
f.display();
q.display();
l.display();
m.display();
n.display();
p.update();

}
boolean checkCollision(Sprite s1, Sprite s2){
  boolean noXOverlap = s1.getRight() <= s2.getLeft()|| s1.getLeft() >= s2.getRight(); Error 
  boolean noYOverlap = s1.getBottom() <= s2.getTop() || s1.getTop() >= s2.getBottom(); Error 
  if (noXOverlap || noYOverlap){
    return false;
  }
  else{
    return true;
  }
}



public void resolvePlatformCollisions(Sprite s, ArrayList <Sprite> walls){
  s.change_y += GRAVITY;
  s.center_y += s.change_y;
  ArrayList <Sprite > col_list = checkCollisionList(s, walls);
  if(col_list.size() > 0){
  Sprite collided = col_list.get(0);
  if(s.change_y > 0){
    s.setBottom(collided.getTop());
  }
  else if(s.change_y >0){
    s.setTop(collided.getBottom());
  }
  s.change_y = 0;
  }
   
  s.center_x += s.change_x;
 col_list = checkCollisionList(s, walls);
  if(col_list.size() > 0){
  Sprite collided = col_list.get(0);
  if(s.change_x > 0){
    s.setRight(collided.getLeft());
  }
  else if(s.change_x >0){
    s.setLeft(collided.getRight());
  }
  s.change_x = 0;
  }
}


public ArrayList <Sprite> checkCollisionList(Sprite s, ArrayList <Sprite> list){
  ArrayList <Sprite> collision_list = new ArrayList<Sprite>();
  for(Sprite p : list){
    if (checkCollision(s,p))
    collision_list.add(p);}
    return collision_list;
}


void keyPressed(){
  if(keyCode == RIGHT){
    p.change_x = 5;
  }
  else if(keyCode == LEFT){
    p.change_x = -5;
  }
  else if (keyCode == UP){
    p.change_y = -5;
}
    else if (keyCode == DOWN){
      p.change_y = 5;}
}

void keyReleased(){
  if(keyCode == RIGHT){
    p.change_x = 0;
  }
  else if(keyCode == LEFT){
    p.change_x = 0;
  }
  else if(keyCode == UP){
    p.change_y =0;
  }

    else if (keyCode == DOWN){
      p.change_y = 0;}
      
      
}

void createPlatforms(String filename){
  String[] lines = loadStrings(filename);
  for(int row = 0; row <lines.length; row++){
    String [] values = split(lines [row], ",");
    for(int col = 0; col< values.length; col++){
      if(values[col].equals("1")){
        Sprite s = new Sprite (red_brick, SPRITE_SCALE);
        s.center_x = SPRITE_SIZE/2 + col * SPRITE_SIZE;
         s.center_y = SPRITE_SIZE/2 + row * SPRITE_SIZE;
         
      }
   if (values[col].equals("2")){
     Sprite s = new Sprite (other_block, SPRITE_SCALE);
     s.center_x = SPRITE_SIZE/2 + col * SPRITE_SIZE;
     s.center_y = SPRITE_SIZE/2 + row * SPRITE_SIZE;
     
    }
  }
}
}
Sprite p;
雪碧e;
雪碧f;
雪碧q;
雪碧l;
雪碧m;
雪碧;
皮迈格红砖;
PImage其他_区块;
最终静态浮动移动速度=5;
最终静态浮动精灵_比例=50.0/128;
最终静态浮动精灵尺寸=50.0;
最终静态浮子重力=0.6;
ArrayList平台;
无效设置(){
规模(1000600);
CreatePlatform(“data/map.csv”);
red_brick=loadImage(“block.png”);
other_block=loadImage(“diamond.png”);
platforms=newarraylist();
增加(e);
增加(f);
平台。添加(q);
增加(l);
增加(m);
添加(n);
图像模式(中心);
p=新的精灵(“data/Sprite.png”,0.5,67450);
e=新的精灵(“data/block.png”,1.0,67600);
f=新的精灵(“data/block.png”,1.0195600);
q=新的精灵(“data/block.png”,1.0323600);
l=新的精灵(“data/block.png”,1.0451600);
m=新精灵(“data/diamond.png”,1.0451472);
n=新的精灵(“data/bigblock.png”,1.0907600);
解决平台冲突(p,平台);
}
作废提款(){
背景(255);
p、 显示();
e、 显示();
f、 显示();
q、 显示();
l、 显示();
m、 显示();
n、 显示();
p、 更新();
}
布尔校验冲突(精灵s1、精灵s2){
布尔值noXOverlap=s1.getRight()=s2.getRight();错误
布尔值noYOverlap=s1.getBottom()=s2.getBottom();错误
if(noXOverlap | | noYOverlap){
返回false;
}
否则{
返回true;
}
}
公共空间解析平台冲突(精灵s、阵列列表墙){
s、 改变y+=重力;
s、 中心y+=s.change\u y;
ArrayList col_list=检查冲突列表(s、墙壁);
如果(col_list.size()>0){
Sprite collized=col_list.get(0);
如果(s.change_y>0){
s、 setBottom(collide.getTop());
}
否则,如果(s.change_y>0){
s、 setTop(collide.getBottom());
}
s、 改变y=0;
}
s、 中心_x+=s.change_x;
col_list=检查碰撞列表(s、墙壁);
如果(col_list.size()>0){
Sprite collized=col_list.get(0);
如果(s.change_x>0){
s、 setRight(collide.getLeft());
}
否则,如果(s.change_x>0){
s、 setLeft(collide.getRight());
}
s、 改变x=0;
}
}
公共ArrayList检查冲突列表(精灵s,ArrayList列表){
ArrayList collist_list=新建ArrayList();
用于(精灵p:列表){
如果(检查碰撞(s,p))
冲突_list.add(p);}
返回冲突列表;
}
按下void键(){
if(keyCode==右){
p、 变化x=5;
}
else if(keyCode==左){
p、 变化_x=-5;
}
else if(keyCode==UP){
p、 改变y=-5;
}
else if(keyCode==向下){
p、 更改_y=5;}
}
void keyReleased(){
if(keyCode==右){
p、 改变x=0;
}
else if(keyCode==左){
p、 改变x=0;
}
else if(keyCode==UP){
p、 改变y=0;
}
else if(keyCode==向下){
p、 更改_y=0;}
}
void createPlatforms(字符串文件名){
String[]行=加载字符串(文件名);

for(int row=0;row
e
l
f
,…是“空指针”。没有对象分配给此引用。在将它们附加到
ArrayList
之前,您需要创建
Sprite
对象:

void setup(){
// [...]
platforms=newarraylist();
e=新精灵(…精灵e的参数…);
增加(e);
f=新精灵(…精灵f的参数…);
增加(f);
// [...]

错误发生在checkCollision methodNull指针异常上