当前位置: 首页 > news >正文

【Java经典游戏】-01-是男人就坚持30秒

hello!各位彦祖们!我们又见面了!!

今天兄弟我给大家带来了一款经典趣味小游戏的项目案例-是男人就坚持30秒

本项目案例涉及到的技术:

  1. Java 语法基础
  2. Java 面向对象
  3. JavaSwing 编程
  4. 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&#xff01;各位彦祖们&#xff01;我们又见面了&#xff01;&#xff01; 今天兄弟我给大家带来了一款经典趣味小游戏的项目案例-是男人就坚持30秒 本项目案例涉及到的技术&#xff1a; Java 语法基础Java 面向对象JavaSwing 编程Java 线程 是一个非常适合小白来加强…...

微调框QSpinBox

作用&#xff1a;允许用户按照一定的步长&#xff0c;来增加或减少其中显示的数值 有两种类型的微调框 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…...

教你把图片转换为炫酷的翻页电子杂志

​翻页电子杂志以其炫酷的视觉效果和便捷的阅读方式&#xff0c;受到了许多用户的喜爱。想要把普通的图片转换成这样的效果&#xff0c;其实并不复杂。下面&#xff0c;就让我来为您介绍一下如何操作。 首先&#xff0c;您需要准备一些基本的工具和材料。您需要一个图像编辑软件…...

生信软件35 - AI代码编辑器Cursor

1. Cursor - AI代码编辑器 Cursor的核心功能是利用生成式AI&#xff0c;帮助程序员通过自然语言描述快速生成代码。让程序员未来需要关注的是“做什么”&#xff08;What&#xff09;而不是“怎么做”&#xff08;How&#xff09;&#xff0c;即在使用AI生成代码的基础上&…...

Vue Router 编程式导航全攻略:深入掌握 push, replace, go, back, forward,beforeEach 方法

Vue Router 编程式导航全攻略&#xff1a;深入掌握 push, replace, go, back, forward,beforeEach 方法 在Vue Router中&#xff0c;编程式导航是一种通过JavaScript代码来实现路由跳转的方法。与声明式导航&#xff08;使用<router-link>标签&#xff09;相比&#xff…...

切换淘宝最新镜像源:优化NPM包管理的极致体验

在NPM生态系统中,快速、安全地获取所需的包是每个前端工程师追求的目标。然而,由于不同地区的网络环境,直接通过官方NPM仓库获取包可能会导致下载速度缓慢、超时等问题。针对这些情况,淘宝团队提供了优秀的NPM镜像源,并且定期更新。本文将详尽介绍如何切换淘宝最新镜像源,…...

react 基础语法

前置知识 类的回顾 通过class关键字定义一个类 类名首字母大写 class类有constructor构造器 new 一个类得到一个实例 类还有方法&#xff0c;该方法也会在其原型上 static静态数据&#xff0c;访问静态属性通过 类名.id getter和setter getter&#xff1a;定义一个属性&…...

k8s的NodeIP、PodIP、ClusterIP、ExternalIP

1.NodeIP K8s集群由Master Node与Worker Node组成。 Node&#xff1a;组成k8s集群的机器&#xff0c;可以是物理机或虚拟机。 Master Node &#xff1a;管理节点也叫控制平面主要负责管理控制方面。 Worker Node&#xff1a;&#xff1a;工作节点用于部署处理业务的工作负载或p…...

【vue element-ui】关于删除按钮的提示框,可一键复制

实现效果&#xff1a; Delete: function (id) {this.$confirm(此操作将永久删除该文件, 是否继续?, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,type: warning,center: true,}).then(() > {Delete(id).then(() > {this.$message({type: success,message: 删…...

内部工具使用

1. displaytool 开发的渲染工具&#xff0c;如将车端建图结果显示在渲染窗口中&#xff0c;便于查bug 2. localization / csmap 开发的定位工具 和 车端建图工具 3. bolepack 第三方&#xff0c;处理感知数据的工具 运行流程&#xff1a;1-> 2 -> 3 bol…...

Spring Boot-静态资源管理问题

在Spring Boot中&#xff0c;静态资源管理是构建现代Web应用程序时必不可少的一部分。无论是处理静态页面、图片、CSS、JavaScript文件&#xff0c;还是一些自定义文件&#xff0c;正确管理这些资源能够提升用户体验和优化应用的性能。 1. Spring Boot中的静态资源管理概述 S…...

白酒与商务宴请:如何成为餐桌上的受宠者之一?

在商务宴请的场合中&#xff0c;白酒往往是餐桌上不可或缺的佳酿。一瓶好的白酒&#xff0c;不仅能够彰显主人的品味&#xff0c;还能为宾客带来愉悦的享受。那么&#xff0c;在商务宴请中&#xff0c;如何选择一瓶合适的白酒&#xff0c;让自己成为餐桌上的受宠者之一呢&#…...

【C语言零基础入门篇 - 9】:文件操作

文章目录 文件操作文件的简介指向指针的文件文件的打开方式字符的读取和存储数据的读取和存储 文件操作 文件的简介 一、什么是文件&#xff1f; 文件有不同的类型&#xff0c;主要有两种文件&#xff1a; &#xff08;1&#xff09;程序文件。&#xff08;2&#xff09;数据…...

链式二叉树的基本操作(C语言版)

