0034Java程序设计-基于Java的飞机大战游戏的设计与实现论文

news2024/12/26 22:41:23

文章目录

    • 摘 要
    • 目 录
    • 系统设计
    • 开发环境

摘 要

现如今,随着智能手机的兴起与普及,加上4G(the 4th Generation mobile communication ,第四代移动通信技术)网络的深入,越来越多的IT行业开始向手机行业转移重心。而手机行业中游戏方面的利润所占比重较大,并且手机游戏大多数则是由Java语言开发研制的。所以我想顺应时代发展,用学到的Java知识对游戏进行一次深入的了解与创作。

Java语言在我们大学学习中占了很大的比重,其优点甚多:面向对象,可靠,安全,多平台可移植,高性能,多线程等。面向对象是相对于c语言的面向过程来说的,在面向对象编程中,我们用Java去新建一个对象,调用其方法就能实现我们的目标,并不需要了解这个对象的方法的具体实现过程;Java的可靠安全特点体现Java不支持指针,禁止第三方访问,杜绝了外部风险。所以使用Java开发游戏,是一个正确的选择。

大学学习即将结束,在毕业之际,我想用我4年里学习的知识为自己编写一个属于自己的游戏——飞机大战游戏,为我的大学生活画上圆满的句号。

关键词**:**Java游戏;面向对象;可靠安全;多线程

目 录

1 引言… 1

1.1 项目背景… 1

1. 2 国内外研究现状… 3

1.3 项目主要工作… 4

1.4 本文组织结构… 6

2 开发平台与开发技术… 7

2. 1 IntelliJ IDEA简介… 7

2. 2 IntelliJ IDEA与Eclipse 、MyEclipse的比较… 8

2. 3 Java… 10

3 可行性研究… 13

3. 1 技术可行性… 13

3. 2 经济可行性… 13

3. 3 操作可行性… 14

3. 4 用户使用可行性… 14

3. 5 法律可行性… 14

4 需求分析… 15

4. 1 系统需求概述… 16

4. 2 功能模块设计… 17

4.2.1 游戏状态控制功能模块… 17

4.2.2 游戏难度的调整模块… 17

4.2.3 游戏界面绘画功能模块… 17

4.2.4 玩家游戏控制功能模块… 17

4. 3 游戏难点分析… 18

4.3.1 绘图美化… 18

4.3.2 多线程技术的实现… 18

4.3.3 防碰撞问题的解决… 18

4.3.4 动画的实现… 18

5 飞机大战功能实现… 19

5.1 模型图… 19

5.2 软件功能模块… 19

5.3 游戏首页的实现… 20

5.3.1 界面实现… 20

5.3.2 流程图… 21

5.3.3 核心代码… 22

5.4 游戏开始模块的实现… 24

5.4.1 界面实现… 24

5.4.2 流程图… 25

5.4.3 核心代码… 25

5.5 发射子弹模块的实现… 27

5.5.1 界面实现… 27

5.5.2 流程图… 28

5.5.3 核心代码… 29

5.6 积分模块的实现… 33

5.6.1 界面的实现… 33

5.6.2 核心代码… 34

5.7 防碰撞逻辑 … 37

5.7.1 核心代码… 37

5.8 游戏操作的实现… 39

5.8.1 核心代码… 39

5.9 特殊NPC蜜蜂… 41

6 系统测试… 42

6.1 测试的定义及其重要性… 43

6.1.1 测试的定义… 43

6.1.2 测试的重要性… 44

6.2 测试方法… 46

6.3 测试结果… 50

7 结论… 51

参考文献… 52

致谢… 54

外文文献… 55

中文翻译… 63

系统设计

飞机大战的界面如图1-3所示。

img

飞机大战的开始界面如图1-5所示。

img

发射子弹界面实现如图1-7所示。

img

飞机大战积分模块界面如图1-8所示。

img

package com.tarena.fly;
import Java.util.Random;
/**蜜蜂*/
public class Bee extends FlyingObject implements Award{
	private int xSpeed=1;//x坐标移动速度
	private int ySpeed=2;//y坐标移动速度
	private int awardType;//奖励类型
	
