基本信息
源码名称:Java 飞机游戏源码(带音乐)
源码大小:18.65M
文件格式:.zip
开发语言:Java
更新时间:2015-08-26
   源码介绍

package liujunbo.feiji;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class ZhuChuangTi extends Frame{
	
	
	
	
      public void showWin(){
    	  Music m=new Music("/music/We_Are_One.mp3", true);
    	  if(!m.isPlay){
    		  m.startPlay();
    	  }
    	  this.setSize(800, 600);
    	  this.setLocationRelativeTo(null);
    	  this.setResizable(false);
    	  this.setTitle("打飞机");
    	  this.addWindowListener(new Wincolse());
    	  this.setVisible(true);
    	  //开辟线程,让游戏启动
    	  new myThread().start();
    	  //将键盘添加到添加到内部条件
    	  this.addKeyListener(new MyKey());
      }
      
      
      
      //获取图片工具类
    	Toolkit toolKit =Toolkit.getDefaultToolkit();
    	//获取一张空图
    	Image ph_img=null;
    	//获取背景图片
    	Image bg_img = toolKit.getImage(ZhuChuangTi.class.getResource("/imgs/imgs/bg.jpg"));
    	Image pl_img = toolKit.getImage(ZhuChuangTi.class.getResource("/imgs/我军飞机2.gif"));
    	Image bl_img = toolKit.getImage(ZhuChuangTi.class.getResource("/imgs/敌军2.gif"));
    	Image pl_zidan = toolKit.getImage(ZhuChuangTi.class.getResource("/imgs/敌军子弹3.png"));
    	Image pl_boss = toolKit.getImage(ZhuChuangTi.class.getResource("/imgs/Boss.png"));
    	Image boss_zidan = toolKit.getImage(ZhuChuangTi.class.getResource("/imgs/Boss子弹2.png"));
    	Image dijun_zidan = toolKit.getImage(ZhuChuangTi.class.getResource("/imgs/敌军子弹2.png"));
    	
    	WjunFeiJi pl=new WjunFeiJi (this,true);
    	BeiJing bg=new BeiJing(this);
    	Boss bs=new Boss(this,true);
    	
    	
//    	DiJunFeiJi dl=new DiJunFeiJi(this);
    	//WoJunZiDan pb=new WoJunZiDan(pl.pl_x, pl.pl_y, true, this);
    	//实例化飞机子弹集合
    	List<WoJunZiDan>plzidan=new ArrayList<WoJunZiDan>();
    	//实例化敌军飞机集合类
    	List<DiJunFeiJi>dijun=new ArrayList<DiJunFeiJi>();
    	List<WjunFeiJi>wojun=new ArrayList<WjunFeiJi>();
    	List<Boss>Boss=new ArrayList<Boss>();
    	List<Bosszidan>Boss_zd=new ArrayList<Bosszidan>();
    	List<Dijunzidan>dijun_zd=new ArrayList<Dijunzidan>();
    	//实例化随机类
    	Random random =new Random();
    	int time=0;
    	
    	int bosstime = 0;
      //双缓冲,解决闪屏
      @Override
      public void update(Graphics g) {
    	  if(ph_img==null){
    		  ph_img=this.createImage(800, 600);
    	  }
    	  //创建一支画笔
    	  Graphics gph=ph_img.getGraphics();
    	  //设置图片为白色
    	  gph.setColor(Color.white);
    	  //设置与窗体大小相同的矩形
    	  gph.fillRect(0, 0, 800, 600);
    	  
    	  //调用paint方法
    	  paint(gph);
    	  
    	  
    	  g.drawImage(ph_img,0,0,null);
    	  
    	  
      };
      
      //自动调用
      @Override
    public void paint(Graphics g) {
             bg.drawMe(g);
             pl.drawMe(g);
             
             bs.drawWe(g);
             
             for (int i = 0; i < dijun_zd.size(); i  ) {
            	 Dijunzidan dijunzidan=dijun_zd.get(i);
            	 dijunzidan.drawMe(g);
            	 dijunzidan.hitdijunzidan(pl);
			}
             
             
             
           for (int i = 0; i < Boss_zd.size(); i  ) {
			Bosszidan bszd=Boss_zd.get(i);
			bszd.drawMe(g);
			bszd.hitBosszidan(pl);
		}
             
    	    
    	     for (int i=0; i<plzidan.size();i  ){
    	    	
    						WoJunZiDan pb= plzidan.get(i);
    		    	    	pb.drawMe(g);
    		    	    	pb.hitdijun(dijun);
    		    	    	pb.hitBoss(bs);
    		    	    	
    					
    				
    				}
    	    	 //调用敌军飞机绘画方法
    	    	 for (int j = 0; j < dijun.size(); j  ) {
    	    		 DiJunFeiJi ep=dijun.get(j);
    	    		 
    	    		 ep.drawWe(g);
    	    		 ep.hitwjfj(pl);
    	    	     
				}
    	    	 
    	    	
    	     }
      public void quyu(){
    	  if(random.nextInt(800)<100){
    		  random.nextInt(800);
    	  }else if(random.nextInt(800)>200){
    		  random.nextInt(800);
    	  }
      }
    
      //添加敌军飞机
      public void getdijunfeiji() {
    	  if(time%20==0){
		//实例化敌军飞机
    	  DiJunFeiJi di=new DiJunFeiJi(random.nextInt(750), 0, true, this);
    	  quyu();
    	  dijun.add(di);
    	  
	}
      }
      
      

      
      
      
      
      //内部类关闭窗体
      private class Wincolse extends WindowAdapter{

		@Override
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
    	  
      }
      
      
      //定义一个内部类,用于游戏启动--->thread 线程
      public class myThread extends Thread{

		@Override
		public void run() {
			//让游戏一直畅通
			while (true){
				//睡眠
				//try--》捕获异常,catch--》处理异常
				try {
					sleep(30);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				//重绘方法 --》repaint
				repaint();
				//调用敌军飞机添加方法
				
				getdijunfeiji();
				time  ;
				bosstime  ;
			}
		}
    	  
      }
      
      //定义键盘内部类用于飞机的操作
      private class MyKey extends KeyAdapter{
         //按下
		@Override
		public void keyPressed(KeyEvent e) {
			//调用按下的方法
			pl.pressKey(e);
		}
        //松开
		@Override
		public void keyReleased(KeyEvent e) {
			pl.ReleasKey(e);
		}
    	  
      }
      
      
      
      
	
	public static void main(String[] args) {
		ZhuChuangTi gs=new ZhuChuangTi();
		gs.showWin();
  
	}


}