目录 1.二叉树的定义 2.创建二叉树 3.递归遍历二叉树 1&#xff09;前序遍历 2&#xff09;中序遍历 3&#xff09;后序遍历 4.层序遍历 5.计算节点个数 6.计算叶子节点个数 7.计算第K层节点个数 8.计算树的最大深度 9.查找值为x的节点 10.二叉树的销毁 从二叉树…...

Tcp三次握手四次挥手和SSL/TLS

1.Tcp三次握手四次挥手&#xff1a; 1.1基本概念&#xff1a; TCP&#xff08;三次握手和四次挥手&#xff09;是用于建立和终止可靠传输连接的过程。TCP协议是一种面向连接的传输层协议&#xff0c;确保数据在网络上可靠、有序地传输。下面详细解释三次握手和四次挥手的工作机…...

大棚分割数据集,40765对影像,16.9g数据量,0.8米高分二,纯手工标注(arcgis标注)的大规模农业大棚分割数据集。

数据集名称&#xff1a; &#xff09;“Greenhouse Segmentation Dataset (GSD)” 数据集规模&#xff1a; 包含40,765对用于大棚分割的影像数据&#xff0c;每对影像包括一张原始图像和相应的分割标签图。 数据量&#xff1a; 总数据量约为16.9GB&#xff0c;适合存储在现…...

Jenkins插件安装失败时这么做就搞定啦!

1.网络或墙的问题导致插件下载安装失败 这种错误提示很明显&#xff0c;就是无法连接到插件下载地址&#xff0c;导致插件下载失败。 解决方法 为Jenkins更换源 点击Jenkins主页面左侧列表中【系统管理】—— 下拉找到【管理插件】 选择【高级】选项卡 替换最下方【升级站点…...

优化器与现有网络模型的修改

文章目录 一、优化器是什么二、优化器的使用三、分类模型VGG16四、现有网络模型的修改 一、优化器是什么 优化器&#xff08;Optimizer&#xff09;是一个算法&#xff0c;用于在训练过程中调整模型的参数&#xff0c;以便最小化损失函数&#xff08;Loss Function&#xff09…...

kafka 超详细的消息订阅与消息消费几种方式

kafka 消息订阅与消息消费几种方式 本文主要内容 消费者订阅几种方式 订阅多个主题 按正则表达式订阅 消息消费几种方式 按分区消费 按主题消费 不区分 “ 笔者建议一开始学习Kafka最好不要用SpringBoot 集成方式,因为SpringBoot推崇用注解方式&#xff0c;比如KafkaList…...

C++ 第三讲:内存管理

C 第三讲&#xff1a;内存管理 1.C内存分布2.内存管理方式2.1C语言内存管理方式2.2C内存管理方式2.2.1new\delete操作内置类型2.2.2new\delete操作自定义类型 3.operator new与operator delete函数4.new和delete实现原理4.1内置类型4.2自定义类型 5.定位new5.1内存池的基本了解…...

LeeCode打卡第二十九天

LeeCode打卡第二十九天 第一题&#xff1a;岛屿数量&#xff08;LeeCode第200题&#xff09;: 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。岛屿总是被水包围&#xff0c;并且每座岛屿只…...

阿里云专业翻译api对接

最近我们一个商城项目涉及多语言切换&#xff0c;默认中文。用户切换语言可选英语和阿拉伯语言&#xff0c;前端APP和后端返回动态数据都要根据用户选择语言来展示。前端静态内容都做了三套语言&#xff0c;后端商品为了适用这种多语言我们也进行了改造。每一件商品名称&#x…...

基于Spring Boot的能源管理系统+建筑能耗+建筑能耗监测系统+节能监测系统+能耗监测+建筑能耗监测

介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统。 系统实现了对建筑电、水、热&#xff0c;气等能源、资源消耗情况的实时监测和预警、动态分析和评估&#xff0c;为用户建立了科学、系统的节能分析方法&#xff0c…...

大数据新视界 --大数据大厂之 Cassandra 分布式数据库:高可用数据存储的新选择

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

ROS第五梯:ROS+VSCode+C++单步调试

解决问题&#xff1a;在ROS项目中进行断点调试。 第一步&#xff1a;创建一个ROS项目或者打开一个现有的ROS项目。 第二步&#xff1a;修改c_cpp_properties.json 增加一段命令: "compileCommands": "${workspaceFolder}/build/compile_commands.json"第三…...

SLA 概念和计算方法

SLA 概念和计算方法 SLA SLA&#xff1a;服务等级协议&#xff08;简称&#xff1a;SLA&#xff0c;全称&#xff1a;service level agreement&#xff09; 网站服务可用性的一个保证 9越多代表全年服务可用时间越长服务更可靠&#xff0c;停机时间越短&#xff0c;反之亦然…...

C++比大小游戏

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> #include <Windows.h> using namespace std; int main() {int ir 1;char chparr[2] { 0 };int ip1 0;int ip2 0;int i 1;c…...

PCIe进阶之TL:Memory, I/O, and Configuration Request Rules TPH Rules

1 Memory, I/O, and Configuration Request Rules 下述规则适用于 Memory 请求、IO 请求和配置请求。 除了公共的 header 字段外,所有 Memory 请求、IO 请求和配置请求还包括以下字段: (1)Requester ID[15:0] 和 Tag[9:0],组成了 Transaction ID 。 (2)Last DW BE[3:0]…...