毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc

上传人:laozhun 文档编号:2394254 上传时间:2023-02-17 格式:DOC 页数:38 大小:446KB
返回 下载 相关 举报
毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc_第1页
第1页 / 共38页
毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc_第2页
第2页 / 共38页
毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc_第3页
第3页 / 共38页
毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc_第4页
第4页 / 共38页
毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc》由会员分享,可在线阅读,更多相关《毕业论文基于Android平台的俄罗斯方块的设计与实现08321.doc(38页珍藏版)》请在三一办公上搜索。

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作为Google为移动终端打造的真正开放和完整的智能手机系统,近年来受到了开发者的广泛关注。该平台由操作系统、中间件、用户界面和应用软件组成。本文主要介绍了Android平台的背景和

3、开发环境的搭建以及俄罗斯方块的开发过程,基于对Android开源平台构架的理解和开发环境的搭建完成了俄罗斯方块的游戏设计。俄罗斯方块游戏包括方块的装载、键盘的事件处理、方块操作控制、下降速度控制、到达事件处理、满行判断及消行、显示控制等几大模块。本设计采用Java语言在Android开发平台下设计实现了俄罗斯方块游戏。关键字:Android;Java;俄罗斯方块;手机游戏AbstractAs a truly opened and completed mobile platform, Android which devised by Google was concerned sidely by

4、developers in recent years. The platform 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 g

5、ame. Based on the comprehension of 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 handli

6、ng, the full line judging and vanishing 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一词的本义指“机器人”,于2007年11月5日被Google宣布为基于Linux内核的开源手机造作系统的名称。该平台由操作系统、中间件、用户界面和应

7、用软件组成,是一个为移动终端打造的真正开放和完整的智能手机系统。Android的发布吸引了众多开发者的目光,它不仅功能强大,而且具有开放和免费等先天优势,全球范围内的电信行业、手机制造商因此毫不犹豫地加入到Android开放联盟中来。随着谷歌Android智能手机平台的推出,很快便在其周围汇集了全球移动领域一大批的重量级厂商并组成了谷歌开放手机联盟(Open Handset Alliance),“开放手机联盟”表示:Android平台可以促使移动设备的创新,让用户体验到最优质的移动服务。同时,开发商也将得到一个新的开放级别,更方便地进行协同合作,从而保障新型移动设备的研发速度,因此Androi

8、d是第一个完整、开放、免费的手机平台。开发Android应用程序使用的Java语言是面向对象的编程语言,面向对象技术较好地适应了当今软件开发过程中新出现的种种传统面向过程语言所不能处理的问题,包括软件开发的规模扩大、升级加快、维护量增大以及开发分工日趋细化、专业化和标准化等,是一种迅速成熟、推广的软件开发方法。面向对象技术的核心是以更接近人类思维的方式建立计算机逻辑模型,它利用类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,使反映现实世界实体的各个类在程序中能够独立、自治、继承;这种方法非常有利于提高程序的可维护性和可重用性,大大提高了开发效率和程序的可管理性,使得面向

9、过程语言难于操纵的大规模软件可以很方便的创建、使用和维护。 本文基于 Android 开发平台,使用 Java 语言编写了俄罗斯方块游戏,通过不断的编写、调试、完善,最终使程序顺利运行。二 Android平台介绍2.1 平台背景概述 早在 2005 年,谷歌就低调收购了当时成立仅 22 个月,致力于手机软件和手机操作系统研发的高科技企业 Android,至此谷歌为其进军智能手机领域开响了第一枪。2007 年 11 月 5 日,Android 被谷歌正式公布作为自己的手机系统平台,而在未公开之前常被传闻为 Google 电话或 gPhone。Android的Logo是一个全身绿色的机器人,如图2

10、-1所示。图2-1 谷歌Android机器人标志2.2 系统概述 Android 一词的本义指“机器人”,同时也是 Google 于 2007 年 11 月 5 日宣布的基于 Linux 内核的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。它是一个为移动终端打造的真正开放和完整的智能手机系统。其早期由 Google 开发,后由开放手机联盟OpenHandset Alliance开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分,底层以 Linux 内核为基础,由 C语言开发

11、,只提供基本功能;中间层包括函数库 Library 和虚拟机 Virtual Machine, 由C+开发;最上层是由各公司自行开发,以 Java 编写的各种应用软件,如通话程序,短信程序等。Android 平台整体自底向上由以下四个层次组成:Linux 内核层、Android 运行时库和其他库层、应用框架层、应用程序层。2.3 Android系统的特点 Android系统的特点大体有如下几点:(1)开放性。Google与开放手机联盟合作开发了Android,Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动

12、产业内形成一个开放式的生态系统。(2)应用程序无界限。Android上的应用程序可以通过标准API访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可供其他应用程序使用。(3)应用程序是在平等的条件下创建的。移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。(4)应用程序可以轻松地潜入网络。应用程序可以轻松地潜入HTML、JavaScript和样式表,还可以通过WebView显示网络内容。(5)应用程序可以并行运行。Android是一种完整的多任务环境,应用程序可以在其中并行运行。在后台运行时,应用程序可以生成通知以引起注意。2.4 Android手机强大的

13、功能 Android手机的功能比起传统手机来说相当强大,其优势也很明显:(1)智能虚拟键盘。虚拟键盘的出现意味着基于Android1.5或以上版本(Android 2.0)的移动设备可以同时支持物理键盘和虚拟键盘。不同的输入方式可满足用户在特定场景的需求。Android虚拟键盘可以在任何应用中提供,包括Gmail、浏览器、SMS,当然也包括大量的第三方应用,如自动校正、推荐、用户词典等。不同于其他手机平台,Android 1.5及以上的版本还支持第三方虚拟键盘应用的安装。如图2-2所示。 (2)使用Widget实现桌面个性化。可以用Widget“武装”自己的桌面。大多数小的Web应用都是从网络

14、上获得实时数据并展示给用户的。Android预装了5个桌面Widget,包括数字时钟、日历、音乐播放器、相框和搜索。不同于iPhone,Android通过内置的应用程序安装第三方Widget。如图2-3所示。 图2-2 虚拟键盘 图2-3 用Widget实现个性化桌面(3)用在线文件夹快速浏览在线数据。类似于OS X Leopard的QuickLook特征,Android的在线文件夹可显示常见的数据条目,比如联系人、喜欢的应用、E-mail信息、播放列表、书签、RSS源等,并不需要运行系统程序处理特定的数据条目。在线文件夹数据实时更新,就像通过云或是本地创建新的数据。什么是最好的,开发者可以拓

15、展通用数据条目和注册新数据类型的内置支持。(4)视频录制和分享。Android还有录制和分享视频的功能,对回放和MPEG-4、3GP等视频格式也有了更好的支持。可以通过E-mail、MMS或直接上传到YouTube等方式来分享视频,使用隐私控制来决定是分享给朋友还是每个人。上传视频的同时,可以继续使用手机,甚至可以继续录制和上传新的视频。 (5)图片上传。在线分享图片需要的点击更少。完成照相后,当浏览图片或选择Google在线图片服务Picase时,只需轻点“分享”就会拥有1GB的免费图片存储空间。(6)更快、更兼容的浏览器。Android的基于Webkit内核的浏览器带来了重要的调速装置(S

16、peedPumb),这得益于新的Webkit渲染引擎和优化的Java脚本编译器(SquireIFish)。当使用包含大量Java脚本的复杂Web应用时,可以体验到更佳的性能。除提高速度外,Android的浏览器还支持Web页面内的复制和粘贴操作,用户可以选中文本并复制,然后粘贴到搜索框中进行搜索。(7)Voice Search语音搜索。带有语音识别技术的Google手机已于2008年11月面世,它支持语音搜索功能。该功能增强了默认的搜索能力,已超过纯文本搜索。当你大声说出要搜索的内容后,Android将上传数字信号并记录到Google服务器中。在服务器中,语音识别技术能将语音转化为特定的文本搜

17、索,使之通过Google搜索引擎,通过地理位置的筛选,将结果反馈到手机设备。(8)立体声蓝牙和免提电话。除了增强的免提电话体验,Android还支持立体声蓝牙(A2DP和AVCRP),并有自动配对功能。(9)强大的GPS技术。Android内部提供了大量的GPS组件,我们可以很轻松地获得设备当前的位置等信息,让导航等功能更加完美。(10)Android系统硬件检测。Android可自动检测和修复SD卡的文件系统,允许第三方应用显示Android系统的硬件特征。为了让用户下载到与组件的设备更匹配的应用,我们可以检测用户设备的硬件信息,让满足应用要求的设备安装该程序,当更多的Android设备建立

