mercredi 29 avril 2015

Java Fehler: NullPointerException

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:

Java Code:

  1.  
  2. import sum.kern.*;
  3.  
  4. public class Pong
  5. {
  6. Bildschirm Spielfeld;
  7. Buntstift hatBs;
  8. Ball Kugel;
  9. Schlaeger S1;
  10. Schlaeger S2;
  11. Tastatur KB;
  12. Maus hatMaus;
  13. int starter;
  14. int Sp1;
  15. int Sp2;
  16.  
  17.  
  18. public Pong()
  19. {
  20. Spielfeld = new Bildschirm(10,10,500,400);
  21. Sp1 = 0;
  22. Sp2 = 0;
  23. hatBs = new Buntstift();
  24. KB = new Tastatur();
  25. S1 = new Schlaeger(3,200,'a','y');
  26. S2 = new Schlaeger(495,200,'j','m');
  27. Kugel = new Ball(250,200,0.01,4,Spielfeld,S1,S2);
  28. hatMaus = new Maus();
  29. starter = 0;
  30.  
  31.  
  32. }
  33.  
  34. public void zeichneSpielfeld()
  35. {
  36. hatBs.setzeFarbe(0);
  37. hatBs.bewegeBis(0,15);
  38. hatBs.setzeFuellmuster(1);
  39. hatBs.zeichneRechteck(500,400);
  40. hatBs.hoch();
  41. hatBs.setzeSchriftgroesse(40);
  42. hatBs.radiere();
  43. hatBs.bewegeBis(220,50);
  44. hatBs.schreibeZahl(Sp1);
  45. hatBs.bewegeBis(258,50);
  46. hatBs.schreibeZahl(Sp2);
  47. }
  48.  
  49. public void zeichneMittellinie()
  50. {
  51. hatBs.bewegeBis(250,15);
  52. hatBs.runter();
  53. hatBs.radiere();
  54. hatBs.bewegeBis(250,400);
  55. hatBs.normal();
  56. }
  57.  
  58. public void Spielstart()
  59. {
  60. this.zeichneSpielfeld();
  61. this.zeichneMittellinie();
  62. S1.zeichne();
  63. S2.zeichne();
  64. Kugel.zeichne();
  65. do{
  66. if ((hatMaus.istGedrueckt()==true) || (starter==1))
  67. {
  68. starter=1;
  69. Kugel.bewege();
  70. if (KB.wurdeGedrueckt()==true)
  71. {S1.bewege();
  72. S2.bewege();
  73. }
  74. this.zeichneMittellinie();
  75. }}
  76. while (hatMaus.doppelKlick()==false);
  77. }
  78. }


