GUI的简单应用,打地鼠游戏

首先是GUI的知识清单:

 

 

源代码:

package jd1908_corejava.ch14.work;

//打地鼠小游戏
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;

public class HitMouse extends JFrame implements ActionListener {
    // 容器模块
    private JPanel north, center;
    //
    private JLabel timeLabel, timeValueLabel, centLabel, centValueLabel;
    // 下拉菜单
    private JComboBox<String> box;
    private JButton startButton;

    private JButton[] buttons;
    // 图片
    private ImageIcon icon;
    // 等级
    private int level;
    // 是否可以加分的状态
    private boolean flag;

    private int old_index;
    // 游戏计时器
    private Timer timer;
    // 老鼠跳动计数器
    private Timer mouseTimer;

    public HitMouse() {
        this.setTitle("打地鼠");
        // this.setBounds(200, 200, 1000, 1300);
        this.setSize(500, 600);
        this.setLocation((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() - this.getWidth()) / 2,
                (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - this.getHeight()) / 2);

        ;
        this.init();

        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    private void init() {
        north = new JPanel();
        center = new JPanel();
        timeLabel = new JLabel("time");
        timeValueLabel = new JLabel("10");
        centLabel = new JLabel("cent");
        centValueLabel = new JLabel("0");
        startButton = new JButton("开始");
        buttons = new JButton[9];
        box = new JComboBox<String>();
        box.addItem("初级");
        box.addItem("中级");
        box.addItem("高级");
        icon = new ImageIcon("a.png");
        // 默认布局
        north.setLayout(new FlowLayout());
        north.add(timeLabel);
        north.add(timeValueLabel);
        north.add(box);
        north.add(centLabel);
        north.add(centValueLabel);
        north.add(startButton);

        center.setLayout(new GridLayout(3, 3));
        for (int i = 0; i < buttons.length; i++) {
            buttons[i] = new JButton();
            // 锁定格子
            buttons[i].setEnabled(false);
            center.add(buttons[i]);
        }

        this.add(north, BorderLayout.NORTH);
        this.add(center, BorderLayout.CENTER);

        
        
        
        
        
        startButton.addActionListener(this);
        box.addActionListener(this);
        //!!!
        for (int i = 0; i < buttons.length; i++) {
            buttons[i].addActionListener(this);
        }
        timer = new Timer(1000, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String text = timeValueLabel.getText();
                int time = Integer.parseInt(text);
                timeValueLabel.setText(--time + "");
                if (time == 0) {
                    startButton.setEnabled(true);
                    buttons[old_index].setIcon(null);
                    box.setEnabled(true);
                    timer.stop();
                    mouseTimer.stop();
                    setAllButtonsEnable(false);
                }

            }
        });
        level = 2000;
        mouseTimer = new Timer(level, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                buttons[old_index].setIcon(null);
                int index = (int) (Math.random() * 9);
                // 随机让九宫格出现老鼠
                buttons[index].setIcon(icon);
                old_index = index;
                flag = true;
                setAllButtonsEnable(true);

            }
        });
    }

    protected void setAllButtonsEnable(boolean b) {
        for (int i = 0; i < buttons.length; i++) {
            buttons[i].setEnabled(b);
        }

    }

    public static void main(String[] args) {
        new HitMouse();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source.equals(startButton)) {
            timer.start();
            mouseTimer.start();
            timeValueLabel.setText("10");
            centValueLabel.setText("0");
            // 锁定等级和开始
            startButton.setEnabled(false);
            box.setEnabled(false);
        } else if (source.equals(box)) {
            int index = box.getSelectedIndex();
            if (index == 1) {
                level = 500;
            } else if (index == 2) {
                level = 200;
            } else {
                level = 2000;
            }
            mouseTimer.setDelay(level);
        } else {
            JButton btn = (JButton) source;
            if (btn.getIcon() != null && flag) {
                String str = centValueLabel.getText();
                int cent = Integer.parseInt(str);
                centValueLabel.setText(++cent + "");
                flag = false;
            }
        }
    }
}

 

