⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mouselistener.java

📁 本程序是用多线程实现了打飞鸟游戏程序
💻 JAVA
字号:
/*
 * MouseListener.java
 *
 * Created on 2001年12月27日, 下午7:12
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package shoot_birds;

import java.applet.*;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import javax.sound.sampled.AudioInputStream;
import javax.swing.JOptionPane;
/**
 *这里有所有的鼠标事件处理函数
 * @author open
 */
public class MouseListener extends MouseAdapter{
    
    /** Creates a new instance of MouseListener */
    public MouseListener(birdpanel panel) 
    {
        this.panel=panel;
    }
   @SuppressWarnings("deprecation")
public void mouseClicked(MouseEvent evt) 
     {
         if (evt.getClickCount() == 1) //单击,==2是双击
           {
             list=panel.getList();//得到面板中所有飞翔的鸟
             Bullet.getInstance().setNum();//子弹数减一,单击表示射击
             int num=Bullet.getInstance().getNum();//得到子弹数,并判断子弹是否打光
             if(num>0)
             { 
            	 //没有的话,抢响,启动播放声音的线程 具体解释见gunSoundThread 类
                 gunSoundThread rr=new gunSoundThread();
            	 Thread tt=new Thread(rr);
            	 tt.start();
             }
             else
                 {
            	  JOptionPane.showMessageDialog(null,"子弹打光");
                  Thread.currentThread().destroy();
                 }
             for(bird b:list)
             {
               /*判断鸟有没有被打死,即判断鸟是否在枪fe射杀范围内*/
               int x1=b.getX(); //鸟头的横坐标
               int x2=x1+50;//鸟尾的横坐标
               int y3=b.getY();//鸟的纵坐标
               int y=evt.getY();//当前鼠标的横坐标
               int x=evt.getX();//当前鼠标的纵坐标
               
               int x3=width-(height-y3)*(width-x)/(height-y);
               System.out.println("x1 "+x1+"x2 "+x2+"x3 "+x3);
               if(x3>=x1&&x3<=x2)//如果是范围内则设置鸟的状态为死亡
               {
                   b.setDead(true);
                   System.out.println("x1 "+x1+"x2 "+x2+"x3 "+x3);
               }
             }  
            } 
     }
    private birdpanel panel;
    private int width=135;
    private int height=265;
    private ArrayList<bird> list;
}

class MouseMove implements MouseMotionListener
{
    public MouseMove(birdpanel panel)
    {
    	this.panel=panel;
    }
	public void mouseDragged(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub
		/*
		 * 瞄准
		 * 根据鼠标的位置算出瞄准器的坐标
		 * 然后画出
		 * */
		int x0=e.getX();
        int y0=e.getY();
        double x=width-l*(width-x0)/(Math.sqrt((width-x0)*(width-x0)+(height-y0)*(height-y0)));
        double y=height-l*(height-y0)/(Math.sqrt((width-x0)*(width-x0)+(height-y0)*(height-y0)));
        this.panel.drawLine((int)x,(int)y);
	}
	private birdpanel panel;private double l=65;
	private int width=135;
	private int height=265;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -