这是我做的第一个游戏程序,挺高兴的,虽然很差,很差,不过我会慢慢修改的。最近一直在看《越狱》这部电视剧,这个游戏和这个名字还有点靠谱,所以给游戏取了这个名字。 这个程序是将《java程序设计导论》上的一个程序稍加修改而成的,改动也不大,能够实现的功能也就只有一个:就是将字符走到钥匙处,对话框就会出现一句:"You get the key!",然后走到门处(在DOS对话框中)出现:"Congratulation!You get out the prison!"
下面是游戏源程序:
import java.awt.*; import java.awt.event.*; import javax.swing.*; publicclass game extends JFrame...{ private KeyboardPanel keyboardPanel=new KeyboardPanel(); public game()...{ getContentPane().add(keyboardPanel); keyboardPanel.setFocusable(true); } publicstaticvoid main(String args[])...{ game frame=new game(); frame.setTitle("PrisonBreak"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(700,500); frame.setVisible(true); } } class KeyboardPanel extends JPanel implements KeyListener...{ boolean key=false; //在此定义钥匙-“key”的数据类型 privateint x=200; privateint y=200; privatechar keyChar='A'; public KeyboardPanel()...{ addKeyListener(this); } /** *//** * 当按键放松时执行的操作 */ publicvoid keyReleased(KeyEvent e)...{ /** *//** * 获得钥匙 */ if(x>100&&x<150&&y>100&&y<120)...{ System.out.println("You get the key!"); key=true; } /** *//** * 判断是否能够出去 */ if((x>500&&x<550)&&(y>400&&y<450))...{ if(key==true)...{ System.out.println("Congratulation!You get out the prison!"); } else...{ System.out.println("The door is closed,you need the key!"); } } } publicvoid keyTyped(KeyEvent e)...{ } publicvoid 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:keyChar=e.getKeyChar(); } repaint(); } protectedvoid paintComponent(Graphics g)...{ super.paintComponent(g); g.setFont(new Font("TimesRoman",Font.PLAIN,24)); g.drawString(String.valueOf(keyChar),x,y); 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); } }
下面是书上未被我改动前的源程序:
import java.awt.*; import java.awt.event.*; import javax.swing.*; publicclass test extends JFrame...{ private KeyboardPanel keyboardPanel=new KeyboardPanel(); public test()...{ getContentPane().add(keyboardPanel); keyboardPanel.setFocusable(true); } publicstaticvoid main(String args[])...{ test frame=new test(); frame.setTitle("PrisonBreak"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(1000,500); frame.setVisible(true); } } class KeyboardPanel extends JPanel implements KeyListener...{ boolean key=false; privateint x=200; privateint y=200; privatechar keyChar='A'; public KeyboardPanel()...{ addKeyListener(this); } publicvoid keyReleased(KeyEvent e)...{ } publicvoid keyTyped(KeyEvent e)...{ } publicvoid 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:keyChar=e.getKeyChar(); } repaint(); } protectedvoid paintComponent(Graphics g)...{ super.paintComponent(g); g.setFont(new Font("TimesRoman",Font.PLAIN,24)); g.drawString(String.valueOf(keyChar),x,y); } }