📄 mouselistener.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 + -