1、摘要 Abstract 一 引言1二 Android平台介绍22.1 平台背景概述22.2 系统概述22.3 Android系统特点32.4 Android手机强大功效32.5 Android应用程序框架52.6 Android开发环境搭建62.6.1 Android SDK安装62.6.2 Android SDK配置72.6.3 安装和配置ADT72.6.4 模拟器配置8三 俄罗斯方块需求分析93.1 游戏介绍93.2 游戏功效分析93.3 方块及旋转变换需求分析103.4 游戏运行需求分析103.5 消行和分数统计需求分析11四 游戏总体设计分析124.1 总体设计思想124.2 游戏类设
2、计13五 具体设计和实现175.1 游戏开始菜单界面设计175.2 方块类设计和实现175.3 方块装载185.4 方块控制设计205.5 方块消行245.6 分数统计和速度控制255.7 游戏界面绘制265.8 游戏结束27六 游戏实现结果296.1 游戏菜单界面296.2 游戏帮助界面296.3 游戏运行界面296.4 游戏结束界面30结束语31致谢32参考文件33摘 要Android作为谷歌为移动终端打造真正开放和完整智能手机系统,多年来受到了开发者广泛关注。该平台由操作系统、中间件、用户界面和应用软件组成。本文关键介绍了Android平台背景和开发环境搭建和俄罗斯方块开发过程,基于对A
3、ndroid开源平台构架了解和开发环境搭建完成了俄罗斯方块游戏设计。俄罗斯方块游戏包含方块装载、键盘事件处理、方块操作控制、下降速度控制、抵达事件处理、满行判定及消行、显示控制等几大模块。本设计采取Java语言在Android开发平台下设计实现了俄罗斯方块游戏。关键字:Android;Java;俄罗斯方块;手机游戏AbstractAs a truly opened and completed mobile platform, Android which devised by 谷歌 was concerned sidely by developers in recent years. The p
4、latform consists of the operating system, the middle-ware, the user Interface and the application software.This paper mainly introduced the background of Android platform, the development environments setting up and the development process of Puzzle game and Tetris game. Based on the comprehension o
5、f the open-source building of Android and the construction of development environment, the Tetris game were completed. Tetris game contains modules of the square-loading, the keyboard events handling,the block-rotating, the drop speed controlling, the incident handling, the full line judging and van
6、ishing and the display-controlling. Tetris game were accomplished by the Java language on Android development environment platform. Keywords:Android; Java; Tetris; Mobile phone game 一 引言Android一词本义指“机器人”,于11月5日被谷歌宣告为基于Linux内核开源手机造作系统名称。该平台由操作系统、中间件、用户界面和应用软件组成,是一个为移动终端打造真正开放和完整智能手机系统。Android公布吸引了众多开
7、发者眼光,它不仅功效强大,而且含有开放和无偿等先天优势,全球范围内电信行业、手机制造商所以毫不犹豫地加入到Android开放联盟中来。伴随谷歌Android智能手机平台推出,很快便在其周围聚集了全球移动领域一大批重量级厂商并组成了谷歌开放手机联盟(Open Handset Alliance),“开放手机联盟”表示:Android平台能够促进移动设备创新,让用户体验到最优质移动服务。同时,开发商也将得到一个新开放等级,更方便地进行协同合作,从而保障新型移动设备研发速度,所以Android是第一个完整、开放、无偿手机平台。开发Android应用程序使用Java语言是面向对象编程语言,面向对象技术很
8、好地适应了当今软件开发过程中新出现种种传统面向过程语言所不能处理问题,包含软件开发规模扩大、升级加紧、维护量增大和开发分工日趋细化、专业化和标准化等,是一个快速成熟、推广软件开发方法。面向对象技术关键是以更靠近人类思维方法建立计算机逻辑模型,它利用类和对象机制将数据和其上操作封装在一起,并经过统一接口和外界交互,使反应现实世界实体各个类在程序中能够独立、自治、继承;这种方法很有利于提升程序可维护性和可重用性,大大提升了开发效率和程序可管理性,使得面向过程语言难于操纵大规模软件能够很方便创建、使用和维护。 本文基于 Android 开发平台,使用 Java 语言编写了俄罗斯方块游戏,经过不停编写
9、、调试、完善,最终使程序顺利运行。二 Android平台介绍2.1 平台背景概述 早在 年,谷歌就低调收购了当初成立仅 22 个月,致力于手机软件和手机操作系统研发高科技企业 Android,至此谷歌为其进军智能手机领域开响了第一枪。 年 11 月 5 日,Android 被谷歌正式公布作为自己手机系统平台,而在未公开之前常被传闻为 谷歌 电话或 gPhone。AndroidLogo是一个全身绿色机器人,图2-1所表示。图2-1 谷歌Android机器人标志2.2 系统概述 Android 一词本义指“机器人”,同时也是 谷歌 于 年 11 月 5 日宣告基于 Linux 内核开源手机操作系统
10、名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造真正开放和完整移动软件。它是一个为移动终端打造真正开放和完整智能手机系统。其早期由 谷歌 开发,后由开放手机联盟OpenHandset Alliance开发。它采取了软件堆层(software stack,又名以软件叠层)架构,关键分为三部分,底层以 Linux 内核为基础,由 C语言开发,只提供基础功效;中间层包含函数库 Library 和虚拟机 Virtual Machine, 由C+开发;最上层是由各企业自行开发,以 Java 编写多种应用软件,如通话程序,短信程序等。Android 平台整体自底向上由以下四
11、个层次组成:Linux 内核层、Android 运行时库和其它库层、应用框架层、应用程序层。2.3 Android系统特点 Android系统特点大致有以下几点:(1)开放性。谷歌和开放手机联盟合作开发了Android,谷歌经过和运行商、设备制造商、开发商和其它相关各方结成深层次合作伙伴关系,期望经过建立标准化、开放式移动电话软件平台,在移动产业内形成一个开放式生态系统。(2)应用程序无界限。Android上应用程序能够经过标准API访问关键移动设备功效。经过互联网,应用程序能够申明它们功效可供其它应用程序使用。(3)应用程序是在平等条件下创建。移动设备上应用程序能够被替换或扩展,即使是拨号程
12、序或主屏幕这么关键组件。(4)应用程序能够轻松地潜入网络。应用程序能够轻松地潜入HTML、JavaScript和样式表,还能够经过WebView显示网络内容。(5)应用程序能够并行运行。Android是一个完整多任务环境,应用程序能够在其中并行运行。在后台运行时,应用程序能够生成通知以引发注意。2.4 Android手机强大功效 Android手机功效比起传统手机来说相当强大,其优势也很显著:(1)智能虚拟键盘。虚拟键盘出现意味着基于Android1.5或以上版本(Android 2.0)移动设备能够同时支持物理键盘和虚拟键盘。不一样输入方法可满足用户在特定场景需求。Android虚拟键盘能够
13、在任何应用中提供,包含Gmail、浏览器、SMS,当然也包含大量第三方应用,如自动校正、推荐、用户词典等。不一样于其它手机平台,Android 1.5及以上版本还支持第三方虚拟键盘应用安装。图2-2所表示。 (2)使用Widget实现桌面个性化。能够用Widget“武装”自己桌面。大多数小Web应用全部是从网络上取得实时数据并展示给用户。Android预装了5个桌面Widget,包含数字时钟、日历、音乐播放器、相框和搜索。不一样于iPhone,Android经过内置应用程序安装第三方Widget。图2-3所表示。 图2-2 虚拟键盘 图2-3 用Widget实现个性化桌面(3)用在线文件夹快速
14、浏览在线数据。类似于OS X LeopardQuickLook特征,Android在线文件夹可显示常见数据条目,比如联络人、喜爱应用、E-mail信息、播放列表、书签、RSS源等,并不需要运行系统程序处理特定数据条目。在线文件夹数据实时更新,就像经过云或是当地创建新数据。什么是最好,开发者能够拓展通用数据条目和注册新数据类型内置支持。(4)视频录制和分享。Android还有录制和分享视频功效,对回放和MPEG-4、3GP等视频格式也有了愈加好支持。能够经过E-mail、MMS或直接上传到YouTube等方法来分享视频,使用隐私控制来决定是分享给好友还是每个人。上传视频同时,能够继续使用手机,甚
15、至能够继续录制和上传新视频。 (5)图片上传。在线分享图片需要点击更少。完成摄影后,当浏览图片或选择谷歌在线图片服务Picase时,只需轻点“分享”就会拥有1GB无偿图片存放空间。(6)愈加快、更兼容浏览器。Android基于Webkit内核浏览器带来了关键调速装置(SpeedPumb),这得益于新Webkit渲染引擎和优化Java脚本编译器(SquireIFish)。当使用包含大量Java脚本复杂Web应用时,能够体验到更佳性能。除提升速度外,Android浏览器还支持Web页面内复制和粘贴操作,用户能够选汉字本并复制,然后粘贴到搜索框中进行搜索。(7)Voice Search语音搜索。带有
16、语音识别技术谷歌手机已于11月面世,它支持语音搜索功效。该功效增强了默认搜索能力,已超出纯文本搜索。当你大声说出要搜索内容后,Android将上传数字信号并统计到谷歌服务器中。在服务器中,语音识别技术能将语音转化为特定文本搜索,使之经过谷歌搜索引擎,经过地理位置筛选,将结果反馈到手机设备。(8)立体声蓝牙和免提电话。除了增强免提电话体验,Android还支持立体声蓝牙(A2DP和AVCRP),并有自动配对功效。(9)强大GPS技术。Android内部提供了大量GPS组件,我们能够很轻松地取得设备目前位置等信息,让导航等功效愈加完美。(10)Android系统硬件检测。Android可自动检测和
17、修复SD卡文件系统,许可第三方应用显示Android系统硬件特征。为了让用户下载到和组件设备更匹配应用,我们能够检测用户设备硬件信息,让满足应用要求设备安装该程序,当更多Android设备建立在不一样硬件上时,这个功效会显得很实用。2.5 Android应用程序框架框架是一个应用程序关键,是全部参与开发程序员共同使用和遵守约定,大家在其约定上进行必需扩展,但程序一直保持主体结构一致性。其作用是让程序保持清楚和一目了然,在满足不一样需求同时又不相互影响。Android 系统提供给应用开发者本身就是一个框架,全部应用开发全部必需遵守这个框架标准。在开发应用时就是在这个框架上进行扩展,Android
18、框架有以下功效可供使用。 android.app: 提供高层程序模型和基础运行环境。 android.content: 包含对多种设备上数据进行访问和公布。 android.database:经过内容提供者浏览和操作数据库。 android.graphics:底层图形库,包含画布、颜色过滤、点、矩阵,能够将它们直接绘制到屏幕上。 android.media:提供部分类管理多个音频、视频媒体接口。 :提供帮助网络访问类,超出通常.*接口。 android.os:提供了系统服务、消息传输和IPC机制。 android.opengl:提供OpenGL工具。 android.provider:提供访问
19、Android内容提供者类。 android.telephony:提供和拨打电话相关API交互。 android.view:提供基础用户界面接口框架。 android.util:包含工具性方法,比如时间日期操作。 android.webkit:默认浏览器操作接口。 android.widget:包含多种UI元素(大部分是可见)在应用程序布局中使用。2.6 Android开发环境搭建配置Android开发环境之前,首先需要了解Android对操作系统要求。它能够使用Windows XP及其以上版本、Mac OS、Linux等操作系统,以Windows XP为例进行讲解。Android开发所需软件
20、版本及其下载地址如表2-1所表示。表2-1 Android开发所需软件下载地址软件名称 下载地址JDK Eclipse http:/www.eclipse.orgSDK ADT http:/dl-ssl.谷歌.com/android/eclipse/Android 以 Java 作为开发语言,JDK是进行Java 开发时必需开发包。Eclipse是一款很优异开源IDE,在大量插件“配合”下,完全能够满足从企业级Java应用到手机终端Java游戏开发,谷歌官方也提供了基于EclipseAndroid开发插件ADT。Eclipse安装很简单,直接将下载压缩包解压即可。安装了JDK和Eclipse后
21、,就要安装Android SDK和ADT插件了。2.6.1 Android SDK安装(1)解压缩下载好SDK安装包到要安装SDK路径,然后运行“SDK Stetup.exe”。(2)假如碰到了消息为“Failed to fetch URL”错误提醒,那么需要将HTTPS方法改为HTTP方法,在“Android SDK and AVD Manager”窗口左侧选择“Settings”,选中“Force https:/”选项,点击“Save&Apply”并重新运行SDK Setup.exe。(3)点击“Available Packages”,选择要安装API版本及USB驱动和SDK文档,假如有需
22、要能够全部选择。(4)选择好以后点击“Install Selected”按钮,安装选中软件包,在接下来出现界面中依次点击“Accept All”单选按钮和“Install Accepted”按钮,开始下载所选择安装包。下载完成以后,依据提醒即可完成后续安装操作,到这里,Android SDK安装已经完成,下面来配置Android SDK。2.6.2 Android SDK配置需要将Android SDK安装目录中tools文件夹路径添加到环境变量中方便使用,操作步骤以下所述。(1)右键点击“我电脑”,依次选择“属性”“高级”“环境变量”选项。(2)选择“系统变量”中变量名为“path”项,点击
23、编辑按钮,将Android SDK安装文件夹下tools文件夹路径加入到“path”变量中,注意用“;”隔开。(3)依次点击“确定”,完成环境变量配置。2.6.3 安装和配置ADTADT插件安装和配置步骤以下所述。 (1)开启Eclipse,点击Help菜单,依次选择“Software Update”项和“Avaiable”选项,结果图2-4所表示。图2-4 添加ADT更新地址(2)点击“OK”,这时可能会出现图2-5所表示错误。图2-5 更新地址错误处理这个问题方法是:将“https”更改为“http”,在接下来对话框中选中“Name”下全部选项,依据提醒即可完成后续安装过程。(3)打开菜单
24、“Windows”,依次选择“Preferences”“Android”,点击“Browse”按钮,选择Android SDK安装路径。(4)点击“OK”按钮,打开菜单“File”,依次选择“NEW”“Projece”菜单命令,出现“Android Projest”选项,则表示安装配置成功。到这里,准备工作已经就绪。2.6.4 模拟器配置从Android1.5开始引入AVD(Android Virtual Device)这个概念,AVD是一个经过配置模拟器。在创建AVD时能够配置选项有:模拟器影像大小、触摸屏、轨迹球、摄像头、屏幕分辨率、键盘、GSM、GPS、Audio录放、SD卡支持、缓存区
25、大小等。配置Android模拟器具体步骤以下所表示。(1)首先打开“Android SDK and AVD Manager”。(2)点击左边“Virtual Devices”选项,再点击右边“New”按钮,新建一个AVD。(3)在“Name”标签处填写AVD名字,在“Target”标签处选择API等级,在“Size”标签处填写要创建SD卡大小,在“Skin”标签中设置模拟器风格。(4)接下来,还需要配置模拟器运行AVD。操作步骤为:点击“Run”,选择“Run Configurations”菜单命令,打开“Run Configurations”对话框,双击“Run Configurations
26、”对话框左边导航器中“Android Application”菜单命令,创建一个Android项目运行配置。在右边“Name”文本框中输入Android项目运行配置名字,在“Android”选项卡中“Project”文本框中输入要运行Android项目,一样能够点击右边“Browse”按钮来选择Android项目。(5)点击“Target”选项卡,选择“Autonmatic”单选项,然后在AVD列表框中选择刚才创建AVD,点击“Run”按钮,这么便能够运行项目了。三 俄罗斯方块需求分析3.1 游戏介绍俄罗斯方块是家喻户晓益智小游戏,它由俄罗斯人阿列克谢帕基特诺夫(Alexey Pazhitno
27、v)在1984年6月利用空暇时间编写游戏程序,故此得名。俄罗斯方块基础规则是移动、旋转和摆放游戏随机产生多种方块,使之排列成完整一行或多行而且消除得分。它看似简单却改变无穷,俄罗斯方块上手极其简单,且游戏过程改变无穷,作为游戏本身很有魅力,不过要熟练掌握其中操作和摆放技巧,难度却不低。此软件给用户提供了一个展现自己高超技艺场所,在这里,它不仅放松自己,还能感受到游戏中乐趣。游戏区域会从顶部不停落下7种下坠物一个,游戏区域右上角有一个区域能够显示下一个下坠物形状,玩家能够控制下坠物移动、旋转和一键到底,经过玩家操作,下坠物在游戏区域以“摆积木”形式出现。下坠物在一行或多行堆满后就能够自动消除,消
28、行后会得到对应分数,假如目前下坠物堆积至窗口顶端,则游戏结束。3.2 游戏功效分析先分析一下整个游戏具体实现,首先,游戏有开始、切换界面、结束等操作接口,而在游戏过程中,伴随玩家按键,会出现下坠物形态改变、下坠物快速下坠、摆放下坠物件、销毁填满行、产生下一个方块等功效。先分析游戏特点,然后对这些功效一一进行细化,从而完成整个游戏设计。(1)游戏方块控制功效。当玩家按下对应操作键位时,经过条件判定,判定该操作是否可行,假如可行就实施对应操作。关键操作有游戏方块左移,右移,快速下降,旋转变形。(2)方块生成显示功效。游戏中会有两个地方产生方块,一个是游戏区域上方会有方块落下,还有就是在屏幕右上角,
29、也会产生一个方块,该方块为游戏区域下一个要产生方块。同时当游戏方块左右移动,下落,旋转变形时,要清除先前游戏方块,还要求出被操作后方块坐标,用新坐标重绘游戏方块。(3)方块摆放消行功效。当方块落到底部时候,经过条件判定,把方块摆放在屏幕底部并连续显示,当某行或某几行被填满时候,要把这几行消除,而且被消除行数上方方块整体下移。(4)游戏分数统计功效。统计游戏积分,每当有行被消除时,游戏积分会依据一次消除行数而增加对应分数。(5)游戏速度更新功效。当游戏积分达成某一条件时,系统将自动为玩家提升难度。难度增加时候,方块下降速度会加紧,增加游戏可玩性和趣味性。(6)游戏结束控制功效。经过判定,假如摆放
30、方块超出屏幕顶端时候,则游戏结束,能够返回菜单重新开始游戏。3.3 方块及旋转变换需求分析本游戏共有7种类型方块,而每种类型方块还能够经过旋转变换成4种不一样形态方块进行摆放。方块生成后能够将它们摆放在一个20*10区域内,该区域能够看作是有很多个等面积小方格组成区域,而这些区域状态只有两种,被方块占据或空闲。所以,对于整个游戏区域空间是占据或空闲,能够用一位数来标识,对于7种方块和它们旋转后形态我们能够用不一样标识进行标识。对于旋转,游戏中全部方块全部是根据顺时针旋转规则进行,而且在旋转过程中它们不会因为旋转而下降,总会保持在同一高度,不过在同一高度最多旋转三次,就会下降一格,任何下坠物经过
31、一个旋转周期还会变回原型。3.4 游戏运行需求分析游戏开始后会随机产生一个方块,显示在游戏区域,同时右上角也会随机产生一个新方块,该方块为游戏区域下一个将要产生方块,游戏区域不再随机生成方块。当游戏区域方块下落到底后,新方块再次进入游戏区域,如此循环,直到游戏结束,这就是游戏正常工作。当用户进行一定操作交互时候,运行程序能够依据用户操作指示对方块进行控制,而这些操作全部是响应相关按键而实施。按键盘上键,此事件实现下坠方块旋转操作,方块并非任何情况全部能旋转,假如旋转后和已摆放好方块有冲突或超出边界时,均不能发生旋转。所以首先要判定是否有足够空间进行旋转,然后决定是否旋转。按键盘下键,此事件实现
32、下坠方块一键到底操作,使方块快速下降到游戏区域底部或已经摆放好方块之上。按键盘左键,此事件实现下坠方块左移操作,首先要判定此方块是否能够发生左移,当越界或被其它摆放好方块阻挡时,则不能左移。按键盘右键,此事件实现下坠方块右移操作。首先要判定此方块是否能够发生右移,当越界或被其它摆放好方块阻挡时,则不能右移。3.5 消行和分数统计需求分析当一个方块下落到游戏区域底部进行摆放后就要进行一次消行检测,检测是否有行被填满,检测时从刚摆放方块最上面那一行开始往下检测,因为方块形状限制可知每次最多只能消除四行,所以只需检测四行即可。检测到一行被填满时该行上面方块整体下移一行,包含空洞,然后继续检测下一行,
33、直到四行全部被检测完。消行以后要统计游戏积分,依据每次消除行数t不一样而累加不一样积分,游戏积分经过公式score+=t*t*10来计算,消除一行得10分,消除两行得40分,消除三行得90分,消除四行得160分。当分数达成一定要求后,游戏速度会加紧,游戏速度有一个最大值,当抵达这个值时,游戏速度将不再加紧。四 游戏总体设计分析4.1 总体设计思想俄罗斯方块游戏设计关键从9个方面进行构思。(1)游戏主界面设计。(2)方块设计。(3)方块旋转。(4)方块运动情况(包含向左、向右、下坠)。(5)方块自动消行功效。(6)游戏速度调整。(7)游戏积分计算。(8)游戏开始菜单设计。(9)游戏结束界面设计。
34、首先,是定义方块数据结构,这是游戏一大难点,本设计用一个三维数组来表示方块数据模型;游戏区域状态,用一个二维数组来表示。其次,分析按键含义,并做出响应。响应模块:“左移”、“右移”、“下坠”和“旋转”多个模块,负责改变目前方块状态数据;绘制方块模块:位置移动后,删除原来方块,把方块绘制到新位置上;检验模块:在每次改变状态之前,对方块企图占用区域进行检验,假如不能容下新方块,则此次移动失败,不实施移动。假如方块下落到游戏区域底端了,则应该固定在目前位置,每次当方块到底时候,全部需要检验一下是否有新行被排满了,假如有,则应消行。假如方块触顶了,则游戏结束。 俄罗斯方块是一个看似简单但比较有趣而且耐
35、玩游戏,游戏中共有7种类型方块,每种方块由4个方格组成,图4-1所表示。 0字型方块 1字型方块 S字型方块 Z字型方块 J字型方块 L字型方块 T字型方块图4-1 游戏中7种方块4.2 游戏类设计依据游戏功效,俄罗斯方块设计了8个类。这8个类分别是:ActGameover,ActivityGame,ActivityHelp,contro,showPage,StarSurfaceView,Store,TTetris,每个类实现功效各不相同,而相互之间又存在着交叉。TTetris类设计:TTetris开始菜单类,这个类继承了Activity类,作为游戏第一个界面,总共定义了三个按钮,一个能够开始
36、游戏,一个进入帮助说明界面,还有一个是退出游戏。ActivityGame类设计:ActivityGame开启游戏类,该类继承了Activity类,用来开启游戏,进入游戏画面。ActivityHelp类设计:ActivityHelp游戏帮助类,显示帮助界面,用来介绍游戏基础操作规则,该界面从开始菜单选择进入,该界面设有一个按钮,用来返回开始菜单。ActGameover类设计:ActGameover游戏结束类,该类继承了Activity类,是游戏结束画面,每当游戏失败时就会自动跳转到该界面,从该界面能够选择返回开始菜单。Store类设计:Store方块类,该类设计了方块数据结构,用一个三维数组来表
37、示一共28种方块模型,该类定义了方法Sttore(int)用来随机生成一个方块,用random()方法实现随机数产生,产生方块用两个一维数组ai,aj统计下来。表4-1 Store类属性属性名数据类型说明kindint统计产生何种类型方块colorint统计方块颜色aiint统计方格行ajint统计方格列storeint方块数据结构表4-2 Store类方法方法名返回值类型说明Store()无类结构方法Sttore(int)void产生方块,而且用ai,aj统计下来showPage类设计:showPage方块类,该类定义了游戏界面框架,用一个二维数组array来构建游戏基础框架。该类关键定义了
38、一系列方法,用来实现方块部分操作。方法putS(Store)把下一个将要产生方块存入数组,存入数组是一个数值为17整型整数,用来表示7种不一样颜色方块。delS(Store)把用来存放一个将要产生方块数组置零,从而用来实现删除下一个方块区域方块。putStore(Store,int,int)把要在屏幕对应位置上产生方块存入数组array,用17来赋值,达成显示不一样颜色方块效果。delStore(Store,int,int)把数组array对应位置清零,达成删除屏幕上对应位置方块效果。 leftM(Store,int,int)和rightM(Store,int,int)用来判定方块是否能够左右
39、移动,假如能够则返回true,不能够返回false。fit(Store,int,int)用来判定方块是否碰壁,碰壁了返回false,没有返回true。outM(Store,int,int)判定方块是否碰到游戏区域顶端,用来判定游戏是否结束。flood(Srore,int,int)检测是否能够消行,假如一行被填满,则消除该行,并统计消除行数,用来计分。remove(int)消除某一行,消除行上面方块整体下移一行。 表4-3 showPage类关键属性属性名数据类型简明说明coint用该数组按位存放游戏分数brrayint统计下一个区域方块arrayint统计游戏区域方块 表4-4 showPag
40、e类关键方法方法名返回值类型简明说明putS(Store)void把下一个方块存入数组braaydelS(Store)void把数组braay置0,即删除方块putStore(Store,int,int)void把游戏区域方块存入数组arraydelStore(Store,int,int)void删除游戏区域方块leftM(Store,int,int)boolean判定方块是否能够左移rightM(Store,int,int)boolean判定方块是否能够右移fit(Store,int,int)boolean判定方块是否碰到边界或碰到别方块outM(Store,int,int)boolean判
41、定方块是否超出屏幕顶端flood(Store,int,int)int判定是否能够消行,假如能够进行消行remove(int)void消行contro类设计:contro分数统计和速度控制类,用来统计游戏分数,并经过分数来调整方块下坠速度以提升游戏难度,增加游戏趣味性和挑战性。该类定义了方法tscore(int)用来统计游戏分数并把该分数按位存入一维数组,passWar()经过分数控制方块下坠速度,实现一个简单游戏关卡控制。表4-5 contro类关键属性属性名数据类型简明说明scoreint统计游戏分数speedint调整游戏速度scoint按位存放游戏分数表4-6 contro类关键方法方法
42、名返回值类型简明说明tscore(int)void统计游戏分数并按位存入数组scopassWar()void经过分数改变速度控制变量speedStarSurfaceView类设计:StarSurfaceView游戏框架类,该类继承了SurfaceView类,实现了Runnable,SurfaceHolder.Callback,View.OnKeyListener接口。该类用来绘制游戏运行界面,用draw()来实现视图绘制,游戏背景绘制,方块绘制,分数绘制等。run()来循环绘图,从而使游戏连续运行下去,该方法实现了游戏逻辑功效,对方块操作,方块摆放全部是在这个方法内实现,调用了draw()实现
43、循环绘制,游戏运行全部是靠该方法实现。 表4-7 StarSurfaceView类关键方法方法名返回值类型简明说明run()void游戏运行方法draw()void绘制游戏图片onKeyup(int,KeyEvent)void监听按键 五 具体设计和实现5.1 游戏开始菜单界面设计游戏开始菜单界面是游戏关键组成部分,为了增强游戏界面美化效果,同时又使界面简练直观,该界面用一张图片作为背景,添加了三个按钮,这三个按钮分别是开始按钮,帮助按钮,退出按钮。该界面由类TTetris实现,该类继承Activity类,当监听到开始按钮被点击时,游戏会跳转到游戏开始Activity,当监听到帮助按钮被点击时
44、,就跳转到帮助Activity,监听到退出键被点击时,游戏退出,该类实现起来较为简单。5.2 方块类设计和实现方块是游戏最基础元素,俄罗斯方块全部操作全部是建立在对方块操作上,方块能够用不一样颜色方格图片来显示,方块数据结构定义在类Store中。方块类定义了方块数据结构,用一个三维数组来表示7种类型一共28种方块,每一个方块由一个44二维数组表示。定义44数组是因为7种方块旋转改变恰好全部在长、宽各为4个单元格内。当数组元素为1时则显示一个小方格,为0是则不显示。这28种状态数据模型用三维数组store表示。public static int store = new int 0, 0, 1,
45、0 , 0, 0, 1, 0 , 0, 0, 1, 0 , 0, 0, 1, 0 ,/I 0, 0, 0, 0 , 0, 0, 0, 0 , 1, 1, 1, 1 , 0, 0, 0, 0 ,/I 0, 0, 1, 0 , 0, 0, 1, 0 , 0, 0, 1, 0 , 0, 0, 1, 0 ,/I 0, 0, 0, 0 , 0, 0, 0, 0 , 1, 1, 1, 1 , 0, 0, 0, 0 ,/I 0, 0, 0, 0 , 0, 1, 1, 0 , 0, 1, 1, 0 , 0, 0, 0, 0 ,/O 0, 0, 0, 0 , 0, 1, 1, 0 , 0, 1, 1, 0 , 0, 0, 0, 0 ,/O 0, 0, 0, 0 , 0, 1, 1, 0 , 0, 1, 1, 0 , 0, 0, 0, 0 ,/O 0, 0, 0, 0 , 0,