【经典项目】Java小游戏 —— 弹力球

news2024/9/28 5:24:22

一、功能需求

设计一个Java弹球小游戏的思路如下:

  1. 创建游戏窗口:使用Java图形库(如Swing或JavaFX)创建一个窗口,作为游戏的可视化界面。

  2. 绘制游戏界面:在游戏窗口中绘制游戏所需的各个元素,包括弹球、挡板、得分等。

  3. 弹球移动:使用一个线程或定时器来控制弹球的移动。在每个时间间隔内,更新弹球的位置,并检测碰撞情况。

二、分析实现

主要是对弹力球远动轨迹的计算,同时控制边界的界定,碰到边框,就需要控制弹力球进行反弹。

【主要代码】

	@Override
	public void run() {

		while (true) {
			for (int i = 0; i < 10; i++) {
				switch (tag[i]) { // 0↘ 1↙ 2↖ 3↗
				case 0:
					xx[i]+=speed[i];
					yy[i]+=speed[i];
					if (xx[i] >= 750 && yy[i] <= 550) {
						tag[i] = 1;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					if (xx[i] < 750 && yy[i] >= 550) {
						tag[i] = 3;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					break;
				case 1:
					xx[i]-=speed[i];
					yy[i]+=speed[i];
					if (xx[i] <= 0 && yy[i] <= 550) {
						tag[i] = 0;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					if (xx[i] < 750 && yy[i] >= 550) {
						tag[i] = 2;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					break;
				case 2:
					xx[i]-=speed[i];
					yy[i]-=speed[i];
					if (xx[i] <= 0 && yy[i] <= 550) {
						tag[i] = 3;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					if (xx[i] <= 750 && yy[i] <= 0) {
						tag[i] = 1;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					break;
				case 3:
					xx[i]+=speed[i];
					yy[i]-=speed[i];
					if (xx[i] >= 750 && yy[i] <= 550) {
						tag[i] = 2;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					if (xx[i] <= 750 && yy[i] <= 0) {
						tag[i] = 0;
						changeRGB(i);
						speed[i] = (int) (Math.random() * 8)+1;
					}
					break;
				}

				repaint();
			}
			try {
				Thread.sleep(5);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	private static void changeRGB(int i) {
		R[i] = (int) (Math.random() * 200) + 55;
		G[i] = (int) (Math.random() * 200) + 55;
		B[i] = (int) (Math.random() * 200) + 55;
	}

三、效果展示

 四、完整代码获取

经典项目Java小游戏-弹力球资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1429462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同城外卖跑腿app开发:重新定义城市生活

随着科技的发展和人们生活节奏的加快&#xff0c;同城外卖跑腿app应运而生&#xff0c;成为现代城市生活中的重要组成部分。本文将探讨同城外卖跑腿app开发的意义、市场需求、功能特点以及未来的发展趋势。 一、同城外卖跑腿app开发的意义 同城外卖跑腿app作为一种便捷的生活…

Visual Studio 2022 查看类关系图

这里写自定义目录标题 右键要查看的项目 -“查看”-“查看类图”效果展示&#xff1a; 原文地址 www.cnblogs.com 步骤1&#xff1a;勾选扩展开发 步骤2: 勾选类设计器 右键要查看的项目 -“查看”-“查看类图” 效果展示&#xff1a;

使用 WebSocket 发送二进制数据:最佳实践

WebSocket 技术提供了一种在客户端和服务器间建立持久连接的方法&#xff0c;使得双方可以在打开连接后随时发送数据&#xff0c;而不必担心建立复杂的持久连接机制。同时&#xff0c;使用二进制数据&#xff0c;如ArrayBuffer&#xff0c;可以更有效率地传送图像、声音等信息。…

MySQL知识点总结(四)——MVCC

MySQL知识点总结&#xff08;四&#xff09;——MVCC 三个隐式字段row_idtrx_idroll_pointer undo logread viewMVCC与隔离级别的关系快照读和当前读 MVCC全称是Multi Version Concurrency Control&#xff0c;也就是多版本并发控制。它的作用是提高事务的并发度&#xff0c;通…

西瓜书学习笔记——主成分分析(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;是一种常用的降维技术&#xff0c;用于在高维数据中发现最重要的特征或主成分。PCA的目标是通过线性变换将原始数据转换成一组新的特征&#xff0c;这些新…

web前端--------渐变和过渡

线性渐变&#xff0c;是指颜色沿一条直线进行渐变&#xff0c;例如从上到下、从左到右。 当然&#xff0c;CSS中也支持使用角度来设置渐变的方向&#xff0c;角度单位为deg。 0deg&#xff0c;为12点钟方向&#xff0c;表示从下到上渐变。 90deg&#xff0c;为3点钟方向&…

C++ | 部分和函数partial_sum的使用技巧

如果你需要处理一个数组的前缀和&#xff0c;或者数组中某一段元素的前缀和&#xff0c;你会怎么做呢&#xff1f; partial_sum函数是STL中的函数&#xff0c;用于计算范围的部分和&#xff0c;并从结果开始分配范围中的每个元素&#xff0c;range[first,last)中相应元素的部分…

nest.js实现登录验证码功能(学习笔记)

安装express-session npm i express-session 引入 注册session import * as session from express-session;import { NestFactory } from nestjs/core; import {DocumentBuilder,SwaggerModule, } from nestjs/swagger;import { AppModule } from ./app.module;async functio…

(五)springboot 配置多数据源连接mysql和hive

项目结构如下 mysql 执行如下建表语句&#xff0c;并插入一条测试数据 1 2 3 4 5 CREATE TABLE user ( id int(11) NOT NULL, name varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_ge…

计算机服务器中了DevicData勒索病毒如何解密,DevicData勒索病毒解密流程

网络数据安全一直是企业关心的主要话题&#xff0c;近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了DevicData勒索病毒攻击&#xff0c;导致企业计算机服务器瘫痪无法正常工作&#xff0c;严重影响了工作业务开展。经过云天数据恢复中…

【C语言】大小写字母的相互转化:多种方法解析及原理说明

在 C 语言编程中&#xff0c;我们经常需要进行大小写字母的相互转化。这种转化可以用于实现字符串的大小写转换、字符的大小写比较等操作。本篇博客将介绍多种方法来实现大小写字母的相互转化&#xff0c;并说明其原理和使用场景。 目录 方法一&#xff1a;标准库函数 方法二…

C# Onnx yolov8 水表读数检测

目录 效果 模型信息 项目 代码 训练数据 下载 C# Onnx yolov8 水表读数检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-01-31T10:18:10.141465 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-…

在VMware Workstation上安装深度系统Deepin V23 Beta3

原文链接&#xff1a;在VMware上安装深度Deepin V23 Beta3 大家好&#xff01;深度系统&#xff08;Deepin&#xff09;以其美观的界面和用户友好的设计而受到广泛欢迎。最近&#xff0c;深度系统的最新版本Deepin V23 Beta3已经发布。今天&#xff0c;我将为大家带来如何在VMw…

Vivado_2018.3文件 source无法自动更新,并且tb仿真文件不显示set as top,需要关闭Vivado之后重启

如下图所示&#xff0c;如果没有set as top这个选项&#xff0c;在确认代码没有问题的情况下&#xff0c;则需要重启vivado. 正常情况下如果有多个_tb仿真文件&#xff0c;会在simulation sources——sim_1下显示&#xff0c;_tb文件前面会有箭头 点开箭头之后&#xff0c;会发…

Matomo 访问图形显示异常

近期我们的把 PHP 系统完全升级后&#xff0c;访问 Matomo 的站点有关访问的曲线无法显示。 出现的情况如下图&#xff1a; 我们可以看到图片中有关的访问曲线无法显示。 如果具体直接访问链接的话&#xff0c;会有下面的错误信息。 问题和解决 出现上面问题的原因是缺少 ph…

Chemkin模拟HFC-125对碳氢燃料燃烧抑制的影响

1 机理建立 抑制剂的详细机理包含四个子机理: (1)烷烃/空气燃烧子机理:(2) 氟碳抑制子机理;(3)氯氟交互作用子机理;(4)碳抑制子机理。对于碳氢火焰燃烧采用AramcoMech的 C1-C4 机理&#xff0c;包含 111 个组分&#xff0c;784 步基元反应。涉及到氟组分在碳氢火焰中的抑制反应…

【QT】贪吃蛇小游戏 -- 童年回忆

成品展示 项目分析&#xff1a; &#x1f40d;基本元素如下 &#x1f40d;小蛇的设计&#xff0c;初始大小蛇头占一个方块&#xff0c;蛇身占两个方块。 &#x1f40d;关于小蛇的移动&#xff0c;采用蛇头前进方向增加一个方块&#xff0c;蛇尾减掉一个方块的实现方法。 &#…

算法学习——华为机考题库3(HJ21 - HJ25)

算法学习——华为机考题库3&#xff08;HJ21 - HJ30&#xff09; HJ21 简单密码 描述 现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应&#xff1a; 1–1&#xff0c; abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0&#xff0c;把密码…

2023年计算机视觉领域突破性研究有哪些?

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 ​回顾2023年&#xff0c;计算机视觉领域有哪些较为突出的研究成果&#xff1f;一起看看吧 SAM(Segment Anything Model) SAM 由 Meta AI 开发&#xff0c;是 CV 中分割任务的基础模型&#xff0c;彻…

富文本编辑器CKEditor4简单使用-05(开发自定义插件入门)

富文本编辑器CKEditor4简单使用-05&#xff08;开发自定义插件入门&#xff09; 1. CKEditor4插件入门1.1 关于CKEditor4插件的简单安装与使用1.2 参考 2. 开发自定义插件——当前时间插件2.1 创建插件文件目录结构2.2 编写插件原代码2.2.1 编写代码框架2.2.2 创建编辑器命令2.…