基于Android连连看的设计与实现.docx
《基于Android连连看的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android连连看的设计与实现.docx(26页珍藏版)》请在冰豆网上搜索。
基于Android连连看的设计与实现
基于Android连连看的设计与实现
学院:
机电工程学院
专业:
计算机科学与技术
班级:
2012级2班
学号:
姓名:
指导教师:
答辩时间:
2015年7月10日
摘要
手机游戏是消费者利用随身携带的智能移动终端设备能随时随地来进行的游戏。
近年来,随着移动互联网和电子信息技术的迅猛发展,手机游戏市场亦得到了很大的发展。
Android是在手机应用市场和移动互联网迅猛发展的形势下应运而生的,它是由Google公司推出的一款基于Linux核的开源手机操作系统,由于其具有开放性、不受运营商的束缚、丰富的硬件选择、开发商不受任何限制和能无缝结合优秀的Google应用的特点,很快就称霸智能机平台系统领域。
进行Android平台手机游戏的研究与开发,成为一个非常有趣而又有很大发展空间的领域。
本文通过对Android应用开发的初步研究,设计出了一款基于Android平台的连连看小游戏。
在对系统进行详细需求分析的基础上,确定了系统的基本功能要求,对游戏的关卡设置、菜单界面、音效和动画、、时间控制、屏幕绘制、连通算法和布局算法进行了设计,并最终实现了一款风格清新可爱、娱乐体验丰富且性能高效稳定的手机连连看小游戏,它很好地缓冲了当今人们的紧生活节奏,为一些枯燥时刻带来另样而欢快的享受。
关键词:
手机;游戏;Android;连连看
Abstract
Mobilegamesarethegameswhichconsumerscanuseportablesmartmobiledevicesanytime,anywhere.Inrecentyears,asthemobileInternetandelectronicinformationtechnologyrapidlydeveloping,mobilegamesmarkethasalsobeenagreatdevelopment.
ThemobileapplicationmarketandtherapiddevelopmentofmobileInternetsituationmakeAndroidcameintobeing,itisbyGoogleInc.launchedaLinux-basedopensourcemobileoperatingsystemkernel,becauseofitsopenness,freefromtheshacklesofoperators,richhardwareoptions,developerswithoutanyrestrictionsandcanseamlesslyintegrateGoogleAppsexcellentcharacteristics,soondominatethesmartphoneplatformsystemfields.ConductresearchanddevelopmentoftheAndroidplatformmobilegames,havingbecomeaveryinterestingareaofgreatdevelopmentspace.
BasedonthepreliminarystudyonAndroidApplicationDevelopment,amodelbasedontheAndroidplatformLianliankangamehasbeendesignedsucceed.Inthesystem,basedondetailedneedsanalysistodeterminethebasicfunctionalrequirementsofthesystem,setupcheckpointsonthegame,themenuinterface,soundandanimation,andtimecontrol,screendrawing,connectivityandlayoutalgorithmsalgorithmdesign,andultimatelyachieveafreshstylecute,richentertainmentexperienceandtheperformancestableandefficientmobileLianliankangame,itiswellcushionedthepaceoflifetoday,tension,assomeoftheboringmomentsbringsanotherkindandcheerfulenjoyment.
Keyword:
Mobile;games;Android;Lianliankan
第1章引言
1.1Android简介
Android是Google于2007年11月5日宣布的基于Linux平台的手机开源操作系统,它由操作系统、中间件、用户界面和应用软件组成,采用了软件堆层的架构,是首个为移动终端打造的真正开放和完整的移动软件[1]。
Android的一个很大优势在于其不仅免费,而且开源,在Android上开发软件并没有限制使用什么语言或技术,这就意味着任何企业、组织和个人都可以使用Android系统,这使得开发者在为其开发程序时拥有更大的自由度,而随着Android的不断发展,国厂商和运营商也纷纷加入了Android阵营,组建并形成了开放手机联盟(OpenHandsetAlliance),共同研究开发Android操作系统。
Android的系统架构主要分为四层[2],从高到低分别是由运行在Dalvik虚拟机上的应用程序组成的应用层,开发人员直接调用组件组成的应用框架层,对应用框架层提供支撑的系统运行库层和包括驱动、存管理、进程管理、网络协议栈等组件的Linux核层。
同时,Android拥有一组核心库[3],这些库能被Android系统中的不同组件使用,它们通过Android应用程序框架为开发者提供服务,该核心库提供了JAVA编程语言核心库的大多数功能;每一个应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机。
Android这个平台对于Google对于大众的意义不在于手机本身,Android存在的目的也不在于挑起手机操作系统之间的混战,而在于推动移动互联网产业链的迅速成型。
具有开源特性的Android平台打破了之前Symbian、windowsmobile等操作系统收取高额的授权费用的模式,使得只能手机成本大大的降低;而正是由于它开发源代码,使得手机产生更多个性化的应用。
同时,合作方能够在这里得到利润或者创造价值,手机软件行业得到维护协调发展。
以Google、苹果和路基亚为中心各自形成的生态链将以原来数倍的速度推动移动互联网的发展,这正式Google发布Android平台的意义,也是Andorid平台存在的使命所在。
而作为Android平台成员之一的中国移动也投资成立了一家通讯公司,专门从事Google手机软件的应用以与本地化的软件的开发,比如将在Google手机平台上添加飞信、输入法等一系列符合国用户使用特色的功能。
国众多企业也将眼光投入到Andorid上面,并启动了相关的计划来深入的理解并发展Android。
更多的手机软件开发企业已经或者筹备着将公司进行转型,从其方向的开发转向到Android的开发。
综上所述,无论是在国还是在国外,Android平台对手机软件行业和移动手机平台将发挥极推动作用,而在未来的几年或者一段时间,Android将越发的凸显自己的重要性。
基于此本文将有Android平台在eclipses环境下开发了一款大学生日程管理系统,它将个人日程管理、课程表管理、定时提醒、安全设置等整合成一个多功能软件,特别是考虑到课程表中特殊的课程安排,在课程表上设置了单双周,自动删除等许多特殊设置,以满足大学生的特定需求。
1.2Android平台的相关理论
Android是Google于07年11月5日宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成。
Android是Google开发的基于Linux平台的开源手机操作系统。
它包括操作系统、用户界面和应用程序——移动工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。
谷歌与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在的30多家技术和无线应用的领军企业组成。
通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动软件平台,在移动产业形成一个开放式的生态系统。
1.3Android系统的特点
1.开放性。
Google与开放手机联盟合作开发了Android,Google通过与运行商、设备制造商、开发商和其他有关各方面结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动软件平台,在移动产业形成一个开放式的生态系统。
2.应用程序无界限。
Android上的应用可以通过标准API访问核心移动设备功能。
通过互联网,应用程序可以声明它们的功能可提供其他应用程序使用。
3.应用程序是在平等的条件下创建的。
移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。
4.应用程序可以轻松地嵌入网络。
应用程序可以轻松地嵌入HTML、JavaScript和样式表,还可以通过WebView显示网络容。
5.应用程序可以并行运行。
Android是一种完整的多任务环境,应用程序可以在其中并行运行。
在后台运行时,应用程序可以生成通知以引起注意
1.4Android的功能
1.支持虚拟键盘。
虚拟键盘的出现意味着基于Android1.5或以上版本的移动设备可以同时支持物理键盘和虚拟键盘。
2.使用Widget实现桌面的个性化。
可以用Widget修饰自己的桌面。
大多数小的web应用都是从网络上获得实时数据并展示给用户的。
Android预装了5个桌面Widget,包括数字时钟、日历、音乐播放器、相框和搜索。
3.用在线文件夹快速游览数据。
类似于OSXLeopard的QuickLook特征,Android的在线文件夹可显示常见的数据条目,比如联系人、喜欢的应用、信息、播放列表、书签、RSS源等,并不需要运行系统程序处理特定的数据条目。
4.视频录制和分享。
Android还有录制和分享视频的功能,对回放和MPEG-4、3GP等视频格式也有了更好的支持。
可以通过、MMS或直接上传到YouTube等方式来分享视频。
5.图片上传。
在线分享图片需要的点击更少。
完成照相后,当浏览图片或选择Google在线图片服务Picasa时,只需轻点“分享”就会拥有1Gb的免费图片存储空间。
6.更快、更兼容的游览器。
Android的基于Weskit核的游览器带来了重要的调速装置(Speedup),这得益于新的Weskit渲染引擎和优化的Java脚本编译器(Squirrelfish).
7.VoiceSearch语音搜索。
带有语音识别技术的Google手机已于2008年11月面世,它支持语音搜索功能。
该功能增强了默认的搜索能力,已超过纯文本搜索。
8.立体声蓝牙和免提。
除了增强的免提体验,Android还支持立体声蓝牙(A2Dphe和AVCRP),并有自动配对功能。
9.强大的GPS技术。
Android部提供了大量的GPS组件,我们可以很轻松地获得设备当前的位置等信息,让导航等功能更加完美。
10.Android系统硬件检测。
Android可自动检测和修复SD卡的文件系统,允许第三方应用显示Android系统的硬件特征。
为了让用户下载到与自己的设备匹配的应用,我们可以检测用户设备的硬件信息,让满足应用要求的设备安装该程序,当更多的Android设备建立在不同的硬件上时,这个功能显得很实用。
第2章Android移动平台下的研究
2.1Android移动平台开发研究过程
Android移动平台作为21世纪的新秀,受到了越来越多的开发者的追捧,在这股发的浪潮中,逐渐形成了具有Android一套具有Android特色的开发流程。
由于Android的优越性,其开发显得非常的有规律性可寻。
大致的开发流程如下:
(1)需求分析。
作为一个软件,它必须有其存在的意义和价值。
而这价值和意义就需要靠需求分析来确定。
(2)功能分析。
作为一个手机软件,它的使命就是给用户使用的。
如何提供用户最好的用户体验就值得每一个程序员的深思。
这也是确保一个程序成功的关键所在。
(3)界面设计。
作为一个手机软件,其只能在极有限的区域中显示自己。
如何有限的空间里面更完美的展现出自己的独特之处就显得尤为重要了。
(4)系统开发。
作为一个软件的主体部分,系统开发的好坏直接决定了该系统的性能和寿命。
(5)测试。
在任何一个软件开发行业中,无论是J2EE、J2SE、J2ME等等其他开发中,测试时必不可少的一环。
在Android开发中,由于手机的搞频率使用,和硬件系统上的不足,使得对软件的要求更加的严格,这就要求在开发完成后,在对其进行严格的测试。
而测试又包括了像:
单元测试、系统测试等等方面的测试。
(6)发布。
在完成了一个系统的开发后,就要将其发布,经过广大用户的考验,只有经过这,才算是一个合格的产品。
在Android平台中,Google提供了一套完整的发布机制——Googlemarket。
2.2Android移动平台下的应用研究
Android系统提供给应用开发者的本身就是一个框架,所有的应用开发都必
须遵守这个框架的原则。
我们在开发应用时就是在这个框架上进行扩展,下面来看看Android这个框架都有些什么功能可供我们使用。
android.app:
提供高层的程序模型和基本的运行环境。
android.content:
包含对各种设备上的数据进行访问和发布。
android.database:
通过容提供者浏览和操作数据库。
android.graphics:
底层的图形库,包含画布、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上。
android.location:
定位和相关服务的类。
android.media:
提供一些类管理多种音频、视频的媒体接口。
:
提供帮助网络访问的类,超过通常的.*接口。
android’s:
提供了系统服务、消息传输和IPC机制。
android.opengl:
提供OpenGL的工具。
android.provider:
提供访问Android容提供者的类。
android.telephony:
提供与拨打相关的API交互。
android.view:
提供基础的用户界面接口框架。
android.util:
涉与工具性的方法,例如时间日期的操作。
android.webkit:
默认浏览器操作接口。
android.widget:
包含各种UI元素(大部分是可见的)在应用程序的布局中使用。
2.3本章小结
本章介绍了开发本系统所需要使用的技术,主要包括Java技术和Android技术。
其中又详细给出了Java与Android的关系、Java简介、Java语言特性,Android架构简介、Android开发技术简介。
第3章需求分析与系统设计
分析并设计系统功能架构如图3.1所示:
图3.1系统功能架构图
游戏基本规则:
在游戏地图上,每次选择两个相同的图案进行连接,若连接成功则消除它们。
若在系统限制的时间地图上所有的图案都得以消除,则玩家顺利通过此关,进入下一关。
每通过一个关卡,系统限制时间都会递减10秒,直至所有的关卡完毕。
在游戏过程中,玩家可以使用道具帮助,它提供了3次地图刷新和3次图案自动消除提示机会。
3.2系统概要设计
该系统实现的是一款基于Android平台的“连连看”游戏,玩家打开游戏,进入欢迎界面,显示标识开始游戏的图像按钮。
当玩家点击标示开始游戏的图像按钮后,进入游戏界面。
这时,若在系统规定的时间消去所有图片则弹出成功对话框,否则弹出失败对话框,这两个对话框上都附带着菜单界面:
若玩家点击该界面上标识进入下一关的图像按钮,则进入下一个关卡;若玩家点击该界面上的标识退出游戏的图像按钮,则退出连连看游戏程序;若玩家点击该界面上的标识重新本关游戏的图像按钮,则重新开始本关游戏。
在游戏过程中,玩家还可以使用道具,一种是重新刷新地图,另一种则是系统帮助自动消除图案,每个道具都只能使用3次。
3.3系统详细设计
从总体出发,将该系统划分为四大模块:
“菜单设计”,“界面设计”,“消息响应设计”和“算法设计”。
如图3.2所示:
图3.2系统总体设计
这四大模块又可以进一步划分如下:
(1)菜单设计,可进一步划分为三个模块,分别是:
“退出游戏”,“重新开始”,“进入下一关”,如图3.3所示:
图3.3菜单设计
(2)界面设计,可进一步划分为:
“框架设计”,“进度条设计”和“地图设计”,如图3.4所示:
图3.4界面设计
(3)消息响应设计,可进一步划分为:
“鼠标响应”,“绘图响应”和“时间响应”,如图3.5所示:
图3.5消息响应设计
(4)算法设计,它可继续划分出两个模块:
“画线设计”和“消除算法设计”,如图3.6所示:
图3.6算法设计
其中,消除算法设计是整个系统的核心算法,现对其分析如下:
每次当用户选择两个图案时,如果这两个图案完全一样,并且这两个图案之间存在着不受其它图案阻拦的拐角少于3的路径,那么这两个图案可以被成功消除。
给定任意具有相同图案的两个格子,我们需要先寻找出这两个格子之间能直角转弯最少的路径,如果这条最优路径的拐角数小于3,则这两个格子可以被成功消除。
从其拐角数出发,具体又可分以下三种情况:
1)零拐角。
直接连接消除。
2)一拐角。
若1失败,则尝试在第一个格子的同行,第二个格子的同列找一个空格子,看这个空格子与两个目标格子能否零拐角连接;或在第二个格子的同行,第一个格子的同列找一个空格子,看这个空格子与两个目标格子能否零拐角连接。
成功则可将两格子“一拐角”连接消除。
3)两拐角。
若2失败后,再进行如下尝试:
在第一个格子的同行寻找一个空格子,看它是否能与目标格子2以“一拐角”方式连接消除;或在第一个格子的同列寻找一个空格子,看它是否能与目标格子2以“一拐角”方式连接消除。
若成功则两个格子“两拐角”消除,若所有的尝试都失败,则说明这两个格子不能消除。
3.4本章小结
本章从操作、技术、经济、社会四大方面对系统的可行性进行了详细分析,并结合了系统的需求分析初步设计了系统,其中还包括了系统的基本流程设计以与模块的划分与设计,并最终定位了可爱的系统风格。
这些为下一章的系统的实现打下了基础。
第4章系统实现与测试
4.1菜单设计说明
1、程序描述
主要功能:
用于为玩家提供操作提示,便于玩家了解游戏的规则。
可扩展性:
能够适应应用要求的变化和修改,具有灵活的可扩充性。
2、功能
主要有开始游戏、游戏设置、游戏规则、退出游戏等几个选项
游戏设置的菜单
3、性能
当用户选择菜单时能够快速反应,以满足用户的要求。
4、输人项
用户点击按钮
5、输出项
五个菜单项选择项
6、算法
//定义菜单类,接口为OnClickListener,用于接收用户的单击消息。
publicclassStartActivityextendsActivityimplementsView.OnClickListener
//设计5个按钮用于接收按钮消息:
privateButtonbtnStart;
privateButtonbtnSet;
privateButtonbtnRole;
privateButtonbtnAbout;
privateButtonbtnExit;
//在OnCreate函数中将它们初始化:
//获取按钮
btnStart=(Button)findViewById(R.id.btnStart);
btnSet=(Button)findViewById(R.id.btnSet);
btnRole=(Button)findViewById(R.id.btnRole);
btnAbout=(Button)findViewById(R.id.btnAbout);
btnExit=(Button)findViewById(R.id.btnExit);
//注册点击事件
btnStart.setOnClickListener(this);
btnSet.setOnClickListener(this);
btnRole.setOnClickListener(this);
btnAbout.setOnClickListener(this);
btnExit.setOnClickListener(this);
在OnClick函数中对响应进行处理:
setContentView(newGameView(this));//进入游戏,游戏在GameView类中进行了封装
//说明游戏规则
newAlertDialog.Builder(this).setMessage("1.将相同的两图片用三根以的直线连在一起就可以消除\n"+
"2.每消除一次图片,都会使可用时间增加\n"+"3.每隔一段时间,当前的界面中的图片会进行重排列\n"+
"4.在规定的时间里,当所有的图片都消除时,即为胜利\n"+"5.规定的时间有图片未消去,即为失败\n")
.setPositiveButton("确定",null).show();
//完毕游戏
this.finish();
//进行游戏设置,设置游戏的难度,调用了SetActivity类
intent.setClass(this,SetActivity.class);
7、接口
API函数
8、限制条件
无明显限制条件
4.2界面设计说明
4.2.1程序描述
主要功能:
用于为玩家提供可视化的游戏界面,增加了游戏的可玩性。
可扩展性:
能够适应应用要求的变化和修改,具有灵活的可扩充性。
4.2.2功能
生成游戏界面,生成进度条。
如以下图:
4.2.3性能
能够快速的随机生成符合用户需要的界面
4.2.4输人项
无输入
4.2.5输出项
游戏界面
4.2.6算法
//定义游戏视图类
publicclassGameViewextendsView
//存储素材图片
publicint[]imageType
//保存所有小格子中的图片
publicint[][]grid=newint[row][col];
//初始化加载图片的类型
publicvoidinitType(){
//总共要