转载于:https://www.cnblogs.com/fyscn/p/11354087.html

关于使用Java语言编写打地鼠游戏 打地鼠游戏是一款非常受欢迎的敏捷类游戏,它的基本规则简单易懂,同时又充满了挑战性和趣味性。在游戏中,玩家通常需要在一个方形区域内,面对多个地洞,这些地洞中会不定时地冒出地鼠。玩家的主要任务就是在地鼠冒出头来的短时间内,用工具(如锤子)迅速而准确地击打它们。成功打中地鼠,玩家就能获得相应的分数。玩者可以自己设置游戏的难度,地鼠的出现频率和速度都会加快,这就要求玩家不仅要有快速的反应能力,还需要有良好的手眼协调能力和预判能力。 阅读详情

相关推荐

Java打地鼠游戏实战教程源码

事件驱动模型是游戏开发中实现用户交互、游戏状态更新和渲染的关键。游戏循环是游戏运行的核心,它不断循环,检测事件,并在事件发生时触发相应的处理逻辑。在Java中,事件驱动模型常与AWT(Abstract Window Toolkit)或Swing库结合使用。Swing库中的JFrame、JButton等组件都是事件源,可以触发事件,如点击、按键等。这些事件可以被添加的监听器捕获并响应。// 示例代码:创建一个简单的窗口并添加一个按钮,当按钮被点击时触发事件// 创建JFrame窗口实例。

weixin_29443363的博客 1057

打地鼠.rar_java 打地鼠_打地鼠_打地鼠 java_打地鼠java_打地鼠游戏

java语言编写的写游戏打地鼠

基于Qt框架的打地鼠游戏项目实战

标准的太单调了。我们要创造一个专属的“地鼠洞”类,让它能自己管理状态:Q_OBJECTpublic:signals:private:// 控制停留时间状态转换由内部定时器驱动:完整实现如下:break;break;是不是很酷?每个洞都变成了一个微型状态机,自主控制自己的生命周期。回顾整个开发过程,我们不仅仅是在做一个小游戏,更是在实践一套完整的软件工程方法论:模块化设计:每个类都有明确职责。

weixin_42588555的博客 887

JAVA实验报告18-“打地鼠游戏程序设计.pdf

JAVA实验报告18-“打地鼠游戏程序设计.pdf

Java 编写打地鼠游戏 窗体程序 完整源码

Java 编写打地鼠游戏 窗体程序 完整源码游戏,可以直接用来做课程设计或者毕业设计;代码功能完善,下载后可以直接运行!!

bangxiecode的博客 3951

java打地鼠_Java 实现打地鼠游戏

博主是大三的在校大学生,学习计算机的路上,有些自己的感悟,写下来互相讨论下,欢迎吐槽Java使用awt做的图形界面,使用多线程维护两个过程,一个是随机出现老鼠的事件,一个是判断规定时间内消失老鼠import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Cursor;imp...

weixin_39692271的博客 998

简单打地鼠游戏(java)_GUI简单应用打地鼠游戏

packagejd1908_corejava.ch14.work;//打地鼠游戏importjava.awt.BorderLayout;importjava.awt.FlowLayout;importjava.awt.GridLayout;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.Ac...

weixin_32404293的博客 272

Java实现的打地鼠游戏

import java.awt.Cursor;       import java.awt.Image;       import java.awt.Point;       import java.awt.Toolkit;       import java.awt.event.ActionEvent;       import java.awt.event.ActionListener;  

weixin_36541969的博客 1650

【附源码】用Python复刻重童年的20款小游戏,你玩过几个?

Python为什么能这么火热?Python相对于其他语言来说比较简单,即使是零基础的普通人也能很快的掌握,在其他方面比如,处于灰色界的爬虫,要VIP的视频,小说,歌,没有爬虫解决不了的