	/**初始化数据*/
	public Bee(){
		this.image=ShootGame.bee;
		width=image.getWidth();
		height=image.getHeight();
		y=-height;
		Random rand=new Random();
		x=rand.nextInt(ShootGame.WIDTH-width);
		awardType=rand.nextInt(2);//初始化时给奖励
	}
	
	/**获得奖励类型*/
	public int getType(){
		return awardType;
	}
	/**越界处理*/
	@Override
	public boolean outOfBounds(){
		return y>ShootGame.HEIGHT;
	}
	/**移动,可斜着飞*/
	@Override
	public void step(){
		x+=xSpeed;
		y+=ySpeed;
		if(x>ShootGame.WIDTH-width){
			xSpeed=-1;
		}
		if(x<0){
			xSpeed=1;
		}
	}
}

开发环境

开发工具:idea、Navicat

数据库:MySQL8.0

环境配置:jdk1.8 、Tomcat8.5

开发人员:IT012201

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

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

相关文章

JVM虚拟机:从结构到指令让你对栈有足够的认识

本文重点 在前面的课程中,我们学习了运行时数据区的大概情况,从本文开始,我们将对一些组件进行详细的介绍,本文我们将学习栈。栈内存主管java的运行,是在线程创建时创建的,它是线程私有的,它的生命周期是跟随线程的生命期,也就是说线程结束栈内存就释放了,对于栈来说…

web:[网鼎杯 2020 青龙组]AreUSerialz

题目 点进题目发现 需要进行代码审计 function __destruct() {if($this->op "2")$this->op "1";$this->content "";$this->process();}这里有__destruct()函数&#xff0c;在对象销毁时自动调用&#xff0c;根据$op属性的值进行…

数据结构与算法:二叉树之“堆排序”

目录 一、树概念及结构 二、二叉树树概念及结构 特殊的二叉树 三、堆的概念及结构 四、堆的创建 1、声明结构体 2、初始化 3、销毁 4、添加新元素 5、交换元素 6、向上调整 7、判断堆是否为空 8、移除堆顶元素 9、向下调整 10、获取堆元素个数 五、使用堆排序…

【网络编程】传输层——UDP协议

文章目录 一、传输层1. 再谈端口号2. 端口号范围划分3. 认识知名端口号4. 两个问题5. netstat 与 pidof 二、UDP协议1. UDP协议格式2. UDP协议的特点3. 面向数据报4. UDP的缓冲区5. UDP使用注意事项6. 基于UDP的应用层协议 一、传输层 传输层 负责负责两台计算机之间的端到端的…

阿里云2023年双11活动时间、活动入口、活动内容详细解读

阿里云2023年双11活动正在火热进行中&#xff0c;双11活动时间&#xff0c;阿里云推出了金秋上云季活动&#xff0c;活动包括满减礼包福利&#xff0c;云产品降价让利&#xff0c;下面给大家整理分享阿里云双11活动时间、活动入口、活动内容&#xff0c;助力大家轻松上云&#…

网络爬虫-Requests库主要方法解析

一、Requests库的7个主要方法 其中&#xff0c;request()是 基础方法&#xff0c;其他6个方法都是基于request()的&#xff0c;但最常用的是get() 和 head() 二、request() 13个访问控制参数&#xff1a; 三、get(): 获取某一个url链接的相关资源 四、head() 五、post() 六、…

LCR 021. 删除链表的倒数第 N 个结点

这篇也是凑数的 .... 描述 : 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点 题目 : LeetCode 删除链表的倒数第Nge节点 : LCR 021. 删除链表的倒数第 N 个结点 分析 : 首先创建一个虚拟节点(哨兵节点) , 虚拟节点下一节点指向头节…

从 malloc 分配大块内存失败 来简看 linux 内存管理

文章目录 背景Glibc MallocMalloc 分配大块内存失败原因Overcommit_memory 实现OOM (Out Of Memory) 的实现 背景 应用进程 malloc 返回了null&#xff0c;但是观察到的os 的free内存还有较大的余量 &#xff0c;很奇怪为什么会这样&#xff1f; 不可能是oom导致的&#xff0…