18、在不同的硬件上时,这个功能会显得很实用。2.5 Android应用程序框架框架是一个应用程序的核心,是所有参与开发的程序员共同使用和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性。其作用是让程序保持清晰和一目了然,在满足不同需求的同时又不相互影响。Android 系统提供给应用开发者的本身就是一个框架,所有的应用开发都必须遵守这个框架的原则。在开发应用时就是在这个框架上进行扩展,Android框架有如下功能可供使用。 android.app: 提供高层的程序模型和基本的运行环境。 android.content: 包含对各种设备上的数据进行访问和发布。 android

19、.database:通过内容提供者浏览和操作数据库。 android.graphics:底层的图形库,包含画布、颜色过滤、点、矩阵,可以将它们直接绘制到屏幕上。 android.media:提供一些类管理多种音频、视频的媒体接口。 :提供帮助网络访问的类,超过通常的.*接口。 android.os:提供了系统服务、消息传输和IPC机制。 android.opengl:提供OpenGL的工具。 android.provider:提供访问Android内容提供者的类。 android.telephony:提供与拨打电话相关的API交互。 android.view:提供基础的用户界面接口框架。 an

20、droid.util:涉及工具性的方法,例如时间日期的操作。 android.webkit:默认浏览器操作接口。 android.widget:包含各种UI元素(大部分是可见的)在应用程序的布局中使用。2.6 Android开发环境的搭建配置Android开发环境之前,首先需要了解Android对操作系统的要求。它可以使用Windows XP及其以上的版本、Mac OS、Linux等操作系统,以Windows XP为例进行讲解。Android开发所需软件的版本及其下载地址如表2-1所示。表2-1 Android开发所需软件的下载地址软件名称 下载地址JDK Eclipse http:/www.

21、eclipse.orgSDK ADT http:/dl-Android 以 Java 作为开发语言,JDK是进行Java 开发时必需的开发包。Eclipse是一款非常优秀的开源IDE,在大量插件的“配合”下,完全可以满足从企业级Java应用到手机终端Java游戏的开发,Google官方也提供了基于Eclipse的Android开发插件ADT。Eclipse的安装非常简单,直接将下载的压缩包解压即可。安装了JDK和Eclipse后,就要安装Android SDK和ADT插件了。2.6.1 Android SDK安装(1)解压缩下载好的SDK安装包到要安装SDK的路径,然后运行“SDK Stetu

22、p.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文档,如果有需要可以全部选择。(4)选择好之后点击“Install Selected”按钮,安装选中的软件包,在接下来出现的界面中依次点击“Accept All”单选按钮和

23、“Install Accepted”按钮,开始下载所选择的安装包。下载完成之后,根据提示即可完成后续的安装操作,到这里,Android SDK的安装已经完成,下面来配置Android SDK。2.6.2 Android SDK配置需要将Android SDK安装目录中的tools文件夹路径添加到环境变量中以便使用,操作步骤如下所述。(1)右键点击“我的电脑”,依次选择“属性”“高级”“环境变量”选项。(2)选择“系统变量”中变量名为“path”的项,点击编辑按钮,将Android SDK安装文件夹下的tools文件夹的路径加入到“path”变量中,注意用“;”隔开。(3)依次点击“确定”,完成

24、环境变量的配置。2.6.3 安装和配置ADTADT插件的安装和配置步骤如下所述。 (1)启动Eclipse,点击Help菜单,依次选择“Software Update”项和“Avaiable”选项,https:/dl-图2-4 添加ADT的更新地址(2)点击“OK”,这时可能会出现如图2-5所示的错误。图2-5 更新地址错误解决这个问题的方法是:将https:/dl-(3)打开菜单“Windows”,依次选择“Preferences”“Android”,点击“Browse”按钮,选择Android SDK的安装路径。(4)点击“OK”按钮,打开菜单“File”,依次选择“NEW”“Projec

25、e”菜单命令,出现“Android Projest”选项,则表示安装配置成功。到这里,准备工作已经就绪。2.6.4 模拟器的配置从Android1.5开始引入AVD(Android Virtual Device)这个概念,AVD是一个经过配置的模拟器。在创建AVD时可以配置的选项有:模拟器影像大小、触摸屏、轨迹球、摄像头、屏幕分辨率、键盘、GSM、GPS、Audio录放、SD卡支持、缓存区大小等。配置Android模拟器具体步骤如下所示。(1)首先打开“Android SDK and AVD Manager”。(2)点击左边的“Virtual Devices”选项,再点击右边的“New”按钮,

