俄罗斯方块设计与实现Word文件下载.docx

上传人:b****3 文档编号:17011509 上传时间:2022-11-27 格式:DOCX 页数:25 大小:169.01KB
下载 相关 举报
俄罗斯方块设计与实现Word文件下载.docx_第1页
第1页 / 共25页
俄罗斯方块设计与实现Word文件下载.docx_第2页
第2页 / 共25页
俄罗斯方块设计与实现Word文件下载.docx_第3页
第3页 / 共25页
俄罗斯方块设计与实现Word文件下载.docx_第4页
第4页 / 共25页
俄罗斯方块设计与实现Word文件下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

俄罗斯方块设计与实现Word文件下载.docx

《俄罗斯方块设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块设计与实现Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。

俄罗斯方块设计与实现Word文件下载.docx

从上世纪末开始,网络的应用与普及更加广泛,而由于网络和计算机的交融和拓展,逐渐被人们应用于不同领域,其中也应运而生了许多游戏。

以致发展到目前网络上流行的大型网游。

而这些游戏的发展都离不开许多小型游戏的开发和普及所带来的影响。

可以说研究小游戏的编译在对于初学者来说是对程序的一中感性的认识,也能对今后学习程序的开发等带来不小的促进作用,为今后更广阔的软件开发奠定扎实的基础。

1.2主要设计内容

本管理系统以Eclipse为主开发工具,Eclipse是一款集成开发软件工具。

Eclipse是一款免费的且应用广泛的软件而Eclipse提供的JAVA集成开发工具也相当的丰富,Eclipse从起初作为服务于软件开发的集成平台,逐步演变为可以宿主任何一桌面为中心的应用程序平台。

同时采用SQLServer2000来创建数据库的连接。

本游戏可满足玩家的基本操作。

1.3章节内容简介

第1章为绪论,主要介绍游戏的选题背景及其影响,以及主要设计内容。

变量声明的各值属性见下表:

表1各变量的属性值表

字段

类型

长度

备注

ges

Int

5

正下落的块

shiGes

落实的块

fangAn

造新块

jiShuQi

计数器

jianGe

text

25

间隔

以上定义了游戏中各个指定值在数据库中的类型和字段等。

第2章为需求分析,首先介绍俄罗斯方块游戏的执行原理和基本功能,其中包括图像的显示,键盘的左右移动,边界值的设置等功能模块的实现。

还有所涉及到相关知识内容。

并设置其游戏规则,输赢主要由手指掌控操作灵活度决定。

最后是功能实现步骤。

第3章为功能模块和流程图,画出了游戏各个主要功能的实现模块,以及所使用的语句的JAVA流程结构图,包括主要有消行、出界和被挡。

最后显示运行成功后的运行结果图。

第4章为算法描述:

各个主要功能实现的详细算法介绍。

其中附有部分代码,并运用了二维数组和遍历循环的知识。

最后在理论上和具体实施上做出可行性分析。

完成所有的功能操作后,先进行调试,找出错误并做修改直至没有错误达到最终结果,然后做出总结归纳。

第2章需求分析

俄罗斯方块是每个人儿时几乎都玩过的游戏,还记得小时候经常用父亲的手机玩这一游戏。

从最初的不了解到后来的高手,想想都让人回味。

虽然是那么的简单,但却是充满了无穷的乐趣,对我而言是一段美好的回忆。

2.1游戏的执行原理

俄罗斯方块是一项简单,易懂的小游戏。

是通过不同小方块组成的不同形状的自由下落和背景组成的基本页面。

并通过手指操作键盘来实现小人的变化。

用上键控制方块的360度方向转变,左右键控制方块的左右移动。

为满足玩家的更多要求还可以增加方块的不同颜色的变化以及分数等。

2.2基本功能

2.2.1游戏规则

方块不能出界,即当方块合并叠加后超出了框架的范围,即为出界。

游戏结束。

