Java实战之俄罗斯方块(源码+exe/无需安装环境+带音乐+好看UI)

俄罗斯方块游戏(JAVA版)

项目实战指南

1. 项目范围说明书

1.1引言

为了确定项目的范围以便更好的对俄罗斯游戏项目加以实施,所以编写了该项目范围说明书。该说明书不对项目的整体范围做方方面面的说明,只编写其中的简要内容和环节。

1.2概述

在本说明书中项目的范围包含两块内容:

产品的需求规格说明书

产品的需求包含项目需求中所定义的游戏界面以及各业务功能。

项目过程涉及的相关文档

项目的实施过程中必须按照软件工程输出相应的开发文档,输出相关文档达成两个目标:

一、 规范化的软件开发过程,培养良好的开发习惯和软件工程的意识。

二 、质量管理部门将通过文档、源码等对项目做综合的评价。

1.3项目需求

1.3.1需求概述

该项目基于window xp平台,采用 J2SE的swing技术开发,开发包为jdk1.6,开发工具采用Eclipse Helios版。

俄罗斯方块界面要求美观大方、操作便捷、响应及时。业务功能主要包含以下几块内容:

  • 方块图形多样化
  • 方块实现移动以及旋转
  • 方块实现消行处理
  • 游戏底部方块自动上升
  • 统计得分
  • 游戏结束

1.3.2界面需求

1.3.2.1界面设计原则
  • List item

  • 界面简洁美观

  • 界面功能布局合理

  • 界面交互友好

1.3.2.2游戏界面原型

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3.2.3界面各部件说明
菜单

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开局

点开局讲开始方块游戏,游戏默认为初级。

初级/中级/高级

初级/中级/高级菜单只能选择其一,级别的不同方块的下落速度和图形的种类将不同。

自定义

为了满足不同玩家对游戏的需求,增强游戏的适应性,游戏增加了自定义功能。自定义功能包含四个方面的内容:

一、 下落速度:滑动条一个单位代表速度提高20ms.

二、 方块形状:初级包含基本方块、中级包含”凹”型等方块、高级包含更复杂的方块(学员可以根据自己的喜好自行设计,不在文档约束范围)。

三、方块区域上涨:为了增大游戏的难度,方块底部可以在一定的时间间隔上涨。

四、游戏声音:为了增强游戏的视听效果,方块在触底和消行的时候播放声音。

退出

对话框提示“确定愿意退出游戏?”, 选择“是”则退出应用程序,选择“否”则继续停留在游戏界面。

帮助–关于

显示出游戏的版权信息。

方块下落区域

该区域的大小为及基本小方块的整数倍,用户在其中实现方块的移动、旋转、消行等操作。该区域要求整体感觉美观大方并且色调柔和,游戏结束中系统提示Game Over 输出在该区域的中间部分,要求用特殊字体和醒目的颜色显示。

下一方块预览区

该区域显示即将进入方块下落区的方块。当下落区的方块下落完毕的时候,该预览区的方块立即进入下落区,预览区同时生成一个新的方块。

操作说明区

操作说明区对操作方块的按键以及提示,因为此功能的存在已经俄罗斯方块游戏规则简单,所以将不再编写帮助手册。

得分和等级

该区域显示了当前游戏的得分以及玩家所处的等级,方块下落每消一行则得分加10,得分满200则进入下一等级,等级相应加1。

1.3.3游戏业务需求

1.3.3.1需求概述

本俄罗斯方块的需求主要包含两大块内容:一、基本的游戏需求,二、扩展的游戏需求。

基本的游戏需求包含以下几个方面:

  • 开局
  • 五种基本的方块的随机产生
  • 方块的正确的下落以及旋转
  • 游戏的暂停和继续
  • 方块正确的触底消行
  • 方块得分记录
  • 游戏过关进入下一个等级
  • 方块触顶游戏结束,提示按C键继续、按E键退出游戏
  • 退出游戏

扩展的游戏需求包含以下几个方面:

  • 游戏的初、中、高三级下游戏有不一样的难度
  • 游戏在运行的过程中可以设切换游戏等级、自定义游戏规则,这些规则的设置立即在游戏中生效。
  • 游戏中方块的种类要求更多多样化
  • 游戏中可以自定义速度、声音、以及方块形状
  • 游戏实现底层方块的上涨从而增加游戏的难度
  • 游戏排行榜
  • 未来游戏可能还附加其他消行的规则