26、新建一个AVD。(3)在“Name”标签处填写AVD的名字,在“Target”标签处选择API等级,在“Size”标签处填写要创建的SD卡的大小,在“Skin”标签中设置模拟器的风格。(4)接下来,还需要配置模拟器运行的AVD。操作步骤为:点击“Run”,选择“Run Configurations”菜单命令,打开“Run Configurations”对话框,双击“Run Configurations”对话框左边的导航器中的“Android Application”菜单命令,创建一个Android项目运行配置。在右边的“Name”文本框中输入Android项目运行配置的名字,在“Android

27、”选项卡中的“Project”文本框中输入要运行的Android项目,同样可以点击右边的“Browse”按钮来选择Android项目。(5)点击“Target”选项卡,选择“Autonmatic”单选项,然后在AVD列表框中选择刚才创建的AVD,点击“Run”按钮,这样便可以运行项目了。三 俄罗斯方块需求分析3.1 游戏介绍俄罗斯方块是家喻户晓的益智小游戏,它由俄罗斯人阿列克谢帕基特诺夫(Alexey Pazhitnov)在1984年6月利用空暇时间编写的游戏程序,故此得名。俄罗斯方块的基本规则是移动、旋转和摆放游戏随机产生的各种方块,使之排列成完整的一行或多行并且消除得分。它看似简单却变化无

28、穷,俄罗斯方块上手极其简单,且游戏过程变化无穷,作为游戏本身很有魅力,但是要熟练掌握其中的操作和摆放技巧,难度却不低。此软件给用户提供了一个展现自己高超技艺的场所,在这里,它不仅放松自己,还能感受到游戏中的乐趣。游戏区域会从顶部不断落下7种下坠物的一种,游戏区域右上角有一个区域可以显示下一个下坠物的形状,玩家可以控制下坠物移动、旋转和一键到底,通过玩家的操作,下坠物在游戏区域以“摆积木”的形式出现。下坠物在一行或多行堆满后就可以自动消除,消行后会得到相应的分数,如果当前下坠物堆积至窗口顶端,则游戏结束。3.2 游戏功能分析先分析一下整个游戏的具体实现,首先,游戏有开始、切换界面、结束等操作接口

29、,而在游戏过程中,随着玩家的按键,会出现下坠物的形态变化、下坠物快速下坠、摆放下坠物件、销毁填满的行、产生下一个方块等功能。先分析游戏的特点,然后对这些功能一一进行细化,从而完成整个游戏的设计。(1)游戏方块控制功能。当玩家按下相应的操作键位时,通过条件判断,判断该操作是否可行,如果可行就执行相应的操作。主要的操作有游戏方块的左移,右移,快速下降,旋转变形。(2)方块的生成显示功能。游戏中会有两个地方产生方块,一个是游戏区域上方会有方块落下,还有就是在屏幕右上角,也会产生一个方块,该方块为游戏区域下一个要产生的方块。同时当游戏方块左右移动,下落,旋转变形时,要清除先前的游戏方块,还要求出被操作

30、后的方块坐标,用新坐标重绘游戏方块。(3)方块的摆放消行功能。当方块落到底部的时候,通过条件判断,把方块摆放在屏幕底部并持续显示,当某行或者某几行被填满的时候,要把这几行消除,并且被消除的行数上方的方块整体下移。(4)游戏分数统计功能。记录游戏积分,每当有行被消除时,游戏积分会根据一次消除的行数而增加相应的分数。(5)游戏速度更新功能。当游戏积分达到某一条件时,系统将自动为玩家提高难度。难度增加的时候,方块的下降速度会加快,增加游戏可玩性和趣味性。(6)游戏结束控制功能。通过判断,如果摆放的方块超过屏幕顶端的时候,则游戏结束,可以返回菜单重新开始游戏。3.3 方块及旋转变换需求分析本游戏共有7