Java Code:

  1.  
  2. import sum.kern.*;
  3.  
  4. public class Ball
  5. {
  6. Buntstift Bs;
  7. Bildschirm kenntBildschirm;
  8. Schlaeger kenntSchlaeger1;
  9. Schlaeger kenntSchlaeger2;
  10. // Attribute
  11. int xPos,yPos;
  12. double Richtung,Geschwindigkeit,hPosition,vPosition;
  13.  
  14. public Ball(int x,int y,double v, double r,Bildschirm b,Schlaeger s1,Schlaeger s2)
  15. {
  16. Bs = new Buntstift();
  17. xPos = x;
  18. yPos = y;
  19. Richtung = r;
  20. Geschwindigkeit = v;
  21. kenntBildschirm = b;
  22. kenntSchlaeger1 = s1;
  23. kenntSchlaeger1 = s2;
  24.  
  25. Bs.bewegeBis(xPos,yPos);
  26. }
  27.  
  28. // Dienste
  29.  
  30. public void zeichne()
  31. {
  32. Bs.radiere();
  33. Bs.setzeFuellmuster(1);
  34. Bs.zeichneKreis(5);
  35. Bs.normal();
  36. }
  37.  
  38.  
  39. public void loesche()
  40. {
  41. Bs.setzeFuellmuster(1);
  42. Bs.setzeFarbe(0);
  43. Bs.zeichneKreis(5);
  44. }
  45.  
  46. public void setzeGeschwindigkeit(double v)
  47. {
  48. Geschwindigkeit = v;
  49. }
  50.  
  51. public double geschwindigkeit()
  52. {
  53. return Geschwindigkeit;
  54. }
  55.  
  56. public void bewege()
  57. {
  58. this.loesche();
  59.  
  60. if (this.amLinkenRand())
  61. {this.setzeRichtung(180-Richtung);}
  62. if (this.amRechtenRand())
  63. {this.setzeRichtung(180-Richtung);}
  64. if (this.amOberenRand())
  65. {this.setzeRichtung(360-Richtung);}
  66. if (this.amUnterenRand())
  67. {this.setzeRichtung(360-Richtung);}
  68. if (this.amLinkenSchlaeger())
  69. {this.setzeRichtung(360-Richtung);}
  70. if (this.amRechtenSchlaeger())
  71. {this.setzeRichtung(360-Richtung);}
  72. this.loesche();
  73. Bs.bewegeUm(Geschwindigkeit);
  74. this.zeichne();
  75.  
  76. }
  77.  
  78. public void setzeRichtung (double r)
  79. {
  80. Bs.dreheBis(r);
  81. Richtung = Bs.winkel();
  82. }
  83.  
  84. public double hPosition()
  85. {
  86. return Bs.hPosition();
  87. }
  88.  
  89. public double vPosition()
  90. {
  91. return Bs.vPosition();
  92. }
  93.  
  94. public boolean amLinkenRand()
  95. {
  96. if (this.hPosition() <=5)
  97. {return true;}
  98. else {return false;}
  99. }
  100.  
  101. public boolean amRechtenRand()
  102. {
  103. if (this.hPosition() >= kenntBildschirm.breite()-5)
  104. {return true;}
  105. else {return false;}
  106. }
  107.  
  108. public boolean amOberenRand()
  109. {
  110. if (this.vPosition() <=20)
  111. {return true;}
  112. else {return false;}
  113. }
  114.  
  115. public boolean amUnterenRand()
  116. {
  117. if (this.vPosition() >=395)
  118. {return true;}
  119. else {return false;}
  120. }
  121.  
  122. public boolean amLinkenSchlaeger()
  123. {
  124.  
  125. if (
  126. (xPos >= kenntSchlaeger1.hPosition() + 7) &&
  127. (xPos <= kenntSchlaeger1.hPosition() + 8) &&
  128. (yPos <= kenntSchlaeger1.vPosition() + 3) &&
  129. (yPos >= kenntSchlaeger1.vPosition() - 3) )
  130. {return true;}
  131. else {return false;}
  132. }
  133.  
  134. public boolean amRechtenSchlaeger()
  135. {
  136.  
  137. if (
  138. (xPos <= kenntSchlaeger2.hPosition() - 7) &&
  139. (xPos >= kenntSchlaeger2.hPosition() - 8) &&
  140. (yPos <= kenntSchlaeger2.vPosition() + 3) &&
  141. (yPos >= kenntSchlaeger2.vPosition() - 3) )
  142. {return true;}
  143. else {return false;}
  144.  
  145. }
  146.  
  147. }


Java Code:

  1.  
  2. import sum.kern.*;
  3.  
  4. public class Schlaeger
  5. {
  6. Tastatur KB;
  7. Buntstift Bs;
  8. int xPos,yPos;
  9. double hPosition,vPosition;
  10. char Th,Tr;
  11.  
  12. public Schlaeger(int x, int y,char Th,char Tr)
  13. {
  14. KB = new Tastatur();
  15. Bs = new Buntstift();
  16. xPos = x;
  17. yPos = y;
  18. Bs.bewegeBis(xPos,yPos);
  19. }
  20. // Dienste
  21.  
  22. public void zeichne()
  23. {
  24. Bs.radiere();
  25. Bs.setzeFuellmuster(1);
  26. Bs.zeichneRechteck(4,20);
  27. }
  28.  
  29.  
  30. public void loesche()
  31. {
  32. Bs.setzeFuellmuster(1);
  33. Bs.setzeFarbe(0);
  34. Bs.zeichneRechteck(4,20);
  35. }
  36.  
  37. public void bewege()
  38. {
  39. this.loesche();
  40. if (KB.wurdeGedrueckt()==true)
  41. {
  42. if (KB.zeichen()==Th)
  43. {yPos = yPos + 4;}
  44. if (KB.zeichen()==Tr)
  45. {yPos = yPos - 4;}
  46. KB.weiter();
  47. this.zeichne();}
  48.  
  49. }
  50.  
  51. public double hPosition()
  52. {
  53. return Bs.hPosition();
  54. }
  55.  
  56. public double vPosition()
  57. {
  58. return Bs.vPosition();
  59. }
  60. }


Danke und viele Grüße!


Java Fehler: NullPointerException

0 commentaires:

Enregistrer un commentaire