1、武汉理工大学计算机科学与技术学院能力拓展训练基于Andriod环境的俄罗斯方块游戏设计1 绪论中国手机用户已超过6亿,具有庞大的潜在用户群,便携性,对于Android开放式平台,技术门槛低,手机游戏前景广阔手机游戏业务全面崛起:手机游戏的市场规模已经超过了手机音乐,成为名副其实的“无线娱乐产业之王”单机游戏占据较大市场份额:受到网速和资费的制约,目前手机网游份额较小,单击游戏占据市场主要份额。手机游戏成为中国移动通信热点:运营商将手机游戏作为新的业务增长点;众多无线运营商、手机制造商、平台技术提供商和游戏开发商的大力投入运营模式是手机游戏发展的关键:如何构建移动运营商与SP、CP 之间良好的产
2、业合作关系,如何建立适合手机网络游戏发展的收费模式和推广渠道,是摆在产业界面前的重要课题。1.1 课题背景俄罗斯方块是家喻户晓的益智小游戏,它由俄罗斯人阿列克谢帕基诺夫在1984年6月利用空暇时间所编写的游戏程序,故此得名,俄罗斯方块的基本规则是移动、旋转、和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。它看似简单却变化无穷,俄罗斯方块上手及其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。由于俄罗斯方块具有的教学性、动态性与知名度,所以常拿来做游戏程序设计的练习教材。以前玩的都是别人写好的,决心自己做一个,并与别人一起分享这份快乐,同时也运用下自己所学知识。1.
3、2 游戏简介原本是前苏联科学家阿列克谢帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公司,造成各平台上软件大量发行的现象。Game Boy版的俄罗斯方块在日本卖出424万套,是Game Boy史上卖最好的游戏。海湾战争时,也是前线美军最常拿消磨时间的游戏之一。由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。俄罗斯方块曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家
4、喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。1.3 开发平台相关介绍Android 有丰富的功能,因此很容易与桌面操作系统混淆。Android 是一个分层的环境,构建在 Linux 内核的基础上,它包括丰富的功能。UI 子系统包括:窗口,视图。用于显示一些常见组件(例如编辑框、列表和下拉列表)的小部件。Android 包括一个构建在 WebKit 基础上的可嵌入浏览器,iPhone 的 Mobile Safari 浏览器同样也是以 WebKit 为基础。Android 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如 G
5、PRS、EDGE 和 3G)。Android 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 设备都配备了必需的硬件。另外还有摄像支持。过去,移动应用程序努力向桌面应用程序看齐的两个领域分别是图形/媒体和数据存储方法。Android 通过提供对 2D 和 3D 图形的内置支持,包括 OpenGL 库,解决了图形方面的挑战。由于 Android 平台包括流行的开源 SQLite 数据库,因此缓解了数据存储的负担。应用程序架构。如前所述,Android 运行
6、在 Linux 内核上。Android 应用程序是用 Java 编程语言编写的,它们在一个虚拟机(VM)中运行。需要注意的是,这个 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,这是一种开源技术。每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中图 1 显示一个简化的 Android 软件层次结构2 游戏分析2.1游戏策划游戏的策划是指对游戏中主要功能的实现方案进行确定的过程,大型游戏需要缜密的策划才可以开发。例如,呈现技术、目标平台等内容。(1)游戏设计本游戏为经典俄罗斯方块游戏,每
7、一次消除一层加100分、2层200分、3层400分、4层800分。游戏中的方块形状都是随机生成的(共7种)。随着难度的增加方块下落的默认速度会增加,游戏分数没有上限。(2)呈现技术本游戏采用的游戏背景和其他图片都是用美图秀秀软件编辑的。(3)目标平台本游戏的目标平台为Android 4.0。(4)操作方式游戏的操作方式为触控操作,游戏菜单的弹出是通过键盘来操作的。俄罗斯方块游戏游戏方块控制功能游戏显示更新功能游戏速度更新功能游戏积分等级功能2.2游戏功能分析2.2俄罗斯方块功能描述图(1)游戏方块控制功能:通过条件判断,实现对游戏方块的左移,右移,快速下降,自由下落,旋转功能,以及行满消除的功
8、能。(2)游戏显示更新功能:当游戏方块左右移动,下落,旋转时,要清除先前的游戏方块,用新坐标重绘游戏方块,当消除满行时,要重绘游戏地板的当前状态。(3)游戏速度更新功能:当游戏玩家的积分达到某一条件时,则下降速度会随之增长(4)游戏积分等级功能:当游戏玩家的分数到达一定值时,游戏等级会随之提高。3总体设计3.1游戏执行总流程首先进入开始界面,进行游戏,随机的从已调好的方块组合中出现一个方块,通过函数判断方块是否下落停止。如果没有停止,再判断方块是否匀速下落,然后返回下落是否停止判断。若下落停止,判断是否可以消去一行。Start初始化界面随机显示方块组合下落是否停止方块匀速下落能否出现下一个方块
9、组合End3.1游戏执行总流程图3.2游戏界面设计3.2.1初始界面 3.2.2游戏界面3.3.3游戏帮助界面 3.3.4游戏排行榜界面3.3方块形状设计最终设计实现图,中间表示主界面,设置intArray_FKXZ = newint2010,数组Array_FKXZ中值为1,则将对应的方块染成红色,值为0,则染成白色;如若Array_FKXZ184=1;Array_FKXZ174=1;Array_FKXZ175=1;Array_FKXZ165=1;以此方法,即可将7中不同形状的方块组合显示出来。4游戏功能模块算法分析各功能具体实现见附加代码,代码中有详细设计。4.1游戏方块控制功能对方块控制
10、,自由下落、左右移动、快速下落分别由函数moveDown()、moveLeft()、moveRight()、fastDrop()。4.2游戏显示更新功能在界面右面显示游戏进行时的各项统计,包括游戏接下来的形状,玩家选择游戏的等级、得分、消去行数。4.3游戏速度更新功能游戏速度指方块自由下落的速度,这里方块下落是在FDown这个进程中执行的,handler.postDelayed(FDown, time)中的第二个参数time指下降速度,将time值设置变小,下降速度就会随之加快。4.4游戏积分等级功能游戏玩家将一行消除时,相应得到100积分,并在界面显示,然后积分每增长2000,等级加1,并在
11、界面显示。5游戏规则 图51 游戏键盘玩家通过点触虚拟键盘,左右控制方块左右移动,按上代表旋转,按下代表加速向下移动,每满一行消除,获得相应积分100,积分每增长2000,等级加1,游戏速度加快6游戏运行截图经过测试,游戏能够正常运行,运行结果基本符合预期设想。已经能够实现俄罗斯方块游戏的基本功能,但是有一些地方还值得优化与改进,下面是几点需要改进的地方:(1)取消重启游戏后得分重置(由于本次开发没有加入游戏用户,数据的保存只能保存所有玩家的最高纪录等信息,而无法保存某个玩家的个人最优成绩等);(2)对界面中图像进行优化(此次开发由于时间和精力有限对图像的处理力求简单,下次开发可以对图像进行比
12、较深的加工);(3)对游戏中的一些BUG进行改进(到目前为止此游戏在中兴U880Android2.3.7上使用没有发现比如卡死等较大的BUG)图6-1 游戏正常运行截图7游戏的优化与改进l 加入本地游戏用户列表和相关的一些面板(如积分排行榜);l 加入游戏声音(本次游戏的开发由于主要用于兰州交通大学交通运输学院信息管理与信息系统09级2012年暑期课程设计,时间有限没有加入游戏声音);l 取消重启游戏后得分重置(由于本次开发没有加入游戏用户,数据的保存只能保存所有玩家的最高纪录等信息,而无法保存某个玩家的个人最优成绩等);l 对界面中图像进行优化(此次开发由于时间和精力有限对图像的处理力求简单
13、,下次开发可以对图像进行比较深的加工);l 对游戏中的一些BUG进行改进(到目前为止此游戏在中兴U880Android2.3.7上使用没有发现比如卡死等较大的BUG);8总结本次的能力拓展训练给与的时间较长,所以我有着充足的时间准备。由于之前对于android系统方面的知识学习的很少,所以这次的题目说实话对我确实是个挑战。但所幸时间较长,暑假我花时间好好的系统的学习了下android系统编程,通过查资料、与同学交流,初步了解了基于android环境的编程。本次的能力训练题目是基于android环境的俄罗斯方块游戏的设计。对俄罗斯方块游戏本身其实非常熟悉,这是一个非常经典的益智类游戏。之前对于用
14、其它语言编写的该游戏有过涉猎,比较容易上手。制作的整个过程比较艰辛,期间好多不懂的,都得从头开始学起。但整个过程下来,确确实实对自身能力的提高是非常有帮助的。这次的能力拓展训练不仅加强了我的编码能力,同时也锻炼了我的学习新知识的能力。虽然设计的不是很完美,但通过这次的能力拓展训练让我受益匪浅。9 参考文献1 刘志宏.Java程序设计教程.北京:航空工业出版社,2010年7月2 单兴华.Java基础与案例开发详解.北京:清华大学出版社,2009年9月3 scot schrager.Java高级编程.北京:人民邮电出版社,2007年10月本科生课程设计成绩评定表班级:计算机0902班姓名:方鑫学号:0120910340204序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:2012年月日11