31、种类型的方块,而每种类型方块还可以通过旋转变换成4种不同形态的方块进行摆放。方块生成后可以将它们摆放在一个20*10的区域内,该区域可以看作是有许多个等面积小方格构成的区域,而这些区域的状态只有两种,被方块占据或空闲。因此,对于整个游戏区域的空间是占据或空闲,可以用一位数来标识,对于7种方块和它们旋转后的形态我们可以用不同的标识进行标记。对于旋转,游戏中所有方块都是按照顺时针旋转的规则进行的,而且在旋转过程中它们不会因为旋转而下降,总会保持在同一高度,但是在同一高度最多旋转三次,就会下降一格,任何下坠物经过一个旋转周期还会变回原型。3.4 游戏运行需求分析游戏开始后会随机产生一个方块,显示在游

32、戏区域,同时右上角也会随机产生一个新的方块,该方块为游戏区域下一个将要产生的方块,游戏区域不再随机生成方块。当游戏区域的方块下落到底后,新的方块再次进入游戏区域,如此循环,直到游戏结束,这就是游戏的正常工作。当用户进行一定的操作交互的时候,运行程序可以根据用户的操作指示对方块进行控制,而这些操作都是响应相关的按键而执行的。按键盘上键,此事件实现下坠方块旋转操作,方块并非任何情况都能旋转,如果旋转后与已摆放好的方块有冲突或超出边界时,均不能发生旋转。因此首先要判断是否有足够的空间进行旋转,然后决定是否旋转。按键盘下键,此事件实现下坠方块一键到底操作,使方块迅速下降到游戏区域底部或者已经摆放好的方

33、块之上。按键盘左键,此事件实现下坠方块左移操作,首先要判断此方块是否能够发生左移,当越界或被其他摆放好的方块阻挡时,则不能左移。按键盘右键,此事件实现下坠方块右移操作。首先要判断此方块是否能够发生右移,当越界或被其他摆放好的方块阻挡时,则不能右移。3.5 消行和分数统计需求分析当一个方块下落到游戏区域底部进行摆放后就要进行一次消行检测,检测是否有行被填满,检测时从刚摆放的方块最上面那一行开始往下检测,由于方块的形状限制可知每次最多只能消除四行,所以只需检测四行即可。检测到一行被填满时该行上面的方块整体下移一行,包括空洞,然后继续检测下一行,直到四行都被检测完。消行以后要统计游戏的积分,根据每次

34、消除的行数t的不同而累加不同的积分,游戏积分通过公式score+=t*t*10来计算,消除一行得10分,消除两行得40分,消除三行得90分,消除四行得160分。当分数达到一定要求后,游戏速度会加快,游戏速度有一个最大值,当到达这个值时,游戏速度将不再加快。四 游戏总体设计分析4.1 总体设计思想俄罗斯方块游戏设计主要从9个方面进行构思。(1)游戏主界面的设计。(2)方块的设计。(3)方块的旋转。(4)方块的运动情况(包括向左、向右、下坠)。(5)方块的自动消行功能。(6)游戏速度的调节。(7)游戏积分的计算。(8)游戏开始菜单的设计。(9)游戏结束界面的设计。首先,是定义方块的数据结构,这是游

35、戏的一大难点,本设计用一个三维数组来表示方块的数据模型;游戏区域的状态,用一个二维数组来表示。其次,分析按键的含义,并做出响应。响应模块:“左移”、“右移”、“下坠”和“旋转”几个模块,负责改变当前方块的状态数据;绘制方块模块:位置移动后,删除原来的方块,把方块绘制到新的位置上;检查模块:在每次改变状态之前,对方块企图占用的区域进行检查,如果不能容下新的方块,则此次移动失败,不执行移动。如果方块下落到游戏区域底端了,则应该固定在当前位置,每次当方块到底的时候,都需要检查一下是否有新的行被排满了,如果有,则应消行。如果方块触顶了,则游戏结束。 俄罗斯方块是一个看似简单但比较有趣并且耐玩的游戏,游

36、戏中共有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类,作为游戏的第一个界面,总共定义了三个按钮,一个可以

37、开始游戏,一个进入帮助说明界面,还有一个是退出游戏。ActivityGame类的设计:ActivityGame启动游戏类,该类继承了Activity类,用来启动游戏,进入游戏画面。ActivityHelp类的设计:ActivityHelp游戏帮助类,显示帮助界面,用来介绍游戏的基本操作规则,该界面从开始菜单选择进入,该界面设有一个按钮,用来返回开始菜单。ActGameover类的设计:ActGameover游戏结束类,该类继承了Activity类,是游戏的结束画面,每当游戏失败时就会自动跳转到该界面,从该界面可以选择返回开始菜单。Store类的设计:Store方块类,该类设计了方块的数据结构,

