【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)…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...