1、 河北农业大学 本科毕业论文(设计) 题 目: 宝石对对碰 摘 要 游戏设计的历史很悠久,几千年来,从最古老的非洲的Awari游戏,到现在最为优雅的游戏-围棋,人们设计和玩过的游戏不计其数,许多游戏已经随着时间遗失在历史的长河中了。除了经典游戏之外,人们总是对新游戏感兴趣,因此一直有对新游戏设计的需求。 手机游戏: 指用户利用随身携带具有广域无线网络联机功能(GPRS 或CDMA)的移动终端设备(手机),随时随地进行的游戏。简单说手机游戏是指运行于手机上的游戏软件。 本文介绍了手机游戏对对碰的开发过程。论文遵循软件工程的方法,详尽论述了从需求分析、系统分析、概要设计、详细设计、以及测试与调试的
2、整个开发过程,总结了开发过程中的经验及本系统今后的改进方向。本系统开发成功后可以实现对对碰游戏的登陆,注册,以及游戏的娱乐功能。Xcode 5.0开发工具,采用成熟的软件研制技术,后台数据库采用Sqlite3。关键词 : 对对碰, Xcode 、 Sqlite3 AbstractGame design is a long history, thousands of years, from the most ancient Africa Awari game, now the most elegant game, chess, people design and play the game to
3、o many to count,many games have the time lost in the long river of history.In addition to the classic game, people are always interested in new game, so there has been to the new demand of the game design. Mobile phone game:refers to carry awire less wide area network online function using the user(
4、GPRS or CDMA) of the mobile terminal(mobile phone),whenever and wherever possible the game.Simple said mobile phone game is running on the mobile phone game software.This paper introduces the development process of mobile phone games on colliding. Methods according to the software engineering, discu
5、ssed in detail from the demand analysis, system analysis, outline design, detailed design, and test and debug the entire development process, summed up the improvement direction of the experience of the development process of the system and future.After the success of the system development can be a
6、chieved on the puzzle game landing, registration, and entertainment function. Xcode 5 development tools, the use of mature software development technology, back-end database using Sqlite3. Keywords: two of a kind, Xcode, Sqlite3 目 录 1. 绪论.3 1.1课题背景.3 1.2 选题依据和研究意义.3 1.3 研究现状和发展态势.42 相关开发工具的技术简介.4 2.
7、1 IOS开发技术.5 2.2 Xcode开发工具介绍.6 2.3 面向对象理论的介绍.6 2.4 SQLite的介绍.73 游戏分析与总体设计.7 3.1游戏功能及规则描述.7 3.2 游戏流程分析.8 3.2.1 登陆模块.9 3.2.2 注册模块.10 3.2.3 主页模块.11 3.2.4 游戏模块.124 游戏界面实现.13 4.1 登陆界面.13 4.2 注册界面.14 4.3 主界面.16 4.4 游戏界面.175 核心代码实现和程序的设计模式.17 5.1游戏规则的核心算法.17 5.2 IOS开发中的代理模式.29 5.3 IOS中的MVC设计模式.306 结束语.317 参
8、考文献.328 致谢.33 1. 绪论1.1课题背景 现在的移动电话是小型的计算机,它的处理能力与台式机的标准处理能力相比很有限,但是足够运行一个小型的游戏。 现在的手机的一个特性就是它们还是网络计算机,能够高速发送和接收数字数据。 除了语音数据以外,它们还可以发送和接收其它类型的数据。所以类似传奇、千年这样的网络游戏也可以在手机上实现。 当然就处理能力和性能而言,当前阶段的支持Java的手机很接近第二代控制台游戏机、80年代中期的家用电脑和早期的手持游戏机。内存通常很有限-一般128KB到500KB-虽然有些智能手机比如Nokia 3650有4 MB内存。与PC相比,它们的输入和显示功能也很
9、有限;小屏幕(许多仍然是黑白屏幕),为电话拨号优化的小键盘并不针对文本输入,以及有限的声音处理能力,中国电子游戏产业的发展,是从上个世纪的80年代末开始兴起的,市场展现过的有大型机游戏、家用游戏、掌机游戏、PC机游戏、动漫游戏、网络游戏、手机游戏等几大类游戏。 80年代末是大型机游戏时代,主要经营游戏厅。90年初家用游戏和掌机游戏发展较快,主要产品面向家用。到了90年代中期,个人计算机普及很快,因此PC机游戏比较流行。 随着网络技术的发展,从2000年开始盛行网络游戏。现在,网络游戏发展很快,是目前游戏产业中规模较大的一个种类。最近几年,手机游戏、动漫、卡通又开始迅速发展。游戏产业发展很快,
10、游戏种类不断变化。 1.2 选题依据和研究意义 作为运行于手持设备上的应用程序,手机的硬件特征决定了手机游戏的特点。那什么是手机游戏呢?相信大家都知道吧!手机游戏是指运行于手机上的游戏软件。目前用来编写手机最多的程序是Java语言,见J2ME。其次是C语言。 是的,就是如此,中国市场以及全球市场庞大的手机用户群,都为手机游戏的发展奠定了良好的基础。而现在手机本身硬件的发展,也为其支持多项游戏的运行提供了可靠的保障! (1) 庞大的潜在用户群 全球在使用的移动电话已经超过10亿部,而且这个数字每天都在不断增加。在除美国之外的各个发达国家,手机用户都比计算机用户多。手机游戏潜在的市场比其他任何平台
11、,比如PlayStation和GameBoy都要大。 (2) 便携性 在控制台游戏时代,GameBoy热销的一个原因就是便携性人们可以随时随地沉浸在自己喜欢的游戏中。和游戏控制台或者PC相比,手机虽然可能不是一个理想的游戏设备,但毕竟人们总是随时随身携带,这样手机游戏很可能成为人们消遣时间的首选。(3)支持网络因为手机是网络设备,在一定限制因素下可以实现多人在线游戏。现在腾讯的多款游戏、盛大的游戏都支持手机登陆的。 是的,拥有这么大的市场前景和用户群体,手机游戏的迅猛发展是势不可挡的,接下来,都会有更多更好的网络游戏不断面世,相信对于广大的用户朋友来说都都是值得欣喜的! 1.3 研究现状和发展
12、态势.在科技技术与互联网高速发展的社会中,手机游戏能够给人们带来随时随地的并具有广域无线网络联机功能的休闲互动娱乐体验,以获取在现实生活中的精神与娱乐上的享受,在某种程度上满足人们本身的希冀,是一种精神世界地释放。wsn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商wsn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商 近几年来,手机游戏快速发展的同时按内容可分为:角色扮演类、冒险类、格斗类、体育竞速类、电影改版类、棋牌类、益智类、模拟类。纷繁的手机游戏种类已成为人类线上娱乐生活的不可缺少的最主流载体而存在,各类智能手机伴随着PC网络游戏为基础、3G网络的
13、不断强化为措施的条件下大力迅猛发展手机网络游戏。虽然手机游戏的用户越来越多,丰富多彩的游戏种类给玩家带来了更多的选择,但是我国的手机游戏行业的发展现状并不乐观,主要因素有:1)高质量游戏软件开发公司和人才的贫乏,导致无优秀游戏打人市场。2)游戏创意的匮乏。大多游戏都只是一味跟风,看到某个游戏成功赢得市场,便改换场景风格、人物造型、故事背景等,其游戏核心一沉不变的思维理念会使玩家产生审美 疲劳。wsn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商wsn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商 随着手机游戏的商业模式进一步凸显,人们对手机的休闲娱乐功能
14、需求越来越强烈,手机游戏已成为现代人们生活娱乐中必不可少的主流移动终端设备。游戏应用服务市场促使手机平台的不断提升 而日新月异。据中咨网研究部调研显示,2012年底,我国手机游戏产业有了突飞猛进的发展,手机 游戏使用用户比例高达到80以上,市场规模超过 16亿元人民币。在未来,游戏产品能否在市场中脱颖而出,一切取决于你能玩出什么花 样来,这将激发更多的开发商和制作人员攻坚克难 创造出高质量的作品,面对手机游戏自身的趣味性、 易掌握性、可中断性、交互性,游戏厂商也将面临亘 古未见的激烈竞争。由此可见,手机游戏已是人们日常生活中密不或缺的休闲娱乐方式。这强有力的促使具有朝阳产业的手机游戏行业朝着健
15、康有序的 方向大步前进。2 相关技术的选用与介绍2.1 IOS开发技术IOS是iPhone,iPod touch以及iPad等设备的核心操作系统。IOS平台使用了构建Mac OS X时积累的知识,IOS SDK提供了创建IOS应用程序所需要的环境和工具,利用IOS SDK开发应用时所用的编程语言是Objective-C。IOS平台开发工具和开发技术源于Mac OSX,都是以UNIX为基础。IOS应用程序开发依赖于iPhone软件开发包(SDK),其中SDK继承与Xcode中。从整体上看,IOS扮演底层硬件和应用程序的中介。创建的应用程序不能直接访问硬件,而需要和系统接口进行交互。IOS实现可以
16、看作多个层的集合,底层为所有程序提供基础服务,高层则包含一些复杂的服务和技术。Cocoa touch层提供了基本的系统行为支持,当需要实现更为复杂的行为和界面时,才考虑向下层探寻技术支持。 UIKit框架:提供程序运行必须得关键对象,使APP能够捕获用户输入和在屏幕上显示内容。MapKit框架:IOS3.0 引入该框架,可被嵌入到应用程序的地图界面,该框架包含一个可以滚动的地图视图。Address Book UI框架:IOS3.0引入该框架,用于撰写电子邮件,并将其放入到用户的发件箱排队等候发送。Message UI框架: 显示创建或者编辑联系人的标准系统界面。Media层包含图形、音频、视频
17、等技术。AV Foundation框架:用于播放和编辑复杂的音频和视频。Core Image框架:包含高级图像和视频处理功能。如人脸识别和图像过滤功能。Core Graphics框架:包含2D绘画和合成功能。Media Player框架: 提供典型的屏幕控件用于播放电影。Quartz Core框架:包含Core Animation 接口。用于实现复杂的动画和视觉效果。Core service层用于访问较多低级的操作系统服务,如文件存取,联网和常见的数据对象类型。Foundation 框架: 为Core Foundation框架的许多功能提供Objective-C封装。Core Foundati
18、on 框架:一组C语言的接口,为IOS应用程序提供基本数据管理和服务功能。Core Location框架:用于定位设备当前经纬度。System Configuration:用于确定设备网络配置的当前状态。IOS开发限制介绍(1) 平台间差异:iPhone OS 设备和台式机或笔记本电脑的开发的不同,也和桌面应用程序不同,需要意识到终端开发的特殊性。(2)屏幕大小的限制:由于iPhone OS 设备具有高分辨率的小型屏幕,在iPhone5之前设备都是3.5in,iPhone5以及iPhone5c,iPhone5s都是4.0in,在设计应用时需要注意不要放置非必要的元素。(3)内存限制:IOS的内
19、存非常有限,避免分配超出设备的可用内存,不然应用程序将终止。当发生内存过低时,IOS系统将发出警告,需要进行及时清理内存。同时需要注意避免内存泄露。(4)窗口显示限制:在IOS环境上,用户每次只能看到单个窗口。多个窗口只能顺序访问和查看。(5)电量限制:iPhone OS设备是通过电池供电,而高速运转的系统,大屏幕,上网或看电子书都会消耗电量。2.2 Xcode开发工具介绍Xcode: IOS集成开发环境,也是编译器,负责管理应用程序工程。Interface Builder:快速原型开发工具,可视化的组装用户UI接口的工具,集成在Xcode中。Instruments:功能强大的性能调试工具,以
20、及内存分析工具。iPhone Simulator:Mac OS X平台应用程序,它是模拟应用程序,但不能完全模拟所有功能。IOS SDK:ISO软件开发工具包。2.3 面向对象理论的介绍从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。对象是要研究的任何事物。从
21、一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。在对内的操作通常称为方法。类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。消息是对象之间进行通信的一种规格说明。一般
22、它由三部分组成:接收消息的对象、消息名及实际变元。三大特性:封装性:封装是一种信息隐藏技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能看见到对象的外特性(对象能接受哪些消息,具有哪些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。继承性:“继承”是面向对象软件技术当中的一个概念。如果一个类A继承自另一个类B,就把这个A称为“B的子类”,而把B称为“A的父类”。继
23、承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。另外,为子类追加新的属性和方法也是常见的做法。多态性: 对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的消息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。多态的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这
24、样,在这些低层次上生成的对象就能给通用消息以不同的响应。类的多态性提供类方法的多样性,多态性有两种表示方式:重载和覆盖。2.4 SQLite的介绍SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们
25、都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有14个年头,SQLite也迎来了一个版本 SQLite 3已经发布。同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的觉得有点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么你可以考虑使用SQLite。到2013年10月17日最新版本是 3.8.1 。它的官方网站是:http:/www.sqlite.org或者http:
26、/www.sqlite .com .cn,能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士 3 游戏分析与总体设计3.1游戏功能及规则描述游戏在 8 10 格子的游戏池中进行。每个格子中有一个宝石的图片。鼠标连续选中两个相邻的图片,它们的位置会互换,互换后如果横排或竖排有 3 个以上相同的头像,则可以消去该头像,并得分。 基本规则交换 玩家选中相邻(横、竖)的两个图片,则这两个图片的位置发生互换,如果互换成功则消去图片,否则位置交换。消去 玩家选择两个宝石的图片进行位置互换,互换后如果横排或竖排有 3 个以上相同的宝石的图片,则消去这
27、几个相同的宝石的图片,如果互换后没有可以消去的宝石的图片,则换位置。消去后的空格由上面的宝石的图片掉下来补齐。每次消去宝石的图片玩家都能得到一定的分数。连锁 玩家消去宝石的图片后,上面的头像掉下来补充空格。如果这时游戏池中有连续摆放(横、竖)的 3 个或 3 个以上相同的宝石的图片,则可以消去这些头像,这就是一次连锁。空格被新的宝石的图片填充,又可以进行下一次连锁。每次连锁会有加分。 3.2 游戏流程分析3.2.1 登陆模块 是 否 是 3.2.2 注册模块 是 否 是 否 否 是 3.2.3 主页模块 3.2.4 游戏模块 是 否 是 否 4 游戏界面实现4.1登陆界面 4.2 注册界面 4
28、.3 主界面 4.4游戏界面 最上面记录玩家的昵称,当前得分,以及最高分,点击返回,到上一个界面。 5 核心代码实现和程序的设计模式5.1 游戏规则的核心算法-(void)distributeStoneType if(!_isReloading) for(int i = 0;iKRow;i+) for(int j = 0;j0 & i0) while (_stoneTypeij=_stoneTypeij-1 |_stoneTypeij = _stoneTypei-1j) _stoneTypeij =arc4random()%KStoneTypeNumber; continue; if (i 0
29、) while (_stoneTypeij = _stoneTypei-1j) _stoneTypeij =arc4random()%KStoneTypeNumber; continue; if (j 0) while (_stoneTypeij = _stoneTypeij-1) _stoneTypeij =arc4random()%KStoneTypeNumber; continue; else _scoreLab.text = NSString stringWithFormat:Score:%,_player.lastScore; NSLog(读取游戏进度:%,_player.gameP
30、rocess); NSArray* arr = _player.gameProcess componentsSeparatedByString:|; for(int i = 0;iKRow;i+) for(int j = 0;jKCol;j+) NSInteger num = i*KCol + j; NSString* score = arr objectAtIndex:num; _stoneTypeij =score integerValue; /宝石按钮-(void)createStoneBtn for(int i = 0;iKRow;i+) for(int j = 0;jKCol;j+)
31、 StoneBtnModel* model = StoneBtnModel alloc init; UIButton* btn = UIButton buttonWithType:UIButtonTypeCustom; btn.tag = KStoneImageButtonTag+i*KCol+j; model.stoneType = _stoneTypeij; model.stoneRow = i; model.stoneCol = j; UIImage* image = BuildingStoneView shareStoneView getStoneImageWith:model.sto
32、neType; btn.frame = CGRectMake(KStoneImageOriginX+KBackViewHeight*j,KStoneImageOriginY+i*KBackViewHeight, KImageWidth, KImageHeight); btn setImage:image forState:UIControlStateNormal; btn addTarget:self action:selector(StoneImageBtnClicked:) forControlEvents:UIControlEventTouchUpInside; model.stoneBtn = btn; model.btnTag = btn.tag; _stoneBtnArr addObject:model; -(void)exchangeStone:(NSInteger)tag1 withTag:(NSInteger)tag2 StoneBtnModel* model1 = _stoneBtnArr objectAtIndex:tag1-KStoneImageButtonTag; StoneBtnModel* model2 = _st