【Java经典游戏】-01-是男人就坚持30秒
hello!各位彦祖们!我们又见面了!!
今天兄弟我给大家带来了一款经典趣味小游戏的项目案例-是男人就坚持30秒
本项目案例涉及到的技术:
- Java 语法基础
- Java 面向对象
- JavaSwing 编程
- Java 线程
是一个非常适合小白来加强以及巩固学习,提升编程思想,以及逻辑思维的项目案例!
给个关注呗!且看且珍惜!(我感觉我飘了)
废话不多说,我们先上图!!
首先看看启动页面:

各位彦祖的身材一定就是这么完美,有空发个图过来我欣赏一下!!O(∩_∩)O哈哈~
接下来我们来看看游戏页面(声明:无不良引导,只是皮一下)
从下图来看,应该看出了我的不容易和艰辛了吧!!这不奖励我一个关注和赞?马赛克加涂鸦,这回应该能过审了吧!!
┭┮﹏┭┮ 福利没有了~~~

接下来就开始挑战了,怕过不了审,图片设置的比较小,也比较保守,彦祖们获取到源码之后,可以敞开来玩

接下来就需要各位万花丛中过,片叶不沾身了!!兄弟们要坐怀不乱,坚持到 30 秒

如果你能坚持 30 秒不碰任何美女,你就可以过关,进入到下一关,下一关美女会变的更多,移动速度会更快

但是假设你没忍住,碰到了美女,那么游戏就会结束,会受到美女无情的嘲讽