因此需要灵活的手指操作能力。

规则相对来说还是很简单的,只要玩几次就能很好的掌握,并不难。

2.2.2游戏功能实现的步骤

1、图像的显示

2、下落的块与落定的实块

3、块的下出界与下被挡

4、决定是否下落

5、块的合并

6、消去整行

7、造一个新块

8、块的360度方向变化

2.2.3涉及知识内容

本游戏运用了数组的相关知识,还包括循环、选择、顺序等语句的应用。

数组是JAVA容器类的一种。

是用来存储一组固定的,有顺序且不重复的数据的。

它是学习JAVA最基础的知识点,熟悉了数组对今后的JAVA编程会有很大的帮助。

同时像for,ifelse,while等语句也是构成本游戏的基本语言。

其中数组是完成这一游戏设计的最基本的知识点,而循环语句的多次使用也是完成设计的一部分。

第3章功能模块与流程图

3.1功能模块

本图主要介绍了俄罗斯模块所需要实现的各个功能。

这是游戏设计的出发点和考虑的基本要素。

图1游戏功能模块图

图中右侧分支做有书签字样标记的是基本要实现的功能,而用感叹号做标记的是可加可不加的功能。

左侧的分支是拓展空间与注意提示等。

尤其是对可能出现的错误要考虑清楚。

3.2JAVA部分流程结构图形

流程结构图形包括对“方块的消行”,“出界”等的描述:

被挡:

指方块下落过程中,被实块所档,即无法在下落,也变成实块。

其他功能的流程结构图亦类似。

这里主要画了这两个主要的流程图。

详细算法分析见下介绍。

以下只列出了“出界”和“消行”两种情况。

出界:

方块下落后叠加超出框界限。

运用ifelse语句,如果每列19行都!

=0那么条件假设出界成立,否则不执行。

图2

消行:

指当下落后的块在某一行值都为1,即方块占满整行,则消去这一行。

运用:

3个for循环遍历嵌套,一个ifelse判断首先判断计数器内书是否为0或1,如果计数器累计达10则从看行-1到0开始循环,再从0到10循环,并把上一行的值给下一行。

从而达到消行的目的。

图3

最终运行界面如下:

图4

运行图有:

分数、级别、各种颜色的块、开始和暂停键组成。

再加上一些个人喜欢的插图以增加游戏的趣味性。

第4章算法功能描述

1、首先要显示背景图:

更具所提供的已有图片在绘图的任务指定区编写并变现代码如下:

Imagetu=(newImageIcon("

俄罗斯图片/2/背景-1.png"

)).getImage();

g.drawImage(tu,0,0,null);

注意:

在选择图像的地址时只需打开图的属性,复制即可。

2、显示落块的图:

代码实现如下:

