打地鼠游戏

打地鼠游戏简单的说就是一个鼠标事件,核心方法就是监听用户单机鼠标事件。
在eclipse中创建Jframe窗体,名为Shrewmouse,在窗体中增加七个标签,一个用来显示游戏背景图片,其余六个显示地鼠图片。监听标签上鼠标单击事件,如果该标签上有图标,则将其删除。代码如下。

图片
这里写图片描述
这里写图片描述

package com.lw;

import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Shrewmouse extends JFrame implements Runnable {

    /**
     * 
     */
    private static final long serialVersionUID = 8752899717443325480L;
    private JLabel[] mouses; // 存放显示地鼠的标签数组
    private ImageIcon imgMouse; // 地鼠图片对象

    /**
     * Launch the application
     * 
     * @param args
     */
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Shrewmouse frame = new Shrewmouse();
                    frame.setVisible(true);
                    new Thread(frame).start();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame
     */
    public Shrewmouse() {
        super();
        setResizable(false); // 禁止调整窗体大小
        getContentPane().setLayout(null); // 窗体不使用布局管理器
        setTitle("简易打地鼠游戏"); // 设置窗体标题
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 初始化背景图片对象
        ImageIcon img = new ImageIcon(getClass().getResource("background.jpg"));
        // 初始化地鼠图片对象
        imgMouse = new ImageIcon(getClass().getResource("mouse.png"));
        mouses = new JLabel[6]; // 创建显示地鼠的标签数组
        for (int i = 0; i < 6; i++) { // 遍历数组
            mouses[i] = new JLabel(); // 初始化每一个数组元素
            // 设置标签与地鼠图片相同大小
            mouses[i].setSize(imgMouse.getIconWidth(), imgMouse.getIconHeight());
            mouses[i].addMouseListener(new MouseAdapter() { // 为标签添加鼠标事件监听适配器
                        /**
                         * 处理鼠标单击事件的方法
                         */
                        @Override
                        public void mouseClicked(MouseEvent e) {
                            Object source = e.getSource(); // 获取事件源,即地鼠标签
                            if (source instanceof JLabel) { // 如果事件源是标签组件
                                JLabel mouse = (JLabel) source; // 强制转换为JLabel标签
                                mouse.setIcon(null); // 取消标签图标
                            }
                        }
                    });
            getContentPane().add(mouses[i]); // 添加显示地鼠的标签到窗体
        }

        mouses[0].setLocation(253, 300); // 设置每个标签的位置
        mouses[1].setLocation(333, 250);
        mouses[2].setLocation(388, 296);
        mouses[3].setLocation(362, 364);
        mouses[4].setLocation(189, 353);
        mouses[5].setLocation(240, 409);

        final JLabel backLabel = new JLabel(); // 创建显示背景的标签
        // 设置标签与背景图片相同大小
        backLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
        // 设置窗体近似背景图片大小
        setBounds(100, 100, img.getIconWidth(), img.getIconHeight() + 30);
        backLabel.setIcon(img); // 添加背景到标签
        getContentPane().add(backLabel); // 添加背景标签到窗体
    }

    /**
     * 线程的核心方法
     */
    public void run() {
        while (true) { // 使用无限循环
            try {
                Thread.sleep(1000); // 使线程休眠1秒
                int index = (int) (Math.random() * 6); // 生成随机的地鼠索引
                if (mouses[index].getIcon() == null) // 如果地鼠标签没有设置图片
                    mouses[index].setIcon(imgMouse); // 为该标签添加地鼠图片
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值