拼图游戏设计与开发.doc
《拼图游戏设计与开发.doc》由会员分享,可在线阅读,更多相关《拼图游戏设计与开发.doc(21页珍藏版)》请在冰点文库上搜索。
毕业设计说明书
标题:
拼图游戏设计与开发
学生姓名:
系部:
信息工程系
专业:
软件技术
班级:
动漫1201
指导教师:
湖南汽车工程职业学院教务处制
21
目录
1引言 3
1.1游戏的开发背景 3
1.2游戏实现的意义 3
1.3本章小结 4
2系统可行性 5
2.1技术路线选择 5
2.2技术可行性分析 6
2.3系统的整体进度安排 6
2.4运行环境 6
2.5本章小结 7
3系统设计 8
3.1系统结构化分析 8
3.2系统设计方案拟定 9
3.3系统设计方案修订 10
3.4系统设计方案定稿 10
3.3本章小结 13
4系统实现 14
4.1过关判定功能实现 14
4.2碎片随机出现功能实现 15
4.3碎片位置的判断功能实现 16
4.4本章小结 17
参考文献 19
致谢 20
1引言
1.1游戏的开发背景
拼图游戏并非一开始便形成今天的面貌,它经历了一个发展、演变过程。
1762年。
英国制图家约翰·史皮尔斯布里(JohnSpils-bury)为了改进地理教学,将一块块拼图应用在地理科的教材上,拼图的每一块可以代表一个国家、一个省份或地区,将它们完整地拼凑起来,就可以形成一个洲、一个国家。
这样,枯燥的地理方位知识,借助于具体生动的拼图,就被学生所理解和强化了。
这种教学方法,时至今日还在有些中学中运用,确实有十分独到的记忆深化效果。
史皮尔斯布里以后又将整个地图设计成拼图游戏的形式。
随后,拼图逐渐突破教学的功能,朝着娱乐的方向发展。
早期的拼图游戏构图简单,轮廓单纯明晰,难度不大。
到了19世纪初。
印刷技术的突飞猛进和印模压力机的发展.使得拼图的制作工艺得到很大的提高。
1840年,法国和德国率先推出了紧密相扣的拼图,此后,拼图游戏迅速风靡世界。
至今仍然未被冷落。
1.2游戏实现的意义
随着智能手机的普及,手机上的游戏更是受到了很多人的青睐和欢迎。
作为平时人们消遣娱乐打发时间的一种方式,目前休闲类游戏占有了手机游戏中的绝大多数,休闲类游戏不仅是一种有效的娱乐方式,在移动设备上还能够在满足娱乐的同时尽量的延长移动设备的使用时间。
一款好的拼图类游戏集休闲、娱乐、深化记忆、提升智力与一体。
让玩家在游戏中可以享受到不一样的乐趣。
1.3本章小结
本章主要是介绍开发这款游戏的背景、意义,面对现在高速发展的社会,人们越来越关注于移动端的休闲放松类游戏,所以开发这款小游戏是很有意义的。
2系统可行性
2.1技术路线选择
Xcode是苹果公司开发的编程软件,是开发人员建立OSX和iOS应用程序的最快捷方式。
Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。
Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发MacOSX,iOS的应用程序。
其运行于苹果公司的Mac操作系统下。
Xcode前身是继承自NeXT的ProjectBuilder。
TheXcodesuite包含有GNUCompilerCollection自由软件(GCC、apple-darwin9-gcc-4.0.1以及apple-darwin9-gcc-4.2.1,默认的是第一个),并支持C语言、C++、Fortran、Objective-C、Objective-C++、Java、AppleScript、Python以及Ruby,还提供Cocoa、Carbon以及Java等编程模式。
协力厂商更提供了GNUPascal,FreePascal,Ada,C#,Perl,Haskell和D语言。
Xcode套件使用GDB作为其后台调试工具。
不管你用C、C++、Objective-C或Java编写程序,在AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现Xcode编译速度极快。
每次操作都很快速和轻松。
cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。
可以让你在创建自己的多平台游戏时节省很多的时间。
Cocos2D也拥有几个主要版本,包括Cocos2D-iPhone、Cocos2D-X,以及被社区普遍看好的Cocos2D-HTML5和JavaScriptbindingsforCocos2D-X。
同时也拥有了非常优秀的编辑器。
另外,2012年发布的CocoStudio工具集是开源游戏引擎Cocos2d-x开发团队官方推出的游戏开发工具,目前已经进入稳定版。
CocoStudio吸取了他们自己在游戏制作中的经验,为移动游戏开发者和团队量身定做,旨在降低游戏开发的门槛,提高开发效率,同时也为Cocos2D-X的进一步发展打下基础。
因为我们开发的基于iphone的游戏,所以本游戏开发选择的是cocos2dforiPhone。
cocos2dforiPhone是一个用来开发iPhone平台上的2D游戏和其他图形交互式应用程序的框架,和cocos2d的设计相同,使用相同的API,但基于ObjectiveC的实现。
2.2技术可行性分析
大学入学以来,我们先后学习过《Objective-C程序设计》,《UI程序设计与开发》,《IOS应用开发》,《OC项目应用》,《Cocos2d游戏开发》,《游戏项目实践》等各门与游戏设计相关的课程。
在学习理论知识的同时,我们也一直在实践。
大一时曾在老师的指导下完成了计算器的开发。
大二时,曾分组完成过阅读器的开发,并且各自完成过一次魔法英雄游戏的开发。
所以,在技术上有能力完成本项目的开发。
2.3系统的整体进度安排
2.4运行环境
本游戏开发和运行所需软硬件运行开发环境如下:
1、硬件环境
1)iPhone手机
2)显示屏分辨率:
1136×640
3)输入方式:
触屏
4)内存:
不小于50M
2、软件环境
1)X-code
2)IOS6.0及以上平台
2.5本章小结
本章介绍的是游戏的系统可行性。
包括选择X-code作为游戏的开发应用。
选择cocos2d作为游戏的开发框架以及游戏的运行环境。
同时,对技术的可行性进行了分析,以及系统的整体进度安排。
3系统设计
3.1系统结构化分析
1)游戏逻辑流程分析图。
如下图3-1所示。
图3-1游戏流程图
2)闯关过程逻辑流程分析图。
如下图3-2所示。
图3-2闯关流程图
3.2系统设计方案拟定
本课题要开发的拼图游戏的主要功能设计如下:
(1)图片碎片移动功能:
玩家通过手指触摸下方碎片图来拖动至上方放置图片碎片的背景中。
(2)下方图片碎片栏自动补充:
下方碎片栏默认为四张碎片。
玩家每从下方移动一块碎片至背景中,后续的随便将自动补充入碎片栏中。
(3)图片碎片与背景重合:
实现判断,碎片与背景相符。
若相符,则可放置。
若不符,则无法放置,自动回到下方碎片栏。
(4)判断是否过关:
规定时间内完成拼图判断过关,可进入下一关。
未完成判断失败,可选择返回主菜单或者继续游戏。
(5)关卡的设置与保存:
共有“简单、一般、困难”三个关卡。
通过pilst文件保存已通过的关卡。
3.3系统设计方案修订
通过和指导老师研讨,补充及修改了下面的功能:
(1)下方碎片栏的碎片有时候会固定排列顺序。
后来使用随机数组加入后,使下方的游戏碎片每一次都是随机出现。
(2)添加了虚拟化的背景作为下方碎片的提示依据。
(3)修改了每个难度游戏的时间,使游戏变得更有挑战性。
3.4系统设计方案定稿
(1)图片碎片移动功能:
玩家通过手指触摸下方碎片图来拖动至上方放置图片碎片的背景中。
如图3-3所示。
图3-3实现碎片拖动界面
(2)下方图片碎片栏自动补充:
下方碎片栏默认为四张碎片。
玩家每从下方移动一块碎片至背景中,后续的随便将自动补充入碎片栏中。
如下图3-4所示。
图3-4碎片栏自动填充
(3)背景虚拟化:
将拼图的原图进行虚拟化,而后放入游戏界面充当背景,以方便玩家判定。
(4)图片碎片随机排列:
每一次开始游戏,下方的图片碎片栏内的碎片均为随机出现。
如下图所示:
图3-5第一次出现碎片图3-6第二次出现碎片
(5)图片碎片与背景重合:
实现判断,碎片与背景相符。
若相符,则可放置。
若不符,则无法放置,自动回到下方碎片栏。
如图3-7所示:
图3-7碎片自动回到碎片栏
(6)判断是否过关:
规定时间内完成拼图判断过关,可自动进入下一关。
未完成判断失败,可选择返回主菜单或者继续游戏。
如下图所示:
图3-8游戏失败图3-9游戏胜利
(7)关卡的设置与保存:
共有“简单、一般、困难”三个关卡。
通过pilst文件保存已通过的关卡。
(8)时间控制:
使关卡在一定的时间内结束。
“简单、一般、困难”三个关卡的时间分别是60s,90s,120s。
3.3本章小结
本章介绍的是游戏的系统方案定稿。
包括游戏玩法与游戏的输赢判断。
4系统实现
根据前面的设计方案,采用cocos2d框架技术实现了本游戏的所有功能。
几个主要的功能实现介绍如下。
4.1过关判定功能实现
1.实现思路:
通过判断碎片是否完成,时间是否结束来判断胜负。
2.实现代码:
if(curBoxArr.count==0&&boxArr.count==0)//如果两个碎片数组都为0
{
labe=[CCLabelTTFlabelWithString:
@"恭喜过关"fontName:
@"MarkerFelt"fontSize:
13];//判断游戏胜利,提示恭喜过关。
labe.color=ccRED;
labe.position=ccp(winSize.width/2,winSize.height/2);
[selfaddChild:
labez:
1000];
CCScaleTo*sc=[CCScaleToactionWithDuration:
0.5scaleX:
6scaleY:
5];
[laberunAction:
sc];
[selfunschedule:
@selector(changeTime)];
[selfscheduleOnce:
@selector(Next:
)delay:
1];
}
}
CCLabelTTF*label2;
-(void)changeTime
{
move-=1;
label2.string=[NSStringstringWithFormat:
@"%d",move];
if(move<=0){//如果时间为0
[selfunschedule:
@selector(changeTime)];//关闭触控
CCLabelTTF*wp=[CCLabelTTFlabelWithString:
@"游戏失败"fontName:
@"Zapfino"fontSize:
50];//判定游戏失败。
提示游戏失败。
wp.position=ccp(winSize.width/2,winSize.height/2+50);
[selfaddChild:
wpz:
1000];
self.touchEnabled=NO;
}
}
4.2碎片随机出现功能实现
1.实现思路:
通过随机数组,将碎片分为两个数组,一个为显示数组,显示最初的四块碎片。
一个为隐藏数组,隐藏剩余的碎片。
2.实现代码:
-(void)initGame
{
for(inti=1;i<=16;i++){
CCSprite*bgBox=[CCSpritespriteWithFile:
[NSStringstringWithFormat:
@"puzzle-%d.png",i]];
bgBox.tag=i-1;
[boxArraddObject:
bgBox];//保存16张图片在这一数组。
}
[selfchangeBox];
}
-(void)changeBox
{
for(inti=0;i<4&&boxArr.count>0;i++)
{
intn=(int)(CCRANDOM_0_1()*boxArr.count);
CCSprite*sp=[boxArrobjectAtIndex:
n];
[curBoxArraddObject:
sp];//按随机顺序加入此数组。
sp.position=ccp(winSize.width+BOXIMGW,BOXW/2-20);
sp.scale=0.7;
[selfaddChild:
sp];
[boxArrremoveObjectAtIndex:
n];
}
for(inti=0;i{
CCMoveTo*mt=[CCMoveToactionWithDuration:
0.5position:
ccp(5+80/2+i*80,BOXW/2-20)];
CCSprite*sp=[curBoxArrobjectAtIndex:
i];//显示数组少一块碎片,隐藏数组自动添加一块碎片进入显示数组。
[sprunAction:
mt];
}
}
4.3碎片位置的判断功能实现
1.实现思路:
通过判断中心点。
通过判断碎片的中心点与背景的中心点是否一致来实现碎片位置的判断。
2.实现代码:
-(void)ccTouchesMoved:
(NSSet*)toucheswithEvent:
(UIEvent*)event//判断中心点
{
if(!
lastSp){
return;
}
CGPointpt=[[CCDirectorsharedDirector]convertTouchToGL:
[touchesanyObject]];
lastSp.position=ccp(pt.x+lastSp.position.x-beganPt.x,pt.y+lastSp.position.y-beganPt.y);
beganPt=pt;
}
-(void)ccTouchesEnded:
(NSSet*)toucheswithEvent:
(UIEvent*)event//判断中心点是否一致
{
if(!
lastSp){return}
CGPointpt=[[CCDirectorsharedDirector]convertTouchToGL:
[touchesanyObject]];
NSValue*val=[boxPtArrobjectAtIndex:
lastSp.tag];
CGPointboxPt;
[valgetValue:
&boxPt];
if(ccpDistance(boxPt,pt){
[curBoxArrremoveObject:
lastSp];
CCMoveTo*mt=[CCMoveToactionWithDuration:
0.3position:
boxPt];
[lastSprunAction:
mt];
}
Else//位置不正确飞回到碎片栏内
{
CCScaleTo*st=[CCScaleToactionWithDuration:
0.3scale:
0.7];
[lastSprunAction:
st];
}
4.4本章小结
本章介绍的是系统实现的主要功能,以及实现这些功能的主要代码。
总结
大学三年的学习生活即将结束,经过老师们的辛勤教导,我们满载而归。
这个时候通过毕业设计可以把自己的大学所学做一个总结或者说整理。
本文能够成功的完成,游戏的常规玩法,给游戏玩家带来一个轻松愉快又益智的游戏体验。
通过这次毕业设计的制作,使我对软件开发有了更深一步的了解。
在软件开发中应注意的问题和考虑的问题都能较好的做到。
在这短短时间的自学中要很好的应用这个工具还是有困难的,但也得到了不少自学经验,使我的自学能力有了很大的提高。
在开发过程中也遇到了不少难题,为了解决这些难题我查阅各类相关书籍,同时请教老师和同学,不停地对编译程序进行测试,调试。
但游戏还存在问题,虽然游戏的基本功能已实现,但该游戏还有许多不尽如人意的地方,与某些更加高级的游戏还有一定的差距。
在这里我要特别感谢我的指导老师崔曙光老师,没有他的帮助、指导、支持我不可能完成毕业设计。
参考文献
[1]满硕泉著《Cocos2D-x权威指南》机械工业出版社2013.4
[2]王寒著《Cocos2D权威指南》机械工业出版社2013.3.1
[3][美[NathanBurba著《Cocos2dforiPhone游戏开发实例详解》人民邮电出版社2012-12-1
[4]DevDiv移动开发社区著《iOS开发实战体验》海洋出版社2012-8
[5]JoeConway,AaronHillegass著夏伟频译《iOS编程(第3版)》华中科技大学出版社2013-3-1
[6](美)AaronHillegass著《Objective-C编程(BigNerdRanch入门经典)》华中科技大学出版社2012-9-1
[7][美]ScottKnaster WaqarMalik MarkDalrymple著《Objective-C基础教程(第2版)》人民邮电出版社2013-5-1
[8]关东升著《iOS开发指南:
从零基础到AppStore上架(第2版)》人民邮电出版社2014-4-1
[9](美)StephenG.Kochan(斯蒂芬·G·科昌) 著《Objective-C程序设计(第4版)》电子工业出版社2012-9-1
[10](美)詹姆斯(Davidson,D.J.) 等著《Cocoa入门-使用Objective-C》中国电力出版社2008-2-1
[11](英)迈尔-舍恩伯格,(英)库克耶 著《大数据时代》浙江人民出版社2013-1-1
[12](美)雷 著《iOS5应用开发入门经典(第3版)》人民邮电出版社2012-7-1
[13]杨正洪,郑齐心,郭晨 编著《iOS5编程揭秘-iPhone与iPad应用开发入门》清华大学出版社2012-7-1
[14][美]CarloChung著《Objective-C编程之道:
iOS设计模式解析》人民邮电出版社2011-11-1
致谢
在这次毕业设计中,曾遇到过不少问题,如果单靠我个人的努力,很难按时完成毕业设计,在此,我衷心感谢我的指导老师——崔曙光老师。
是他一路来的指导、支持、帮助,才会让我在预期中完成。
他认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。
另外非常感谢许多关心和帮助我的老师和同学,也感谢系里为我提供了有利的实验室环境,使我有了更多的机会去研究、开发课题。
这次设计从开始到现在,持续了一个学期,由于时间仓促、经验不足等因素,所以存在的问题还比较多,敬请各位老师和同学批评指正。
我在虚心接受大家的意见和建议的同时,还会更努力地将其完善。
因为,毕业设计的结束并不意味着学习的结束,而是新的学习的开始和延续。