1.更改了控制物体,将书中源程序字符改成了一个圆圈
2.更改了信息显示,可以直接在控制面板显示
import
java.awt.
*
;
import
java.awt.event.
*
;
import
javax.swing.
*
;


public
class
game
extends
JFrame
...
{
private GamePane gamePane=new GamePane();

public game()...{
getContentPane().add(gamePane);
gamePane.setFocusable(true);
}

/** *//**
* @param args
* 主函数
*/

public static void main(String args[])...{
game frame=new game();
frame.setTitle("PrisonBreak");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700,500);
frame.setVisible(true);
}
}

class
GamePane
extends
JPanel
implements
KeyListener
...
{
boolean key=false; //在此定义钥匙-“key”的数据类型
boolean door=false;
private int x=200;
private int y=200;

public GamePane()...{
addKeyListener(this);
}

/** *//**
* 当按键放松时执行的操作
*/

public void keyReleased(KeyEvent e)...{
//获得钥匙

if(x>100&&x<150&&y>100&&y<120)...{
key=true;
}
//判断是否能可以开门

if((x>500&&x<550)&&(y>400&&y<450))...{

if(key==true)...{
door=true;
}
}
}

public void keyTyped(KeyEvent e)...{
}

public void keyPressed(KeyEvent e)...{

switch(e.getKeyCode())...{
case KeyEvent.VK_DOWN:y+=10;break;
case KeyEvent.VK_UP: y-=10;break;
case KeyEvent.VK_LEFT: x-=10;break;
case KeyEvent.VK_RIGHT: x+=10;break;
default:break;
}
repaint();
}

protected void paintComponent(Graphics g)...{
super.paintComponent(g);
//画出控制物体
g.setColor(Color.red);
g.fillOval(x, y, 20, 20);
//画出门
g.setColor(Color.blue);
g.fillRect(500, 400, 50, 50);
g.setColor(Color.white);
g.drawLine(525,400,525,450);
//画出钥匙
g.setColor(Color.black);
g.fillOval(100, 100, 20, 20);
g.setColor(Color.black);

int Poly_x[]=...{110,130,130,135,135,145,145,150,150,110};

int Poly_y[]=...{105,105,95,95,105,105,95,95,115,115};
g.fillPolygon(Poly_x, Poly_y, 10);

if(key==true)...{
g.drawString("You get the key!", 80, 80);
}

if(door==false&&(x>510&&x<540)&&(y>410&&y<440))...{
g.drawString("The door is closed,you need the key!", 440, 380);
}

if(door==true)...{
g.drawString("Congratulation!You get out the prison!",440,380);
}
}
}