[Java] 雷霆战机 →→→→→进入此内容的聊天室

来自 , 2020-08-26, 写在 Java, 查看 118 次.
URL http://www.code666.cn/view/fddd7938
  1. package taiyangxi;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.event.KeyAdapter;
  8. import java.awt.event.KeyEvent;
  9. import java.util.ArrayList;
  10. import java.util.Date;
  11.  
  12. import javax.print.attribute.standard.PrinterInfo;
  13.  
  14. import cn.bjsxt.solar.MyFrame;
  15. import cn.bjsxt.solar.ganeutil;
  16.  
  17. //飞机游戏的主窗口
  18. public class solarframe extends MyFrame {
  19.         Image bg= ganeutil.getImage("tupian/123.jpg");
  20.         plane p=new plane("tupian/5.jpg",50,50);
  21.        
  22.         ArrayList bulletList =new ArrayList();
  23.        
  24.         Date starttime;
  25.         Date endtime;
  26.         explode bao;
  27.  
  28.         //画图片
  29.         public void paint(Graphics g) {
  30.                 g.drawImage(bg, 0, 0, null);
  31.                 p.draw(g);
  32.                 for(int i=0;i<bulletList.size();i++) {
  33.                         Bullet b=(Bullet)bulletList.get(i);
  34.                         b.drew(g);
  35.                        
  36.                         //检测子弹与飞机的碰撞
  37.                         boolean peng=b.getRect().intersects(p.getRect());
  38.                         if(peng) {
  39.                                 p.setLive(false);//飞机死掉
  40.                                 endtime=new Date();
  41.                                 //爆炸一次
  42.                                 if(bao==null)
  43.                                  {bao=new explode(p.x, p.y);}
  44.                                 bao.draw(g);
  45.                                 break;
  46.                         }
  47.                 }
  48.                 if(!p.isLive()) {
  49.                         int period =(int)((endtime.getTime()-starttime.getTime())/1000);
  50.                         PrinterInfo(g,"时间:"+period+"秒",20,120,260,Color.white);
  51.                         switch (period/5) {
  52.                         case 0:
  53.                         case 1:
  54.                                 PrinterInfo(g, "菜鸟",50, 100, 200, Color.white);
  55.                                 break;
  56.                         case 2:
  57.                                 PrinterInfo(g, "小鸟",50, 100, 200, Color.white);
  58.                                 break;
  59.                         case 3:
  60.                                 PrinterInfo(g, "大鸟",50, 100, 200, Color.white);
  61.                                 break;
  62.                         case 4:
  63.                                 PrinterInfo(g, "鸟王",50, 100, 200, Color.yellow);
  64.                                 break;
  65.  
  66.                         default:
  67.                                 PrinterInfo(g, "鸟祖",50, 100, 200, Color.blue);
  68.                                 break;
  69.                         }
  70.                 }
  71.                 PrinterInfo(g, "分数:100", 10, 50, 50, Color.yellow);
  72.         }
  73.         //在窗口上打印信息
  74.         private void PrinterInfo(Graphics g,String str,int size,int x,int y,Color color) {
  75.                 // TODO Auto-generated method stub
  76.                 Color c=g.getColor();
  77.                 g.setColor(color);
  78.                 Font f=new Font("宋体", Font.BOLD,size);
  79.                 g.setFont(f);
  80.                 g.drawString(str, x,y);
  81.                 g.setColor(c);
  82.         }
  83.  
  84.         //启动窗口
  85.         public static void main(String[] args) {
  86.                 new solarframe().launchFrame();
  87.        
  88.         }
  89.        
  90.        
  91.         public void launchFrame() {
  92.                 //直接调用父类的方法
  93.                 super.launchFrame();
  94.                 //键盘监听
  95.                 addKeyListener(new KeyMonitor());
  96.                
  97.                 //生成一堆子弹
  98.                 for(int i=0;i<20;i++) {
  99.                                 Bullet b=new Bullet();
  100.                                 bulletList.add(b);
  101.                 }
  102.                 starttime =new Date();
  103.         }
  104.         //定义为内部类,可以使用外部类的普通属性
  105.         //飞机的移动方向
  106.         class KeyMonitor extends KeyAdapter{
  107.  
  108.                 @Override
  109.                 public void keyPressed(KeyEvent e) {
  110.                         //显示按键上下左右 System.out.println("按下"+e.getKeyCode());
  111.                         p.addDirection(e);
  112.                 }
  113.  
  114.                 //@Override
  115.                 public void keyReleased(KeyEvent e) {
  116.                         p.minusDirection(e);
  117.                 }
  118.         }
  119.  
  120. }
  121.  

回复 "雷霆战机"

这儿你可以回复上面这条便签

captcha