【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)…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