1.3.3.2详细业务需求
  1. 总体流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zxBiiMZ1-1588847092438)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml5660\wps6.png)]

  1. 菜单功能说明

游戏级别菜单只能3选1:

  • 初级:下落速度500ms 包含基本方块。
  • 中级:下落速度 300ms 包含复杂方块。
  • 高级:下落速度 100ms 包含复杂方块,而且游戏区域底部方块会上涨。

1.4项目文档

1.4.1项目规划

每个学员在项目开始后应该提交一份项目规划,项目规划的格式参见<<项目管控体系>>中的相关文档,项目规划完成项目过程的整体规划,作为项目的执行和推进的纲要。

项目规划文档必须与项目开工后第2天提交至svn目录下,若未能按时提交则影响影响质量管理部们对项目的评估。

1.4.2详细设计

俄罗斯方块项目的详细设计文档反应了各小组或者个人对程序框架以及实现细节的一种预期,它给编码以及后期的维护提供了依据。详细设计文档于项目开工2天后提交小组评审,半天后将评审文档提交svn服务器。详细设计文档主要包含几块内容:

  • 游戏总体框架

  • 游戏类图

  • 顺序图

  • 关键算法流程图

1.4.3项目日报

每个学员每日都需提交日报至svn服务器,如果没有提交日报则影响质量管理部门对项目的跟踪踪和评估。日报描述计划、执行、以及未能解决的问题,具体的格式参见《项目管控体系》的日报相关文档。

1.4.4游戏发布

项目的打包成可运行的RussianBlockGame.jar,如果需要有安装向导则用第3方工具打包成exe可执行文件。

1.4.5项目api文档

根据代码的注释生成程序的api文档。

2.软件设计

2.1设计概述

该设计文档主要包含了俄罗斯方块的整体框架设计、界面设计、业务功能设计等内容。文档为编码提供了依据,面向的读者为编码人员、系统测试人员、项目质量人员。

本实战指导手册中引入软件设计旨在规范俄罗斯方块项目的设计和编码、以及提供设计文档编写的指导,力求在后续的项目中学员能通过本次初级的设计体验加以学习和扩展完成复杂项目设计。

2.2整体框架

2.2.1框架概述

采用经典的MVC框架,模型层包括各种游戏业务组件,控制器是各类事件监听器,视图层为与用户交互的窗口、对话框及其它界面要素。

2.2.2框架视图

在这里插入图片描述

下面对各层做些说明。

  1. 游戏界面

游戏界面以GameMainFrame 为中心,该Frame继承jdk的JFrame。GameMainFrame 聚合了各功能区域的Panel、菜单,同时也添加了键盘以及鼠标的监听(游戏界面和控制器之间建立连接)。

  1. 控制器

控制器在该框架中左承游戏界面右接游戏业务和游戏状态,控制器主要表现为监听对象以及监听对象对业务类调用。

  1. 业务类以及游戏状态

业务类主要是包含游戏的旋转判断、游戏的消行、方块的的移动,游戏状态主要包含用于维护游戏区域的静态2维数组,更多的细节参考详细设计中各模块的类图。

2.2.3 总体运行序列图

2.2.3.1概述

运行序列图简单的说明了开局后进行游戏的过程中,各类之间的调用顺序。该图从游戏全局的角度描述了其中的主要的类,除这些类之外系统还存在大量的其他相关类这里不予描述(注:时钟由系统按一定的时间间隔触发而执行下落的代码因此在顺序图中没有予以描述但不可忽略其存在)其他类之间的协作关系将在其密切相关的模块中介绍。

2.2.3.2顺序图

在这里插入图片描述

2.3界面设计

2.3.1概述

需求文档已经描述了游戏界面的模型,下文的界面设计更多的从界面类的角度对界面的构造加以阐述。界面的设计包含游戏主窗体以及窗体内的各部件的设计,设计的原则为各部件功能独立、结构单一、粒度适中。

2.3.2主界面设计

