1
これはコードです:、java.lang.NullPointerExceptionが
import java.applet.Applet;
import java.awt.Color;`
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
@SuppressWarnings("serial")
public class Pong extends Applet implements Runnable, KeyListener{
final int width = 700, height = 500;
public static int score = 0;
Thread thread;
HumanPaddle p1;
Ball b1;
public void init(){
this.resize(width, height);
this.addKeyListener(this);
thread = new Thread(this);
thread.start();
p1 = new HumanPaddle(1);
b1 = new Ball();
}
public void paint(Graphics g){
g.setColor(Color.black);
g.fillRect(0, 0, width, height);
p1.draw(g);
b1.draw(g);
g.setColor(Color.red);
g.drawString("Score: " + Integer.toString(score), width/2 - 20, 10);
}
public void update(Graphics g){
paint(g);
}
public void run() {
for(;;){
p1.move();
b1.move();
b1.paddleCollision(p1, p1);
if(b1.getX() > width + 10){score++;
}else if(b1.getX() < -10){score--;}
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void keyPressed(KeyEvent key) {
if(key.getKeyCode() == KeyEvent.VK_UP || key.getKeyCode() == KeyEvent.VK_W){
p1.setUpAccel(true);
}else if(key.getKeyCode() == KeyEvent.VK_DOWN || key.getKeyCode() == KeyEvent.VK_S){
p1.setDownAccel(true);
}
}
public void keyReleased(KeyEvent key) {
if(key.getKeyCode() == KeyEvent.VK_UP || key.getKeyCode() == KeyEvent.VK_W){
p1.setUpAccel(false);
}else if(key.getKeyCode() == KeyEvent.VK_DOWN || key.getKeyCode() == KeyEvent.VK_S){
p1.setDownAccel(false);
}
}
public void keyTyped(KeyEvent key) {
}
}
事SOMETIMES、唯一時には、コードが失敗し、スレッド「スレッドで例外」
を示すことです-3" java.lang.Thread.runで Pong.run(Pong.java:48)でjava.lang.NullPointerExceptionが(不明なソース)」
私はerrがあります意味を知っていますまたは48行目48行目: "p1.move();"
、それが有効な方法であり、唯一、時には失敗するので、非理にかなって...
してください、私は迅速な助けを必要と...事前にありがとうございます。
あなたのクラスが実装し 'Runnable'が、あなたの'ラン() 'メソッドは' @ Override'でアノテートされていません。つまり、警告が有効になっていないことを意味します。妥当な数の警告を有効にしてコードを書くことを最初に学ばない限り、プログラマーとして多くのことを達成するつもりはありません。 –