好了!我们进入正题吧,接下来我们来看看代码,这款游戏首先我们需要的是创建游戏窗体,代码如下:
package ui;import javax.swing.JFrame;public class GameFrame extends JFrame{public GameFrame() {setTitle("是男人就坚持30秒");setSize(App.FRAME_WIDTH,App.FRAME_HEIGHT);setLocationRelativeTo(null);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {WelcomeFrame frame = new WelcomeFrame();WelcomePanel panel = new WelcomePanel(frame);panel.action();// GameFrame frame = new GameFrame();// GamePanel panel = new GamePanel();// panel.action();frame.add(panel);frame.setVisible(true);}}
然后就是创建面板代码:
package ui;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;import javax.naming.ldap.StartTlsRequest;
import javax.swing.JPanel;public class GamePanel extends JPanel{List<Circle> cs = new ArrayList<Circle>();int level = 1;Rect rect = new Rect();Random rd = new Random();Timer levelTimer ;Timer timer ;boolean gameover = false;boolean levelShow = true;boolean gameStart = false;int second = 0;int sleep = App.START_SLEEP_TIME;int daoTime = App.DAO_TIME;boolean showDao = false;int circleNum = App.START_CIRCLE_NUM;BufferedImage bg;BufferedImage showImg;BufferedImage overImg;public GamePanel() {showImg = ImageUtil.getImg("/img/vectory.jpg");overImg = ImageUtil.getImg("/img/loser.jpg");bg = ImageUtil.getImg("/img/bg.jpg");setBackground(Color.BLACK);startTimer();for(int i=0;i<circleNum;i++){Circle c = new Circle();cs.add(c);}}public void startTimer(){levelTimer = new Timer();timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {if(gameStart){second++;if(second%30==0&&second!=0){goNextLevel();}}repaint();}}, 0,1000);levelTimer.schedule(new TimerTask() {@Overridepublic void run() {levelShow = false;showDao = true;levelTimer.cancel();repaint();Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {daoTime --;if(daoTime==0){timer.cancel();showDao = false;gameStart = true;repaint();}}}, 0,1000);}}, 2000);}protected void goNextLevel() {cs.clear();rect = new Rect();levelShow = true;gameStart = false;level ++;timer.cancel();levelTimer.cancel();addCicle();sleep -= 10;daoTime = App.DAO_TIME;startTimer();}protected void addCicle() {circleNum += cs.size()+5;for(int i=0;i<circleNum;i++){Circle c = new Circle();cs.add(c);}}@Overridepublic void paint(Graphics g) {super.paint(g);//g.drawImage(bg, 0, 0,App.FRAME_WIDTH,App.FRAME_HEIGHT, null);if(showDao||gameStart){for(int i=0;i<cs.size();i++){Circle c = cs.get(i);//g.setColor(new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255)));g.setColor(c.color);//g.fillOval(c.x, c.y, c.w, c.h);g.drawImage(c.img, c.x, c.y,c.w,c.h, null);}g.drawImage(rect.img, rect.x, rect.y,rect.w, rect.h,null);g.setColor(Color.green);g.setFont(new Font("楷体",Font.BOLD,30));g.drawString("骚年你已经坚持"+second+"秒", 10, 30);}if(levelShow){g.setColor(new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255)));g.setFont(new Font("楷体",Font.BOLD,50));g.drawString("第"+(level)+"关", 480, 200);g.setColor(Color.yellow);g.drawString("准备好哦", 480, 300);g.drawString("美女们速度会越来越快", 480, 400);g.drawImage(showImg, 0, 0,450,768, null);}if(gameover){g.drawImage(overImg, 0, 0, 450, 768,null);g.setColor(Color.red);g.setFont(new Font("楷体",Font.BOLD,50));g.drawString("游戏结束了", 480, 200);g.drawString("你坚持了"+second+"秒", 480, 300);g.setFont(new Font("楷体",Font.BOLD,30));if(second<60){g.drawString("你还是个弟弟哇~~多锻炼身体", 480, 400);}else{g.drawString("小哥哥你真棒", 480, 400);}}if(showDao){//g.drawImage(showImg, 0, 0,450,768, null);g.setColor(Color.yellow);g.setFont(new Font("楷体",Font.BOLD,50));g.drawString("请准备:"+daoTime+"", 400, 250);}}public void action(){MouseAdapter adapter = new MouseAdapter(){@Overridepublic void mouseMoved(MouseEvent e) {int mx = e.getX();int my = e.getY();if(gameStart&&!gameover){rect.move(mx,my);}repaint();}};addMouseMotionListener(adapter);addMouseListener(adapter);new Thread(){public void run(){while(true){if(gameStart&&!gameover){circleMove();checkBouns();}try {Thread.sleep(sleep);repaint();} catch (InterruptedException e) {e.printStackTrace();} }}}.start();}/*** */protected void checkBouns() {for(int i=0;i<cs.size();i++){Circle c = cs.get(i);if(rect.hitBy(c)){gameover = true;gameStart = false;cs.clear();levelTimer.cancel();timer.cancel();}}}protected void circleMove() {for (int i = 0; i < cs.size(); i++) {Circle c = cs.get(i);c.move();}}}
完整源码下载地址:
https://download.csdn.net/download/yueyehuguang/89770991?spm=1001.2014.3001.5503
什么?没有下载积分?那也简单!
先关注我,然后后台私信我!我给你发,这样总行吧!!
O(∩_∩)O哈哈~,就酱!我们下期见
相关文章:
【Java经典游戏】-01-是男人就坚持30秒
hello!各位彦祖们!我们又见面了!! 今天兄弟我给大家带来了一款经典趣味小游戏的项目案例-是男人就坚持30秒 本项目案例涉及到的技术: Java 语法基础Java 面向对象JavaSwing 编程Java 线程 是一个非常适合小白来加强…...
微调框QSpinBox
作用:允许用户按照一定的步长,来增加或减少其中显示的数值 有两种类型的微调框 QSpinBox - 用于整数的显示和输入QDoubleSpinBox - 用于浮点数的显示和输入 值 包括最大值、最小值、当前值 // 获取和设置当前值 int value() const void setValue(in…...
在线查看 Android 系统源代码 AOSPXRef and AndroidXRef
在线查看 Android 系统源代码 AOSPXRef and AndroidXRef 1. AOSPXRef1.1. http://aospxref.com/android-14.0.0_r2/1.2. build/envsetup.sh 2. AndroidXRef2.1. http://androidxref.com/9.0.0_r3/2.2. build/envsetup.sh 3. HELLO AndroidReferences 1. AOSPXRef http://aospx…...
JavaScript substr() 方法
定义和用法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 <script type"text/javascript">var str"Hello world!" document.write(str.substr(3))</script>lo world!<script type"text/javascript">v…...
教你把图片转换为炫酷的翻页电子杂志
翻页电子杂志以其炫酷的视觉效果和便捷的阅读方式,受到了许多用户的喜爱。想要把普通的图片转换成这样的效果,其实并不复杂。下面,就让我来为您介绍一下如何操作。 首先,您需要准备一些基本的工具和材料。您需要一个图像编辑软件…...
生信软件35 - AI代码编辑器Cursor
1. Cursor - AI代码编辑器 Cursor的核心功能是利用生成式AI,帮助程序员通过自然语言描述快速生成代码。让程序员未来需要关注的是“做什么”(What)而不是“怎么做”(How),即在使用AI生成代码的基础上&…...
Vue Router 编程式导航全攻略:深入掌握 push, replace, go, back, forward,beforeEach 方法
Vue Router 编程式导航全攻略:深入掌握 push, replace, go, back, forward,beforeEach 方法 在Vue Router中,编程式导航是一种通过JavaScript代码来实现路由跳转的方法。与声明式导航(使用<router-link>标签)相比ÿ…...
切换淘宝最新镜像源:优化NPM包管理的极致体验
在NPM生态系统中,快速、安全地获取所需的包是每个前端工程师追求的目标。然而,由于不同地区的网络环境,直接通过官方NPM仓库获取包可能会导致下载速度缓慢、超时等问题。针对这些情况,淘宝团队提供了优秀的NPM镜像源,并且定期更新。本文将详尽介绍如何切换淘宝最新镜像源,…...
react 基础语法
前置知识 类的回顾 通过class关键字定义一个类 类名首字母大写 class类有constructor构造器 new 一个类得到一个实例 类还有方法,该方法也会在其原型上 static静态数据,访问静态属性通过 类名.id getter和setter getter:定义一个属性&…...
k8s的NodeIP、PodIP、ClusterIP、ExternalIP
1.NodeIP K8s集群由Master Node与Worker Node组成。 Node:组成k8s集群的机器,可以是物理机或虚拟机。 Master Node :管理节点也叫控制平面主要负责管理控制方面。 Worker Node::工作节点用于部署处理业务的工作负载或p…...
【vue element-ui】关于删除按钮的提示框,可一键复制
实现效果: Delete: function (id) {this.$confirm(此操作将永久删除该文件, 是否继续?, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,type: warning,center: true,}).then(() > {Delete(id).then(() > {this.$message({type: success,message: 删…...
内部工具使用
1. displaytool 开发的渲染工具,如将车端建图结果显示在渲染窗口中,便于查bug 2. localization / csmap 开发的定位工具 和 车端建图工具 3. bolepack 第三方,处理感知数据的工具 运行流程:1-> 2 -> 3 bol…...
Spring Boot-静态资源管理问题
在Spring Boot中,静态资源管理是构建现代Web应用程序时必不可少的一部分。无论是处理静态页面、图片、CSS、JavaScript文件,还是一些自定义文件,正确管理这些资源能够提升用户体验和优化应用的性能。 1. Spring Boot中的静态资源管理概述 S…...
白酒与商务宴请:如何成为餐桌上的受宠者之一?
在商务宴请的场合中,白酒往往是餐桌上不可或缺的佳酿。一瓶好的白酒,不仅能够彰显主人的品味,还能为宾客带来愉悦的享受。那么,在商务宴请中,如何选择一瓶合适的白酒,让自己成为餐桌上的受宠者之一呢&#…...
【C语言零基础入门篇 - 9】:文件操作
文章目录 文件操作文件的简介指向指针的文件文件的打开方式字符的读取和存储数据的读取和存储 文件操作 文件的简介 一、什么是文件? 文件有不同的类型,主要有两种文件: (1)程序文件。(2)数据…...
链式二叉树的基本操作(C语言版)
目录 1.二叉树的定义 2.创建二叉树 3.递归遍历二叉树 1)前序遍历 2)中序遍历 3)后序遍历 4.层序遍历 5.计算节点个数 6.计算叶子节点个数 7.计算第K层节点个数 8.计算树的最大深度 9.查找值为x的节点 10.二叉树的销毁 从二叉树…...
Tcp三次握手四次挥手和SSL/TLS
1.Tcp三次握手四次挥手: 1.1基本概念: TCP(三次握手和四次挥手)是用于建立和终止可靠传输连接的过程。TCP协议是一种面向连接的传输层协议,确保数据在网络上可靠、有序地传输。下面详细解释三次握手和四次挥手的工作机…...
大棚分割数据集,40765对影像,16.9g数据量,0.8米高分二,纯手工标注(arcgis标注)的大规模农业大棚分割数据集。
数据集名称: )“Greenhouse Segmentation Dataset (GSD)” 数据集规模: 包含40,765对用于大棚分割的影像数据,每对影像包括一张原始图像和相应的分割标签图。 数据量: 总数据量约为16.9GB,适合存储在现…...
Jenkins插件安装失败时这么做就搞定啦!
1.网络或墙的问题导致插件下载安装失败 这种错误提示很明显,就是无法连接到插件下载地址,导致插件下载失败。 解决方法 为Jenkins更换源 点击Jenkins主页面左侧列表中【系统管理】—— 下拉找到【管理插件】 选择【高级】选项卡 替换最下方【升级站点…...
优化器与现有网络模型的修改
文章目录 一、优化器是什么二、优化器的使用三、分类模型VGG16四、现有网络模型的修改 一、优化器是什么 优化器(Optimizer)是一个算法,用于在训练过程中调整模型的参数,以便最小化损失函数(Loss Function)…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
