项目开设计俄罗斯方块.docx
- 文档编号:29696835
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:10
- 大小:507.74KB
项目开设计俄罗斯方块.docx
《项目开设计俄罗斯方块.docx》由会员分享,可在线阅读,更多相关《项目开设计俄罗斯方块.docx(10页珍藏版)》请在冰豆网上搜索。
项目开设计俄罗斯方块
俄罗斯方块游戏JAVA版
项目开发设计文档
Ver
骆华
2021年8月
一、项目介绍
俄罗斯方块是一款盛行全世界的掌上游戏机和PC机游戏,它造成的轰动与制造的经济价值能够说是游戏史上的一件大事。
它由俄罗斯人阿列克谢·帕基特诺夫在1984年6月利用空闲时刻所编写的游戏程序,故得此名。
俄罗斯方块的大体规那么是移动、旋转和摆放游戏自动输出的各类方块,使之排列成完整的一行或多行而且排除得分。
它看似简单却转变无穷,俄罗斯方块上手极为简单,可是要熟练地把握其中的操作与摆放技术,难度却不低。
作为众所周知老少皆宜的公共游戏,其普及程度能够说是史上任何一款游戏都无法相较的。
相信大多数人都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块的时期。
由于俄罗斯方块具有的教学性、动态性与知名度,也常常拿来作为游戏程序设计的练习题材。
二、项目需求
(一)功能需求
运行游戏后,可选择游戏难度,游戏开始后,由程序随机产生所概念的图形,右上角可看到下一个图形,无操作时,方块竖直缓慢下落,图形在接触障碍物之前,能够由键盘操纵向左右下移动,可通过空格键进行翻转,能够进行暂停、从头开始游戏,当某一行被下落的方块填满后排除并计分,难度越大方块下落速度相对提高,另外可修改游戏窗体风格。
(二)性能需求
一、游戏在不同分辨率下应能适应各类分辨率保证不变形。
二、保证游戏性能,在双核512M内存下应能流畅运行。
三、涉及要紧知识点
(一)、开发环境搭建与配置
1、jdk安装配置
2、eclipse安装配置
(二)、界面布局
一、AWT、Swing
二、菜单利用
(三)、游戏方块
整个游戏中总共7种方块样式,每一个方块有4种变形,通过线程操纵由4*4个方格组成的一个方块的移动、下落和变形。
(四)、游戏画布
通过线程动态改变游戏画布的方格颜色,画布通过检查方格颜色来表现方块的移动
(五)、事件
键盘监听事件
(六)、线程
整个游戏由线程操纵,一轮游戏进程,实现了Runnable接口,一轮游戏是一个大循环,在那个循环中,每隔100毫秒;检查游戏中的当前块是不是已经到底了,若是没有,就继续等待。
若是到底了,就看有无全填满的行,若是有就删除它,并为游戏者加分,同时随机产生一新的当前块,让它自动下落。
当新产生一个块时,先检查画布最顶上的一行是不是已经
被占了,若是是,能够判定GameOver了。
四、概要设计
(采纳开发模式、框架、模块划分、模块之间通信设计等,本项目无)
五、数据库设计
(概念数据模型、物理数据模型、表、字段、约束、存储进程、函数、视图等,本项目无)
六、界面设计
本游戏只包括1个主界面
游戏菜单下包括开始新游戏、设置游戏方块颜色、设置背景颜色、改变游戏难度等。
操纵菜单下包括游戏的暂停、继续、从头开始和停止。
窗体风格菜单下用来设置游戏窗体风格。
关于菜单下包括帮忙和游戏简介
七、类设计
本项目包括ErsBlock、ErsBlocksGame、ControlPanel、ErsBox和GameCanvas5个类,具体设计如下:
(一)ErsBlock类
该类的要紧功能为设计游戏方块类,继承自线程类(Thread),由4*4个方格(ErsBox)组成一个块,操纵块的移动、下落、变形等。
(二)ErsBlocksGame类
该类的要紧功能为游戏主类,继承自JFrame类,负责游戏的全局操纵。
内含
1一个GameCanvas画布类的实例引用,
2一个保留当前活动块(ErsBlock)实例的引用,
3一个保留当前操纵面板(ControlPanel)实例的引用;
利用线程实现了一轮游戏进程,一轮游戏是一个大循环,在那个循环中,每隔100毫秒,检查游戏中的当前块是不是已经到底了,若是没有,就继续等待。
若是到底了,就看有无全填满的行,若是有就删除它,并为游戏者加分,同时随机产生一个新的当前块,让它自动下落。
当新产生一个块时,先检查画布最顶上的一行是不是已经被占了,若是是,能够判定GameOver了。
(三)ControlPanel类
该类的要紧功能操纵面板类,继承自JPanel.上边安放预显窗口、品级、得分、操纵按钮,主
要用来操纵游戏进程。
(四)ErsBox类
该类的要紧功能是实现方格类,是组成块的大体元素,用自己的颜色来表示块的外观
(五)GameCanvas类
该类的要紧功能是实现画布类,内有行数*列数个方格类实例。
继承自JPanel类。
ErsBlock线程类动态改变画布类的方格颜色,画布类通过检查方格颜色来表现ErsBlock块的移动情形。
八、技术难点、解决方案和关键代码
1、游戏方块的旋转和移动
游戏中总共有7种方块类型,每种方块有4种翻转,因此咱们在程序中利用点阵图,把4位16进制数按每位换算成一行4位2进制数的结果矩阵,明白得为一个4*4的矩阵,比如说0x04e0转换完后确实是
0000
0100
1110
0000
其中将0看做空的,1看做方块的块,就能够够看出正好是长条形在4*4空间中的横竖切换
/**
*方块的样式数量为7
*/
privatefinalstaticintBLOCK_KIND_NUMBER=7;
/**
*每一个样式的方块的反转状态种类为4
*/
privatefinalstaticintBLOCK_STATUS_NUMBER=4;
/**
*别离对应付7种模型的28种状态
*/
publicfinalstaticint[][]STYLES={0f0f04c6c6c44cength;j++){
booleanisColor=((newStyle&key)!
=0);
boxes[i][j].setColor(isColor);
key>>=1;
}
}
style=newStyle;
display();
();
returntrue;
}
2、游戏中消行和终止
若是游戏画布中有全填满的行,咱们就应该从画布中删除当行,依照最顶行是不是被占来判定游戏是不是终止。
/**
*检查画布中是不是有全填满的行,若是有就删除之
*/
publicvoidcheckFullLine(){
for(inti=0;i<();i++){
introw=-1;
booleanfullLineColorBox=true;
for(intj=0;j<();j++){
if(!
(i,j).isColorBox()){
fullLineColorBox=false;
break;
}
}
if(fullLineColorBox){
row=i--;
(row);
}
}
}
/**
*当一行被游戏者叠满后,将此行清除,并为游戏者加分
*@paramrowint,要清除的行,是由ErsBoxesGame类计算的
*/
publicsynchronizedvoidremoveLine(introw){
for(inti=row;i>0;i--){
for(intj=0;j boxes[i][j]=(ErsBox)boxes[i-1][j].clone(); } score+=; scoreForLevelUpdate+=; repaint(); } /** *依照最顶行是不是被占,判定游戏是不是已经终止了。 *@returnboolean,true-游戏终止了,false-游戏未终止 */ privatebooleanisGameOver(){ for(inti=0;i<();i++){ ErsBoxbox=(0,i); if())returntrue; } returnfalse; } 九、参考资料 1、俄罗斯方块需求分析 2、4f基JAVA的俄罗斯方块游戏开发 3、&z=&tn=baiduimagedetail&ipn=d&word多线编程 4、俄罗斯方块设计文档
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 开设 俄罗斯方块