ImagetuKuai=(newImageIcon("

俄罗斯图片/2/"

+ges[h][l]+"

.png"

g.drawImage(tuKuai,l*30+30,h*30+5,null);

变量h,l也包括颜色的随机变化。

其中行h、列l值是变量,即更据所给初始值的形状随机显示。

变量要加符号"

++"

除此之外,还要对图进行循环遍历。

3、显示实块也是如此,不同的是将变量改为常量。

4、分别定义落块与实块:

正在下落的块:

即方块自由定时下落,随固定时间随机是不停地下落,这里运用二维数组创建

int[][]ges=newint[20][10];

不能再动的块:

即落在下面固定不再动的块,这里运用二维数组创建

int[][]shiGes=newint[20][10];

5、初始化设置:

即初始的方块图形:

ges[0][3]=1;

ges[0][4]=1;

ges[0][5]=1;

ges[1][3]=1;

6、被挡需要判断落块是否有下一个实块。

如果下一个落块是固定不动的,即落实的块,则落块无法再在下落,与是被当。

用双循环遍历forfor语句。

以及选择判断:

if语句

if(ges[h][l]!

=0&

&

shiGes[h+1][l]!

=0)

{

jiaSheXiaBeiDang=true;

}

7、键盘的实现:

键盘上键主要负责方块的360度方向的变化,以更好的与实块合并从而为消行做最好的解决方案。

intxl=zl+zh-h;

intxh=zh-zl+l;

键盘左右键则是负责方块的左右移动。

右移同时也包括判断出界的语句:

if(ges[h][9]!

=0)

{

jiaSheYouChuJie=true;

}

else

{

}

这里玩家还可以将键盘下键设置为加速方块移动的功能键。

则这里我没做设计。

8、造新块:

定时的随机造出3种方案的方块形状。

并按定时时间向下落。

这3种方案分别为:

ges[0][3]=tu;

ges[0][4]=tu;

ges[0][5]=tu;

ges[1][4]=tu;

ges[0][4]=tu;

ges[1][3]=tu;

ges[1][4]=tu;

ges[0][5]=tu;

ges[0][6]=tu;

随机数可用公式:

Math.random()

这里用:

inttu=(int)(Math.random()*11)+1;

intfangAn=(int)(Math.random()*3);

9、合并指将落块给实块,也变成实块。

同样用双循环语句forfor以及判断选择ifelse语句:

shiGes[h][l]=ges[h][l];

ges[h][l]=0;

}

else

{

}

以上这些功能的实现均用到了数组等知识,并有都用到了循环遍历以及判断选择,这是游戏的8个主要功能的实现,完成了这些功能的算法,那么可以说这个游戏基本已经完成。

主要的方法基本都已经实现,如要加大功能也可做进一步的完善和改进。

最后所要做的工作是调试及运行看是否满足预期的目标。

如不行再继续修改和增删,运行成功并满足需求后形成报告。

结论

首先,本游戏使用Eclipse集成JAVA开发环境,完成其运行的框架和功能。

功能主要分为主程序和调用函数。

运用了本软件带有的Game生成程序,创建一新的Game主程序,在以此将分析结果转为代码,从而真正实现游戏的操作。

最后可以调试,修改以最终完成整个游戏的设计。

此款游戏还有其特有的好处:

据英国某一科学家测试验证表明,这一游戏有助于缓解遇到特大自然灾害的幸存者的心理,原因是当受害者在操作这一游戏时,会占用大脑中大部分资源,以使玩家暂时忘记灾害的痛苦程度。

有助其逐渐恢复平静状态。

是不是觉得很神奇啊!

通过此次课程设计,对我的综合知识有了很大的促进作用,包括数据库理解,JAVA的运用和掌握。

虽然整个报告并不是非常的完美,还有许多需要修改的地方也请老师多多包含,也感谢老师的指导和建议。

致谢

在工程实训设计阶段,有幸的投到我的导师赵福军、刘忠艳老师门下,开始我的设计生活。

在通过这次工程实训,我认真的并亲自完成了这份报告,通过此次实践操作,确实增强了自身的实践能力和思维能力,虽然没有在学校里全程跟随老师进行上机练习,不过我在校外也同的完成了课程设计,在对基础理论知识掌握的基础上,更加深了理论实践结合的能力。

并能更好的学以致用。

在实践的过程中,我们碰到了很多的问题,但都在老师的耐心指导下,最终形成了这份报告,也学会了许多东西。

正是在老师的不辞辛劳,我才能取得了显著地进步,在此我想你们致以最真心的感谢,并祝愿你们桃李满天下!

参考文献

1顾自新,王炳同.物流信息系统开发策略研究[J].物流科技,2006,

(1):

10-13

2蒋宝家,郑荣,董绍华,等.可视化仓库管理系统的设计[J].物流科技,2005,(9):

178-180

3郝刚.ASP.NET服务器控件开发[M].北京:

人民邮电出版社,2003:

34-36

4凯西.施瓦尔贝.IT项目管理[M].王金玉译.北京:

机械工业出版社,2003:

15-18

5J.Hamilton,T.Nayak.MicrosoftSQLServerFull-TextSearch.IEEEDataEngineeringBulletin,December,2001

6郑阿奇,刘启芬,顾韵华.SQLServer实训[M].清华大学出版社,2005

7王勇,张发勇,周顺平.CMM软件配置管理的理论与实践[J].计算机工程与应用,2004,(23):

102-10

8宋坤,李严,王国辉.数据库开发实例解析[M].机械工业出版社,2006

9马里杰.SQLServer数据库开发经典案例解析.清华大学出版社,2006.1.

10王珊,陈红.数据库系统原理教程[M].北京:

清华大学出版社,2004.6.

附录1设计系统部分源代码

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassELuoSiFangKuaiCS

//TODO:

变量“声明”在此

/**

*正在下落的块

*/

int[][]ges=newint[20][10];

*落实不能再动的块

int[][]shiGes=newint[20][10];

intzh=0;

intzl=4;

窗口ck=null;

定时器ds1=null;

ELuoSiFangKuaiCS()

//TODO:

程序初始化在此

ges[0][3]=1;

ges[1][3]=1;

ck=new窗口();

//窗口宽+2*立体边,高+2*立体边+标题栏

ck.setSize(5*2+600,600+2*5+25);

//设定窗口可见性setVisibletrue/false

ck.setVisible(true);

//延时的毫秒

ds1=new定时器(200);

class窗口extendsJFrame

菜单cd=null;

面板mb=null;

窗口监听器exit=null;

键盘监听器jp=null;

窗口()

{

jp=new键盘监听器();

this.addKeyListener(jp);

cd=new菜单();

this.setJMenuBar(cd);

mb=new面板();

this.add(mb);

exit=new窗口监听器();

this.addWindowListener(exit);

this.repaint();

class菜单extendsJMenuBar

JMenudan;

//菜单

JMenuItemxiang1;

//菜单项

菜单监听器cdjtq;

菜单()

{

dan=newJMenu("

游戏"

);

xiang1=newJMenuItem("

开局"

this.add(dan);

dan.add(xiang1);

cdjtq=new菜单监听器();

xiang1.addActionListener(cdjtq);

}

class菜单监听器implementsActionListener

publicvoidactionPerformed(ActionEvente)

{

//TODO:

菜单事件处理

if(e.getSource()==xiang1)

{

}

}

class窗口监听器extendsWindowAdapter

publicvoidwindowClosing(WindowEvente)

ds1.xc.stop();

System.exit(0);

class键盘监听器implementsKeyListener

//TODO:

键盘处理,可加入KeyEvent.VK_XXX

publicvoidkeyPressed(KeyEvente)

switch(e.getKeyCode())

caseKeyEvent.VK_LEFT:

//左

booleanjiaSheZuoChuJie=false;

for(inth=0;

h<

20;

h++)

if(ges[h][0]!

{

jiaSheZuoChuJie=true;

}

else

}

//假设左被挡住

booleanjiaSheZuoDang=false;

for(intl=1;

l<

10;

l++)

for(inth=0;

if(ges[h][l]!

=0&

shiGes[h][l-1]!

{

jiaSheZuoDang=true;

}

if(jiaSheZuoChuJie==false&

jiaSheZuoDang==false)

//左移

for(intl=1;

for(inth=0;

ges[h][l-1]=ges[h][l];

ges[h][l]=0;

}

zl--;

}

else

break;

caseKeyEvent.VK_RIGHT:

//右

booleanjiaSheYouChuJie=false;

if(ges[h][9]!

jiaSheYouChuJie=true;

if(jiaSheYouChuJie==false)

//右移

for(intl=8;

l>

=0;

l--)

ges[h][l+1]=ges[h][l];

zl++;

caseKeyEvent.VK_UP:

//上

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

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

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