- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
绪论
项目背景
本题目将设计一个俄罗斯方块(Tetris, 俄文:Тетрис)。它是一款风靡全球的电视游戏机和掌上游戏机游戏,由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。
开发平台
此项目基于android 环境进行开发,使用的编程工具为eclipse,它是以android语言作为其基本语言的一种可视化编程工具。
Android 是Google开发的基于Linux平台的开源手机操作系统. Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。
应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。
你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager 来通知用户。
一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。
android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。
注:Activity生命周期
项目规则及设计思路
项目规则
玩家通过点触虚拟键盘,左右控制方块左右移动,按上代表旋转,按下代表加速向下移动,每满一行消除,获得相应积分100,积分每增长2000,等级加1,游戏速度加快
实现思路
界面设计
游戏菜单界面
游戏菜单界面
游戏结束界面游戏运行界面排行榜界面帮助界面
游戏结束界面
游戏运行界面
排行榜
界面
帮助界面
注:游戏界面中,利用二维数组进行保存,其值为1代表该点有方块占用,值为0代表空白,根据值绘制整张游戏窗口。
功能设计
从游戏的基本玩法出发,主要算法在于俄罗斯方块的形状和旋转。在游戏设计中,方块采用最基本的7种造型,包括长条型,正方型,正S型,反S型,正7型,反7型,T型,每种造型又可以通过逆时针旋转变化出4种形状,因此利用三维数组保存28种方块形状,并且编号为K~K+3(K=0,1…7)的四个形状为一组。方块采用4*4的二维数组的数据结构,以此在界面中根据其数组对应值进行方块绘制。在旋转过程进行之前,先判断在该位置能否进行旋转,若能,则将其在三维数组中的编号K,编号为K+(K+1)%4的形状即为旋转结果。
游戏过程中,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度通过调用函数进行控制。同时用户也可以使用向下键加快下落速度,定义一个变量,对消除的行数进行记录,最后得出用户的分数,用条件语句对分数进行判断,达到一定的积分就可以升级到下一个等级。
程序流程图
总流程
到达底部部
到达底部部
到底游戏结束
到达底部部
结束
销行操作
生成下一个下坠物
将新生的下坠物代替旧的“下一
个下坠物“
将旧的“下一个下坠物”用作当前
下坠物
销行操作
游戏结束处理
下降一个单位
开始
底部到达的判断与销行的实现:
是
是
否
堆积方块,判断接触面状态及是否得分
2.统计分数
判断是否过关
关数增加,游戏速度将变快。开始新的一关,继续游戏
游戏窗口重绘
1.判断行满、处理销行、堆积方块向下移动
将新的下坠物放置到游戏区域中去,这时可能出现马上到达底部的情况,因此需要对它进行判断,如果是到达底部,则进行销行处理,并且修改相应的数据状态。而判断是否已经到达了底部,可以通过当前下坠物件所对应的接触面的方块位置为被占用状态来确定。
统计分数:在消行处理里面有一个专门用来统计消行数的变量,然后根据变量的值决定分数的多少。如果总分数达到过关条件就过关,改变游戏速度,开启新的一关,然后再加载方块。没有达到过关分数或者没有满行,则加载下一个方块继续游戏。
是
是
否
是
否
否
是
是
否
接上图1点
底行
判断当前行是否为空
判断当前行是否为满
判断是否有满行
判断移动行方块是否为空
当前行向上推动一行
将要移动行所有数据移至当前行
将当前行的所有数据初始化
统计连续几行为满
如果有销行,则刷新游戏区域
您可能关注的文档
- 基于51单片机的出租车计价器设计毕业论文.doc
- 基于AD9850的信号发生器的设计_毕业设计论文.doc
- 基于AD9850的信号发生器设计_毕业设计.doc
- 基于AdaBoost算法的人脸检测方法综述毕业设计论文.doc
- 基于ADAMS的42吨集装箱叉车转向机构的仿真与优化设计_毕业论文设计.doc
- 基于ADAMS的装载机工作装置仿真分析_毕业论文.doc
- 基于ADAMS软件轿车前悬架动态模拟与仿真本科生毕业论文.doc
- 基于ADN8830及MSP430的TEC温度控制电路的设计_毕业设计论文.doc
- 基于ADPCM的语音编解码设计_毕业设计.doc
- 基于ADuC812单片机的温湿度检测仪_毕业设计.doc
文档评论(0)