38、用一个三维数组来表示一共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方块类,该类定义了游戏界面的框架,用一个二维数组a

39、rray来构建游戏的基本框架。该类主要定义了一系列的方法,用来实现方块的一些操作。方法putS(Store)把下一个将要产生的方块存入数组,存入数组的是一个数值为17的整型整数,用来表示7种不同颜色的方块。delS(Store)把用来存储一个将要产生的方块的数组置零,从而用来实现删除下一个方块区域的方块。putStore(Store,int,int)把要在屏幕相应位置上产生的方块存入数组array,用17来赋值,达到显示不同颜色的方块的效果。delStore(Store,int,int)把数组array相应位置清零,达到删除屏幕上相应位置的方块的效果。 leftM(Store,int,int)

40、和rightM(Store,int,int)用来判断方块是否可以左右移动,如果可以则返回true,不可以返回false。fit(Store,int,int)用来判断方块是否碰壁,碰壁了返回false,没有返回true。outM(Store,int,int)判断方块是否碰到游戏区域顶端,用来判断游戏是否结束。flood(Srore,int,int)检测是否可以消行,如果一行被填满,则消除该行,并记录消除的行数,用来计分。remove(int)消除某一行,消除的行上面的方块整体下移一行。 表4-3 showPage类的主要属性属性名数据类型简要说明coint用该数组按位存储游戏分数brrayint

41、记录下一个区域的方块arrayint记录游戏区域的方块 表4-4 showPage类的主要方法方法名返回值类型简要说明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

42、判断方块是否碰到边界或者碰到别方块outM(Store,int,int)boolean判断方块是否超出屏幕顶端flood(Store,int,int)int判断是否可以消行,如果可以进行消行remove(int)void消行contro类的设计:contro分数统计和速度控制类,用来统计游戏的分数,并通过分数来调节方块下坠的速度以提高游戏难度,增加游戏趣味性和挑战性。该类定义了方法tscore(int)用来统计游戏分数并把该分数按位存入一维数组,passWar()通过分数控制方块下坠的速度,实现一个简单的游戏关卡控制。表4-5 contro类的主要属性属性名数据类型简要说明scoreint记录

43、游戏分数speedint调节游戏速度scoint按位存储游戏分数表4-6 contro类的主要方法方法名返回值类型简要说明tscore(int)void记录游戏分数并按位存入数组scopassWar()void通过分数改变速度控制变量speedStarSurfaceView类的设计:StarSurfaceView游戏的框架类,该类继承了SurfaceView类,实现了Runnable,SurfaceHolder.Callback,View.OnKeyListener接口。该类用来绘制游戏的运行界面,用draw()来实现视图的绘制,游戏的背景绘制,方块的绘制,分数的绘制等。run()来循环绘图,

44、从而使游戏持续运行下去,该方法实现了游戏的逻辑功能,对方块的操作,方块的摆放都是在这个方法内实现,调用了draw()实现循环绘制,游戏的运行都是靠该方法实现的。 表4-7 StarSurfaceView类的主要方法方法名返回值类型简要说明run()void游戏运行方法draw()void绘制游戏图片onKeyup(int,KeyEvent)void监听按键 五 详细设计与实现5.1 游戏开始菜单界面的设计游戏开始菜单界面是游戏的重要组成部分,为了增强游戏界面的美化效果,同时又使界面简洁直观,该界面用一张图片作为背景,添加了三个按钮,这三个按钮分别是开始按钮,帮助按钮,退出按钮。该界面由类TTe

45、tris实现,该类继承Activity类,当监听到开始按钮被点击时,游戏会跳转到游戏开始的Activity,当监听到帮助按钮被点击时,就跳转到帮助Activity,监听到退出键被点击时,游戏退出,该类实现起来较为简单。5.2 方块类的设计与实现方块是游戏最基本的元素,俄罗斯方块所有的操作都是建立在对方块的操作上,方块可以用不同的颜色的方格图片来显示,方块的数据结构定义在类Store中。方块类定义了方块的数据结构,用一个三维数组来表示7种类型一共28种方块,每一个方块由一个44的二维数组表示。定义44的数组是因为7种方块的旋转变化恰好都在长、宽各为4个单元格内。当数组的元素为1时则显示一个小方格,为0是则不显示。这28种状态的数据模型用三维数组store表示。public static int store = new int

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号