GAMP源码阅读(上)主要类型、后处理流程、RINEX文件读取

原始 Markdown文档、Visio流程图、XMind思维导图见&#xff1a;https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、GAMP 简介1、程序概述2、工具箱介绍3、函数调用关系4、程序执行流程 二、基础类型定义1、宏定义2、结构体定义3、矩阵、向量、最小二乘、卡尔…

以“信”数智,筑“广”生态:亚信科技CEO高念书受邀出席中国广电数字化赋能大会

6月30日&#xff0c;由国家广播电视总局指导、中国广电集团主办的中国广电数字化赋能大会在京召开。国家广播电视总局党组成员、副局长杨小伟&#xff0c;工信部总工程师赵志国&#xff0c;中国移动党组成员、副总经理高同庆等出席会议并致辞&#xff0c;中广电移动网络有限公司…

【ICCV2023】频率成分在少样本学习中的重要性

论文标题&#xff1a;Frequency Guidance Matters in Few-Shot Learning 论文链接&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/html/Cheng_Frequency_Guidance_Matters_in_Few-Shot_Learning_ICCV_2023_paper.html 代码&#xff1a;暂未开源 引用&#xff1a;…

基于SpringBoot的医院后台管理系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 患者管理 公告信息管理 公告类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 四、结论 前言 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理…

[云原生1.] Docker镜像的创建

文章目录 1. Docker镜像概述1.1 简介1.2 镜像结构的分层详解 2. 创建Docker镜像的方法类别2.1 基于已有镜像创建2.1.1 创建流程2.1.2 示例 2.2 基于本地模板创建2.2.1 示例 2.3 基于Dockerfile 创建 3. 联合文件系统&#xff08;UnionFS&#xff09;2.1 简介2.2 特性 4. Docker…

云原生-AWS EC2使用、安全性及国内厂商对比

目录 什么是EC2启动一个EC2实例连接一个实例控制台ssh Security groups规则默认安全组与自定义安全组 安全性操作系统安全密钥泄漏部署应用安全元数据造成SSRF漏洞出现时敏感信息泄漏网络设置错误 厂商对比参考 本文通过实操&#xff0c;介绍了EC2的基本使用&#xff0c;并在功…

【排序算法】 归并排序详解!分治思想!

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 算法—排序篇 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️归并排序的思想☁️基本思想☁️归并的思想实现☁️分治法 &#x1f3…

并发编程 -常用并发设计模式

1. 优雅终止线程的设计模式 思考&#xff1a;在一个线程 T1 中如何优雅的终止线程 T2&#xff1f; 错误思路1&#xff1a;使用线程对象的 stop() 方法停止线程 stop 方法会真正杀死线程&#xff0c;如果这时线程锁住了共享资源&#xff0c;那么当它被杀死后就再也没有机会释 …

C/C++角谷猜想 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C角谷猜想 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C角谷猜想 2020年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 所谓角谷猜想&#xff0c;是指对于任意一个正整数&…

windows电脑安装系统后固态硬盘和机械硬盘的盘符号顺序显示错乱,解决方法

一、场景 由于电脑磁盘是SSD固态硬盘自己拓展的1T机械硬盘组成&#xff0c;固态硬盘分为C、D两个盘区&#xff0c;机械硬盘分为E、F两个盘区。为了提升运行速度&#xff0c;系统安装在C盘&#xff0c;安装完成后按照习惯盘区顺应该为C、D、E、F&#xff0c;但实际情况却是D、E…

剑指offer --- 二维数组中的元素查找

目录 一、读懂题目 二、思路分析 三、代码呈现 总结 一、读懂题目 题目&#xff1a; 在一个二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的个二维数组和一个整数&#…

用baostock库获取沪深300成分股

先看效果&#xff1a; 代码&#xff0c;bs_get_hs300.py import baostock as bs import pandas as pd# 登陆系统 lg bs.login() # 显示登陆返回信息 print(login respond error_code:lg.error_code) print(login respond error_msg:lg.error_msg)# 获取沪深300成分股 rs bs…