准备阶段:
工具:eclipse(MyEclipse) 材料:三张图片(地鼠,打地鼠背景图,锤子)
代码阶段:
import java.awt.Color;
import java.awt.Font;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class playMouse extends JFrame implements Runnable{
private int num=0;//分数
private JLabel back;//背景
private JLabel [] mouses;//老鼠
private ImageIcon imgMouse;//老鼠图片
private JLabel jtf;//计分字
//构造函数,初始化
public playMouse() {
this.setResizable(false);//不能修改大小
this.getContentPane().setLayout(null);
this.setTitle("打林毅");
this.setBounds(650, 200, 400, 240);
//背景
back=new JLabel();
ImageIcon icon=new ImageIcon(this.getClass().getResource("1.jpg"));//创建Icon ,放背景图片,放入Icon中
back.setIcon(icon);//加入背景图
back.setBounds(0, -35, 400, 240);//设置背景位置与大小
//锤子显示
this.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(
Toolkit.getDefaultToolkit().getImage("src/com/iotek/mouse/3.jpg"),
new Point(), "se"));//放入工具锤子*
//老鼠显示
imgMouse =new ImageIcon(this.getClass().getResource("21.jpg"));//放入老鼠图片
mouses =new JLabel[9];//九个
for(int i=0;i<9;i++) {
mouses[i]=new JLabel();//建立九个对象
mouses[i].setSize(imgMouse.getIconWidth(),imgMouse.getIconHeight());//大小就设为老鼠图片的大小
//mouses[i].setIcon(imgMouse);
//打中老鼠的事件监听器
mouses[i].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {//加分
Object object=e.getSource();
if(object instanceof JLabel) {
JLabel label=(JLabel)object;
//击中,不为空加分
if(label.getIcon()!=null) {
num++;
jtf.setText("得分:"+num+"分");//更新计分器,加入分数
}
label.setIcon(null);
}
}
});
this.getContentPane().add(mouses[i]);//加入老鼠对象,九个
}
jtf=new JLabel();//计分
jtf.setBounds(315, 5, 100, 30);//位置与大小
jtf.setFont(new Font("",20,20));//字体大小
jtf.setForeground(Color.cyan);//字体颜色
jtf.setText("得分:");//字
mouses[0].setLocation(76,10);//每个老鼠图片的位置
mouses[1].setLocation(170,10);
mouses[2].setLocation(270,11);
mouses[3].setLocation(67, 57);
mouses[4].setLocation(170,55);
mouses[5].setLocation(270, 55);
mouses[6].setLocation(60, 105);
mouses[7].setLocation(172, 105);
mouses[8].setLocation(280, 105);
this.getContentPane().add(jtf);//加入计分器
this.getContentPane().add(back);//加入背景
this.setVisible(true);//可见
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//可关闭
}//初始化完成
//线程
@Override
public void run() {
//死循环,保证一直下去
while(true) {
try {
Thread.sleep(500);//线程睡眠0.5秒
int index=(int)(Math.random()*9);//产生0~8的随机数
//当老鼠对象图片为空时,放入老鼠图片容器,显示
if(mouses[index].getIcon()==null) {
mouses[index].setIcon(imgMouse);
Thread.sleep(800);//反应时间,更具难度的不同
//打到老鼠,老鼠立马消失
if(mouses[index].isShowing()) {
mouses[index].setIcon(null);
}
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
playMouse p1=new playMouse();
Thread t1=new Thread(p1);
t1.start();
}
}