2.3.2.1概述

主界面运行后居于屏幕中央,界面不可最大化、点标题栏关闭按钮则结束整个应用,点菜单由MenuActionListener响应。

2.3.2.2类图

在这里插入图片描述

在这里插入图片描述

2.3.2.3类描述

在这里插入图片描述
在这里插入图片描述

2.3.2.4主要方法实现流程图
  1. BaseFrame.autoCenter
    在这里插入图片描述

  2. GameMainFrame.initComponent
    在这里插入图片描述

2.3.3方块区域设计

2.3.3.1类图

在这里插入图片描述

2.3.3.2类描述

在这里插入图片描述

2.3.4预览区域设计

2.3.4.1 类图

在这里插入图片描述

2.3.4.2 类描述

在这里插入图片描述

2.3.5自定义游戏规则窗体设计

2.3.5.1类图

在这里插入图片描述

2.3.5.2类描述

在这里插入图片描述

2.3.6关于窗口设计

2.3.6.1类图

在这里插入图片描述

2.3.6.2类描述

在这里插入图片描述

2.4游戏业务设计

2.4.1游戏业务设计概述

游戏业务类和游戏状态类分布于Model层,由监听器调用而后决定View层的显示。游戏中包含游戏规则的设置、游戏的开局、方块的继承体系、方块的移动、方块越界和消行、方块的随机产生等主体业务。游戏业务设计包含类图、类描述、协作图、状态图等内容。

2.4.2核心游戏业务设计

2.4.2.1方块类
  1. 类图

在这里插入图片描述

  1. 类图说明

系统内部的所有方块继承于BaseShape,支持旋转操作的方块可以同时实现旋转的接口。BaseShape内部包含一个ArrayList对象,该ArrayList 包含了若干个Block对象,Block的数量以及Block的初始位置由子类来实现。为了增强程序可读性,Direction定义为枚举类型包含了上下左右旋转(LEFT,RIGHT,DOWN,ROTATION),BaseShape.move方法依赖此类型。

2.4.2.2方块的最小元素Block
  1. 类图

在这里插入图片描述

  1. 类描述
    在这里插入图片描述
2.4.2.3 方块基类
  1. 类图

在这里插入图片描述

  1. 类描述
    在这里插入图片描述
2.4.2.4 L方块类(其他方块类似)
  1. 类图

在这里插入图片描述

  1. 类描述

在这里插入图片描述

2.4.2.5 游戏按键监听器GameKeyPressListener
  1. 类图

在这里插入图片描述

  1. 类描述

在这里插入图片描述

  1. 顺序图

在这里插入图片描述

2.4.2.6音乐播放
  1. 类图
    在这里插入图片描述

  2. 类描述
    在这里插入图片描述

源码和exe文件如下:

https://download.csdn.net/download/belongtocode/12397773

解压后直接打开exe即可运行,不用安装Java环境也可以!!!
在这里插入图片描述

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,到现在为止历经十多年风波,仍然是一款人见人爱的好游戏。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。 游戏规则 1、一个用于摆放小型正方形的平面虚拟场地,其标准大小:行宽为10,列高为20,以每个小正方形为单位。 2、一组由4个小型正方形组成的规则图形,英文称为Tetromino,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。 I:一次最多消除四层 J(左右):最多消除三层,或消除二层 L:最多消除三层,或消除二层 O:消除一至二层 S(左右):最多二层,容易造成孔洞 Z (左右):最多二层,容易造成孔洞 T:最多二层 (1)部分游戏有单格方块,可以穿透固定的方块到达最下层空位。其他的改版中出现更多特别的造型。 方块会从区域上方开始缓慢继续落下。 (2)玩家可以做的操作有:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。 (3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。 (4)当区域中某一列横向格子全部由方块填满,则该列会消失并成为玩家的得分。同时删除的列数越多,得分指数上升。 (5)当固定的方块堆到区域最上方而无法消除层数时,则游戏结束。 (6)一般来说,游戏还会提示下一个要落下的方块,熟练的玩家会计算到下一个方块,评估要如何进行。由于游戏能不断进行下去对商业用游戏不太理想,所以一般还会随着游戏的进行而加速提高难度。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Web

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值