Hallo zusammen,
ich habe in Java (mit BlueJ) das Spiel Pong programmiert. Nun kommen nach dem Starten folgende Fehlermeldungen:
java.lang.NullPointerException
at Ball.amRechtenSchlaeger(Ball.java:136)
at Ball.bewege(Ball.java:69)
at Pong.Spielstart(Pong.java:68)
Hier mein Code:
Danke und viele Grüße!
ich habe in Java (mit BlueJ) das Spiel Pong programmiert. Nun kommen nach dem Starten folgende Fehlermeldungen:
java.lang.NullPointerException
at Ball.amRechtenSchlaeger(Ball.java:136)
at Ball.bewege(Ball.java:69)
at Pong.Spielstart(Pong.java:68)
Hier mein Code:
Java:
import sum.kern.*;
public class Pong
{
Bildschirm Spielfeld;
Buntstift hatBs;
Ball Kugel;
Schlaeger S1;
Schlaeger S2;
Tastatur KB;
Maus hatMaus;
int starter;
int Sp1;
int Sp2;
public Pong()
{
Spielfeld = new Bildschirm(10,10,500,400);
Sp1 = 0;
Sp2 = 0;
hatBs = new Buntstift();
KB = new Tastatur();
S1 = new Schlaeger(3,200,'a','y');
S2 = new Schlaeger(495,200,'j','m');
Kugel = new Ball(250,200,0.01,4,Spielfeld,S1,S2);
hatMaus = new Maus();
starter = 0;
}
public void zeichneSpielfeld()
{
hatBs.setzeFarbe(0);
hatBs.bewegeBis(0,15);
hatBs.setzeFuellmuster(1);
hatBs.zeichneRechteck(500,400);
hatBs.hoch();
hatBs.setzeSchriftgroesse(40);
hatBs.radiere();
hatBs.bewegeBis(220,50);
hatBs.schreibeZahl(Sp1);
hatBs.bewegeBis(258,50);
hatBs.schreibeZahl(Sp2);
}
public void zeichneMittellinie()
{
hatBs.bewegeBis(250,15);
hatBs.runter();
hatBs.radiere();
hatBs.bewegeBis(250,400);
hatBs.normal();
}
public void Spielstart()
{
this.zeichneSpielfeld();
this.zeichneMittellinie();
S1.zeichne();
S2.zeichne();
Kugel.zeichne();
do{
if ((hatMaus.istGedrueckt()==true) || (starter==1))
{
starter=1;
Kugel.bewege();
if (KB.wurdeGedrueckt()==true)
{S1.bewege();
S2.bewege();
}
this.zeichneMittellinie();
}}
while (hatMaus.doppelKlick()==false);
}
}
Java:
import sum.kern.*;
public class Ball
{
Buntstift Bs;
Bildschirm kenntBildschirm;
Schlaeger kenntSchlaeger1;
Schlaeger kenntSchlaeger2;
// Attribute
int xPos,yPos;
double Richtung,Geschwindigkeit,hPosition,vPosition;
public Ball(int x,int y,double v, double r,Bildschirm b,Schlaeger s1,Schlaeger s2)
{
Bs = new Buntstift();
xPos = x;
yPos = y;
Richtung = r;
Geschwindigkeit = v;
kenntBildschirm = b;
kenntSchlaeger1 = s1;
kenntSchlaeger1 = s2;
Bs.bewegeBis(xPos,yPos);
}
// Dienste
public void zeichne()
{
Bs.radiere();
Bs.setzeFuellmuster(1);
Bs.zeichneKreis(5);
Bs.normal();
}
public void loesche()
{
Bs.setzeFuellmuster(1);
Bs.setzeFarbe(0);
Bs.zeichneKreis(5);
}
public void setzeGeschwindigkeit(double v)
{
Geschwindigkeit = v;
}
public double geschwindigkeit()
{
return Geschwindigkeit;
}
public void bewege()
{
this.loesche();
if (this.amLinkenRand())
{this.setzeRichtung(180-Richtung);}
if (this.amRechtenRand())
{this.setzeRichtung(180-Richtung);}
if (this.amOberenRand())
{this.setzeRichtung(360-Richtung);}
if (this.amUnterenRand())
{this.setzeRichtung(360-Richtung);}
if (this.amLinkenSchlaeger())
{this.setzeRichtung(360-Richtung);}
if (this.amRechtenSchlaeger())
{this.setzeRichtung(360-Richtung);}
this.loesche();
Bs.bewegeUm(Geschwindigkeit);
this.zeichne();
}
public void setzeRichtung (double r)
{
Bs.dreheBis(r);
Richtung = Bs.winkel();
}
public double hPosition()
{
return Bs.hPosition();
}
public double vPosition()
{
return Bs.vPosition();
}
public boolean amLinkenRand()
{
if (this.hPosition() <=5)
{return true;}
else {return false;}
}
public boolean amRechtenRand()
{
if (this.hPosition() >= kenntBildschirm.breite()-5)
{return true;}
else {return false;}
}
public boolean amOberenRand()
{
if (this.vPosition() <=20)
{return true;}
else {return false;}
}
public boolean amUnterenRand()
{
if (this.vPosition() >=395)
{return true;}
else {return false;}
}
public boolean amLinkenSchlaeger()
{
if (
(xPos >= kenntSchlaeger1.hPosition() + 7) &&
(xPos <= kenntSchlaeger1.hPosition() + 8) &&
(yPos <= kenntSchlaeger1.vPosition() + 3) &&
(yPos >= kenntSchlaeger1.vPosition() - 3) )
{return true;}
else {return false;}
}
public boolean amRechtenSchlaeger()
{
if (
(xPos <= kenntSchlaeger2.hPosition() - 7) &&
(xPos >= kenntSchlaeger2.hPosition() - 8) &&
(yPos <= kenntSchlaeger2.vPosition() + 3) &&
(yPos >= kenntSchlaeger2.vPosition() - 3) )
{return true;}
else {return false;}
}
}
Java:
import sum.kern.*;
public class Schlaeger
{
Tastatur KB;
Buntstift Bs;
int xPos,yPos;
double hPosition,vPosition;
char Th,Tr;
public Schlaeger(int x, int y,char Th,char Tr)
{
KB = new Tastatur();
Bs = new Buntstift();
xPos = x;
yPos = y;
Bs.bewegeBis(xPos,yPos);
}
// Dienste
public void zeichne()
{
Bs.radiere();
Bs.setzeFuellmuster(1);
Bs.zeichneRechteck(4,20);
}
public void loesche()
{
Bs.setzeFuellmuster(1);
Bs.setzeFarbe(0);
Bs.zeichneRechteck(4,20);
}
public void bewege()
{
this.loesche();
if (KB.wurdeGedrueckt()==true)
{
if (KB.zeichen()==Th)
{yPos = yPos + 4;}
if (KB.zeichen()==Tr)
{yPos = yPos - 4;}
KB.weiter();
this.zeichne();}
}
public double hPosition()
{
return Bs.hPosition();
}
public double vPosition()
{
return Bs.vPosition();
}
}
Danke und viele Grüße!
Zuletzt bearbeitet: