该楼层疑似违规已被系统折叠隐藏此楼查看此楼
}
}
public class PongApplet extends JApplet implements KeyListener
{
private Ball ball;
private Paddle pad;
public void init()
{
setBackground(Color.white);
addKeyListener(this);
ball=new Ball(this);
pad=new Paddle(this);
ball.start();
requestFocus();
}
public void paint(Graphics g)
{
g.setColor(getBackground());
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(Color.blue);
g.fillOval(ball.getX(),ball.getY(),ball.SIZE,ball.SIZE);
pad.resetLocation();
g.setColor(Color.red);
g.fillRect(pad.getX(),pad.getY(),Paddle.WIDTH,Paddle.HEIGHT);
}
public boolean ballHitsPaddle()
{
return ball.getX()+Ball.SIZE>=pad.getX()&&ball.getY()>=pad.getY()&&ball.getY()<=pad.getY()+Paddle.HEIGHT;
}
public void keyPressed(KeyEvent e)
{
int keyCode=e.getKeyCode();
if(keyCode==KeyEvent.VK_UP)
pad.moveUp();
else if(keyCode==KeyEvent.VK_DOWN)
pad.moveDown();
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
}
这个是我写的一个Pong游戏,就是一个小球在一个矩形框里滚动,左面有一个挡板,键盘上下键控制挡板的上下移动,Ball类是一个多线程,可是当运行的时候,无论怎么按键盘上下键的时候,挡板都没有移动,有时候当把屏幕变大在变小后可能会在按下上下键的时候挡板移动,可是并不总是成功,当成功的时候关闭窗口的时候会出现下面的异常:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: component
argument pData
at sun.awt.windows.Win32SurfaceData.initOps(Native Method)
at sun.awt.windows.Win32SurfaceData.(Win32SurfaceData.java:448)
at sun.awt.windows.Win32SurfaceData.createData(Win32SurfaceData.java:316
)
at sun.awt.Win32GraphicsConfig.createSurfaceData(Win32GraphicsConfig.jav
a:357)
at sun.awt.windows.WComponentPeer.replaceSurfaceData(WComponentPeer.java
:332)
at sun.awt.windows.WComponentPeer.replaceSurfaceData(WComponentPeer.java
:313)
at sun.awt.windows.WComponentPeer$2.run(WComponentPeer.java:353)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
请高手们解释一下这是为什么?还有怎么解决这个问题?多谢了
如果觉得《java小球挡板游戏_多线程的一个小球游戏 就是以前的那个Pong游戏》对你有帮助,请点赞、收藏,并留下你的观点哦!