1

我正在尝试制作一个基本的青蛙游戏。我正在尝试为我的青蛙图像创建一个类,然后我希望它显示在void draw();除了我不断收到 NullPointException 之外,任何人都可以帮我找出原因吗?

这是我一直在尝试解决问题的代码。

PImage img; // frog image

Frog froggy;
Car[] c1;

class Car {
  float xpos;
  int ypos;
  int sizel;
  int sizew;
  float yspeed;
  color c;

   Car(){
    xpos = 0;
    ypos = (int)random(120,480);
    sizel = (int)random(20,30);
    sizew = 15;
    yspeed = (float)random(1,3);
    c= color(random(255), random(255), random(255));

  }

  void carShape() {
    rectMode(CENTER);
    fill(c);
   rect(xpos,ypos,sizel,sizew);
   fill(0);
   rect(xpos-5, ypos-8, 8,5);
   rect(xpos+5, ypos-8, 8,5);
   rect(xpos-5, ypos+8, 8,5);
   rect(xpos+5, ypos+8, 8,5);

  }

 void moveCar () {
   xpos = xpos + yspeed;
    if (xpos > width) {
      xpos = 0;
      ypos = (int)random(120,480);

    } 

 } 
}

class Frog {
  int frogx;
  int frogy;

 Frog(){
    frogx = width/2-20;
    frogy = 527;
 }

  void drawFrog() {
    image(img,frogx,frogy);

 }
}

void setup() {
  size(800,600);
   img = loadImage("frog.png");


c1 = new Car[20];

  for(int i=0; i<20; i++) {
    c1[i] = new Car();
  }
}

  void draw() {
    background(100);

     froggy.drawFrog();


    for(int i=0; i<20; i++) {
    c1[i].carShape();
    c1[i].moveCar();
    }


  }

这是错误

Exception in thread "Animation Thread" java.lang.NullPointerException
    at snowflakecarexample.draw(snowflakecarexample.java:97)
    at processing.core.PApplet.handleDraw(PApplet.java:2120)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:197)
    at processing.core.PApplet.run(PApplet.java:1998)
    at java.lang.Thread.run(Thread.java:680)
4

3 回答 3

3

你不initialize Frog反对。尝试

   Frog froggy = new Frog();
   froggy.drawfrog();
于 2012-10-29T23:58:54.850 回答
2

无论青蛙应该是什么,都必须对其进行初始化:

Frog froggy;
... (Froggy is null)
froggy.drawFrog();

也许您想在某处调用构造函数?喜欢:

Frog froggy = new Frog();
于 2012-10-29T23:57:50.483 回答
0

moveCar()您正在检查的函数中if (xpos > width),但我没有看到任何地方声明的宽度。除非它被声明并且不在您发布的代码段中,否则这可能是问题所在。

您还可以在Frog()函数中使用宽度。

于 2012-10-30T00:02:49.570 回答