m0_75067840的博客 1139

用PYTHON做一个简单游戏脚本(基础,详细)

引言     这段时间迷上了玩点点点的小游戏,但是某些重复的环节着实无聊,就想着能不能用PYTHON做一个游戏脚本,不过为了熟悉需要做脚本的各个模块,于是打算在4399上找一个比较像的游戏做个脚本练练手,后来发现打地鼠这个游戏不就很适合练手吗~     这篇文章就以4399的一款叫做(玩命打地鼠)的游戏作为案例,实现自动打地鼠的功能~ 系统结构     使用的核心模块有:pymouse(模

weixin_44425213的博客 1万+

JAVA课程设计 打地鼠

JVA打地鼠游戏 该软件主要目的是娱乐。进入游戏,根据时间的变化系统随机在游戏界面出现一只地鼠图片,玩家只需要在图片消失之前用鼠标左键点击就能够得分,之后出现另外一张,继续游戏。如果想退出游戏,可以单击单击界面右上方的退出按钮。通过游戏,达到娱乐和锻炼反应的效果。

GUI设计打地鼠

1.通过GUI设计,实现了打地鼠功能。 2.该程序分为三个等级: 初级、中级、高级 3.三个等级对应的延时时间依次减少,当点中老鼠后,按对应延时重新计时并加分,以此实现规定时间内点中次数越多得分越高。

MATLAB游戏-打地鼠.rar

MATLAB游戏-打地鼠.rar 自己编的一个小游戏,但不够完善,希望高手帮解决下,怎么去掉地鼠的背景

java GUI游戏 包括愤怒的小鸟、打飞机、聊天室、拼图、俄罗斯方块等

java GUI游戏 包括愤怒的小鸟、打飞机、聊天室、拼图、俄罗斯方块等。java GUI游戏 包括愤怒的小鸟、打飞机、聊天室、拼图、俄罗斯方块等。

一个简单的带有 gui 的扑克游戏_java_代码_下载

一个简单的带有 gui 的扑克游戏

MATLAB打地鼠游戏开发与优化实战

MATLAB(Matrix Laboratory的缩写)作为一款高性能的数值计算和可视化软件,在教学、科研和工程计算领域得到了广泛应用。随着其不断更新和发展,MATLAB逐渐集成了强大的图形用户界面(GUI)设计功能和图像处理工具箱,这使得它成为开发小游戏的一个有趣而有效的平台。本章将概述MATLAB游戏开发的概念、优势以及其在教育和技术领域中的应用潜力。MATLAB游戏开发不仅仅是为了娱乐,它还可以作为一种学习工具来辅助教学和促进学习者对数学和计算机科学概念的理解。

weixin_28787801的博客 706

JAVA实训项目实战——经典打地鼠游戏开发

地鼠作为游戏中最主要的交互目标,其状态变化直接决定了玩家的操作反馈。为了精确模拟地鼠“随机冒出—停留—收回”的行为模式,Mole类必须包含足够的状态字段以描述其当前所处阶段。以下是该类的关键属性设计:属性名类型说明xyint地鼠在面板上的坐标位置,用于定位图像绘制visibleboolean表示地鼠是否可见(即已冒出)activeboolean是否处于激活状态,防止重复点击计分long地鼠出现的时间戳,用于控制停留时长durationint。

weixin_42309599的博客 926

一个由java实现的打地鼠游戏

注释很明了,直接就上代码的哈! 打地鼠游戏“` package test;import java.awt.EventQueue; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;import javax.swing.ImageIcon; import javax.swing.JFrame; impor

阿骏的专栏 2万+
上一篇: java 的异常处理机制,执行顺序;return在异常中的使用 ;自定义异常类的简单应用...
下一篇: java线程—经典龟兔赛跑问题
YZChen2014
博客等级 码龄12年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值