ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:509.01KB ,
资源ID:12913889      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12913889.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(项目开设计俄罗斯方块.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

项目开设计俄罗斯方块.docx

1、项目开设计俄罗斯方块俄罗斯方块游戏JAVA版项目开发设计文档Ver 1.0编制:骆华 审核:2014年8月一、项目介绍俄罗斯方块是一款风靡全球的掌上游戏机和PC机游戏, 它造成的轰动与创造的经济价值可以说是游戏史上的一件大事。它由俄罗斯人阿列克谢帕基特诺夫在1984年6月利用空闲时间所编写的游戏程序,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。它看似简单却变化无穷,俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。相信大多数

2、人都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块的时代。由于俄罗斯方块具有的教学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。二、项目需求 (一) 功能需求运行游戏后,可选择游戏难度,游戏开始后,由程序随机产生所定义的图形,右上角可看到下一个图形,无操作时,方块竖直缓慢下落,图形在接触障碍物之前,可以由键盘控制向左右下移动,可通过空格键进行翻转,可以进行暂停、重新开始游戏,当某一行被下落的方块填满后消除并计分,难度越大方块下落速度相对提高,另外可修改游戏窗体风格。(二) 性能需求1、游戏在不同分辨率下应能适应各种分辨率保证不变形。2、保证游戏性能,在双核512M内存下应能流畅运行。

3、三、涉及主要知识点 (一)、开发环境搭建与配置1、jdk安装配置2、eclipse安装配置 (二)、界面布局1、AWT、Swing 2、菜单使用 (三)、游戏方块 整个游戏中总共7种方块样式,每个方块有4种变形,通过线程控制由4 * 4 个方格构成的一个方块的移动、下落以及变形。(四)、游戏画布 通过线程动态改变游戏画布的方格颜色,画布通过检查方格颜色来体现方块的移动 (五)、事件 键盘监听事件 (六)、线程 整个游戏由线程控制,一轮游戏过程,实现了Runnable接口,一轮游戏是一个大循环,在这个循环中,每隔100毫秒;检查游戏中的当前块是否已经到底了,如果没有,就继续等待。如果到底了,就看

4、有没有全填满的行,如果有就删除它,并为游戏者加分,同时随机产生一新的当前块,让它自动下落。当新产生一个块时,先检查画布最顶上的一行是否已经被占了,如果是,可以判断Game Over了。 四、概要设计(采用开发模式、框架、模块划分、模块之间通讯设计等,本项目无)五、数据库设计 (概念数据模型、物理数据模型、表、字段、约束、存储过程、函数、视图等,本项目无)六、界面设计本游戏只包含1个主界面 游戏菜单下包括开始新游戏、设置游戏方块颜色、设置背景颜色、改变游戏难度等。控制菜单下包括游戏的暂停、继续、重新开始以及停止。窗体风格菜单下用来设置游戏窗体风格。关于菜单下包括帮助和游戏简介七、类设计本项目包含

5、ErsBlock、ErsBlocksGame、ControlPanel、ErsBox 以及GameCanvas 5个类,具体设计如下:(一)ErsBlock类 该类的主要功能为设计游戏方块类,继承自线程类(Thread),由 4 * 4 个方格(ErsBox)构成一个块,控制块的移动、下落、变形等。 (二)ErsBlocksGame类该类的主要功能为游戏主类,继承自JFrame类,负责游戏的全局控制。内含 1一个GameCanvas画布类的实例引用, 2一个保存当前活动块(ErsBlock)实例的引用,3一个保存当前控制面板(ControlPanel)实例的引用; 利用线程实现了一轮游戏过程,

6、一轮游戏是一个大循环,在这个循环中,每隔100毫秒,检查游戏中的当前块是否已经到底了,如果没有,就继续等待。如果到底了,就看有没有全填满的行,如果有就删除它,并为游戏者加分,同时随机产生一个新的当前块,让它自动下落。当新产生一个块时,先检查画布最顶上的一行是否已经被占了,如果是,可以判断Game Over了。(三)ControlPanel类该类的主要功能控制面板类,继承自JPanel.上边安放预显窗口、等级、得分、控制按钮,主要用来控制游戏进程。(四)ErsBox类该类的主要功能是实现方格类,是组成块的基本元素,用自己的颜色来表示块的外观 (五)GameCanvas类该类的主要功能是实现画布类

7、,内有行数 * 列数个方格类实例。继承自JPanel类。 ErsBlock线程类动态改变画布类的方格颜色,画布类通过检查方格颜色来体现ErsBlock块的移动情况。八、技术难点、解决方案和关键代码1、游戏方块的旋转和移动游戏中总共有7种方块类型,每种方块有4种翻转,因此我们在程序中利用点阵图,把4位16进制数按每位换算成一行4位2进制数的结果矩阵,理解为一个4*4的矩阵,比如说0x04e0转换完后就是0000010011100000其中将0看作空的,1看作方块的块,就可以看出正好是长条形在4*4空间中的横竖切换/* * 方块的样式数目为7 */ private final static int

8、 BLOCK_KIND_NUMBER = 7; /* * 每一个样式的方块的反转状态种类为4 */ private final static int BLOCK_STATUS_NUMBER = 4; /* * 分别对应对7种模型的28种状态 */ public final static int STYLES = / 共28种状态 0x0f00, 0x4444, 0x0f00, 0x4444, / 长条型的四种状态 0x04e0, 0x0464, 0x00e4, 0x04c4, / T型的四种状态 0x4620, 0x6c00, 0x4620, 0x6c00, / 反Z型的四种状态 0x2640

9、, 0xc600, 0x2640, 0xc600, / Z型的四种状态 0x6220, 0x1700, 0x2230, 0x0740, / 7型的四种状态 0x6440, 0x0e20, 0x44c0, 0x8e00, / 反7型的四种状态 0x0660, 0x0660, 0x0660, 0x0660, / 方块的四种状态 ;方块的移动分为向左、右和下3个方向,/* * 块向左移动一格 */ public void moveLeft() moveTo(y, x - 1); /* * 块向右移动一格 */ public void moveRight() moveTo(y, x + 1); /*

10、* 块向下落一格 */ public void moveDown() moveTo(y + 1, x); /* * 将当前画移动到newRow/newCol所指定的位置 * param newRow int, 目的地所在行 * param newCol int, 目的地所在列 * return boolean, true-移动成功,false-移动失败 */ private synchronized boolean moveTo(int newRow, int newCol) if (!isMoveAble(newRow, newCol) | !moving) return false; ea

11、rse(); y = newRow; x = newCol; display(); canvas.repaint(); return true; 对于方块的翻转,/* * 块变型 */ public void turnNext() for (int i = 0; i BLOCK_KIND_NUMBER; i+) for (int j = 0; j BLOCK_STATUS_NUMBER; j+) if (STYLESij = style) int newStyle = STYLESi(j + 1) % BLOCK_STATUS_NUMBER; turnTo(newStyle); return;

12、 /* * 将当前块变成newStyle所指定的块样式 * param newStyle int,将要改变成的块样式,对应STYLES的28个值中的一个 * return boolean,true-改变成功,false-改变失败 */ private boolean turnTo(int newStyle) if (!isTurnAble(newStyle) | !moving) return false; earse(); int key = 0x8000; for (int i = 0; i boxes.length; i+) for (int j = 0; j = 1; style =

13、newStyle; display(); canvas.repaint(); return true; 2、游戏中消行和结束如果游戏画布中有全填满的行,我们就应该从画布中删除当行,根据最顶行是否被占来判断游戏是否结束。/* * 检查画布中是否有全填满的行,如果有就删除之 */ public void checkFullLine() for (int i = 0; i canvas.getRows(); i+) int row = -1; boolean fullLineColorBox = true; for (int j = 0; j 0; i-) for (int j = 0; j col

14、s; j+) boxesij = (ErsBox) boxesi - 1j.clone(); score += ErsBlocksGame.PER_LINE_SCORE; scoreForLevelUpdate += ErsBlocksGame.PER_LINE_SCORE; repaint(); /* * 根据最顶行是否被占,判断游戏是否已经结束了。 * return boolean, true-游戏结束了,false-游戏未结束 */ private boolean isGameOver() for (int i = 0; i canvas.getCols(); i+) ErsBox box = canvas.getBox(0, i); if (box.isColorBox() return true; return false; 九、 参考资料 1、 俄罗斯方块需求分析2、 基JAVA的俄罗斯方块游戏开发3、 多线编程4、 俄罗斯方块设计文档资料仅供参考!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1