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)、幅がどこにも宣言されていません。宣言されていて、投稿したスニペットにない場合を除いて、これが問題になる可能性があります。

関数ではwidthも使用しFrog()ます。

于 2012-10-30T00:02:49.570 に答える