




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
鹽城師范學院畢業設計 畢業設計基于IOS的憤怒的小鳥游戲的設計與實現姓名學院專業班級)學號指導教師2016年5月16日 鹽城師范學院畢業設計 頁共21頁3系統總體設計3.1系統功能模塊分析 當前應用使用xcode軟件的UI界面對游戲的各個界面進行設計,實現每個游戲界面的跳轉功能,本系統的功能模塊也分為5個不同的功能模塊。游戲登錄模塊—開始游戲模塊—暫停游戲模塊—結束游戲模塊—退出游戲模塊。UI設計基本概念與流程介紹UI即UserInterface(用戶界面)的簡稱。UI設計是指對軟件的人機交互、操作邏輯,界面美觀的整體設計[7]。好的UI設計不僅是讓軟件變得有個性有品位,滿足絕大部分用戶的基本需求和審美觀要求,還要讓軟件的更具有操作性,充分體現軟件的定位和特點。UI設計由交互設計,界面設計和用戶研究三部分組成。UI設計流程是從立定一個項目開始的,然后基于這三部分開始設計項目,作為一名UI設計師,就應該嚴格遵循流程的規范,進行需求,分析設計,調研驗證,方案改進以及用戶驗證反饋等階段。3.1.1APP應用設置設置應用系統背景音樂聲音大小、背景色的亮暗度和游戲難度。使用SeekBar來控制系統音量,使用RadioGroup來控制游戲難度。3.1.2玩家信息管理 在游戲結束的時候,系統會記錄玩家的得分情況和玩家昵稱,玩家還可以查看自己的排名情況3.2系統類關系圖系統的實體類、邊界類和控制類的關系圖如圖3-1所示:圖3-1系統的實體類、邊界類和控制類的關系圖各個界面類之間的關系如圖3-2所示:圖3-2各個界面類之間的關系圖3.3系統總體設計系統中只有玩家這一類用戶,所以沒有必要像其他網站或教務系統一樣進行身份驗證等操作。玩家只需要點擊游戲的應用圖標,進入登錄界面,輸入自己的賬號就可以進入游戲界面開始游戲,用戶總體的操作可以歸并成如圖3-3。用戶的操作基本步驟可以分為“開始游戲”,“設置游戲”,“玩游戲”,“查看分數”,“退出游戲”這五個用例[7]。圖3-3用戶總體操作圖4游戲的各個模塊的設計與實現4.1開發工具介紹要開發IOS的應用程序,首先必須配備有一臺蘋果電腦,而且這臺電腦里還得裝有Xcode[9]。Xcode是蘋果公司為我們這些開發所提供的開發工具,它不但具有項目管理、創建執行程序功能,還具有代碼庫管理以及性能調節功能。當然它也不是唯一的開發工具。在開發這款游戲的時候,我們還主要運用到C/C++以及Objective-C和一些簡單的UIView和UIViewController[10主要語言Objective-C介紹Objective-C是一門為C語言增加面向對象功能的語言,是開發MacOS、iPhone/iPodtouch和iPad應用的主要語言。Objective-C最大的特點是支持面向對象編程,具備很多動態語言才有的動態特征,同事在效率傷害可以媲美C語言。隨著MacOSX和iOS的逐步更新,Objective-C運行的心痛也做了逐步的提升。Objective-C語言本身也引入了不少新的特性,包括新的內存官路方式——ARC。另外屬性聲明和代碼塊的適用范圍也得到了擴大。Objective-C編程風格這些年也在不斷地更新。Xcode介紹Xcode是蘋果公司向開發人員提供的集成開發環境,用于開發MacOSX和iOS的應用,其中自帶了Objective-C編譯器[11],給我們提供了所有的開發所需的工具,讓你可以創建和管理你的項目和代碼,構建你的代碼,讓它成為可執行的文件,在模擬器或者真是的設備上可以運行和調試。當你在創建一個新的iPhone的應用程序時,需要在Xcode創建一個新的項目開始。這個項目管理你的所有的相關信息,包括代碼,構件設置和一些規則。每個Xcode項目的核心就是項目的窗口,項目窗口如圖4-1所示,項目窗口里包括了別人訪問你的項目的大多數途徑,項目窗口還提供了項目的其他信息。 圖4-1項目窗口顯示圖4.2游戲核心技術的介紹這款游戲的制作關鍵在于Cocos2D游戲引擎和Box2D游戲引擎的應用。Cocos2D如今是一款支持多個平臺的2D手機游戲引擎,它不僅支持iOS,還支持Android、BlackBerry等眾多的平臺?,F在移動端流行的大多數手機游戲都是基于Cocos2D開發的。如果大家想學習的話可以參考《Cocos2D-X游戲開發技術精解》,這本書里詳細給我們介紹了如何使用Cocos2D-X引擎來開發自己的引動平臺游戲[12]。Box2d是一個現在非常常用和有名的2d物理引擎,Box2d有C++,flash和Java等版本,而我們今天則使用的C++版本,android則是用的Java版本的Box2d.雖然這個游戲引擎非常的有名和常用,但是網上關于它的資料真的很少,特別是關于圖形繪制方面的少之又少,在這里就不給大家做什么詳細介紹了。4.2.1Cocos2D游戲引擎的簡單介紹Cocos2D的兩個衍生版本,如圖4-2。Cocos2D-X和Cocos2D-AndroidCocos2DCocos2DObjective-CCocos2D-AndroidJavaCocos2D-AndroidJavaCocos2D-XC++圖4-2Cocos2D的兩個衍生版本圖4.2.2Box2D游戲引擎的簡單介紹物理引擎就是解決游戲中物理規律的變化主要是按照物理規律來進行計算剛體的運行的軌跡Box2D可以和Cocos2D完美的配合4.2.3物理引擎需要解決的問題1.小鳥運動軌跡(有重力加速度和摩擦力)如圖4-42.小鳥和冰架碰撞變形問題3.?小鳥和小豬碰撞變形問題4。小鳥和地面碰撞變形反彈問題圖4-4小鳥和地面碰撞變形反彈圖4.3游戲界面的搭建和角色的創建登錄界面和游戲界面都是使用UIView和UIViewController來控制和繪制的。UIView主要負責界面的控制,UIViewController則負責界面的搭建、繪制、修改等工作。其中UIView是主線程,UIViewController是子線程[13]。UIViewController與畫面控制UIViewController與畫面控制UIViewController是畫面控制的核心。這里將介紹怎么使用UIViewController對由各種UIView組成的畫面進行有效管理,以及頁面跳轉的方法。UIViewController中有導航條、工具條等多種功能界面。正如UIView是組成畫面的重要部分,UIViewController也是組成應用程序的重要部分。掌握這兩種最基本的類,是成為合格iOS應用開發程序員的必要條件。UIViewController與畫面的關系UIViewController在UIKit中主要起到是控制畫面的切換的作用,其中的view屬性(UIView類型)是用來管理整個畫面的外觀。在開發iPhone應用程序時UIViewController并不是必不可少的,譬如在第1章中的HelloWorld程序中顯然就沒用到UIViewController,著說明寫iPhone應用程序可以不用UIViewController.除此自外,我們還可以通過對畫面中控件屬性的修改從而起到切換換面外觀的作用,例如此時可采取將不需要的控件都隱藏起來的方法。此時仍然不需要UIViewController。由于該游戲的界面比較多,涉及的類比較復雜,所以這里只給大家展示部分界面和實現的代碼。登錄界面和游戲界面如圖4.4.1-4.4.6所示:圖4-4-1登錄界面圖圖4-4-2游戲界面圖圖4-4-3游戲界面圖圖4-4-5游戲界面圖粒子飛行及碰撞就消失代碼:#import"ParticleManager.h"staticParticleManager*s;@implementationParticleManager-(CCParticleSystem*)particleWithType:(ParticleTypes)type{CCParticleSystem*system=nil;switch(type){caseParticleTypeSnow:{system=[CCParticleSnownode];//取得雪花的粒子對象CCTexture2D*t=[[CCTextureCachesharedTextureCache]addImage:@"snow.png"];//30x30//把snow.png圖片轉化為紋理[systemsetTexture:t];}break;caseParticleTypeBirdExplosion:{system=[ARCH_OPTIMAL_PARTICLE_SYSTEMparticleWithFile:@"bird-explosion.plist"];//使用bird-explosion.plist作為粒子效果的文件[systemsetPositionType:kCCPositionTypeFree];//設置粒子效果位置獨立[systemsetAutoRemoveOnFinish:YES];//粒子效果完成后自動刪除}break;default:break;}returnsystem;}@end圖4-4-6游戲闖關成功圖成功闖入下一關代碼:#import"GameUtils.h"@implementationGameUtils+(NSString*)getLevelFilePath{//得到存放成功通關的文件return[[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"SuccessLevel"];//存在沙盒Documents/SuccessLevel;}+(int)readLevelFromFile{NSString*file=[[selfclass]getLevelFilePath];//取得存放數據文件;//讀取文件NSString*s=[NSStringstringWithContentsOfFile:fileencoding:NSUTF8StringEncodingerror:nil];if(s){return[sintValue];}return2;//2缺省的通關管卡}+(void)writeLevelToFile:(int)level{NSString*s=[NSStringstringWithFormat:@"%d",level];//把level轉化成一個字符串NSString*file=[[selfclass]getLevelFilePath];//取得要存放的文件[swriteToFile:fileatomically:YESencoding:NSUTF8StringEncodingerror:nil];}@end游戲開始界面如圖4-5:圖4-5游戲開始界面圖游戲暫停界面如圖4-6:圖4-6游戲暫停界面圖游戲開始與暫停代碼:cation*)application
{
[[CCDirectorsharedDirector]pause];
//暫停游戲
}
-(void)applicationDidEnterBackground:(UIApplication*)application
{
[[CCDirectorsharedDirector]stopAnimation];
//停止刷新停止動畫
}
-(void)applicationWillEnterForeground:(UIApplication*)application
{
[[CCDirectorsharedDirector]startAnimation];
//開始動畫
}-(void)applicationDidBecomeActive:(UIApplication*)application
{
[[CCDirectorsharedDirector]resume];
//恢復運行
/*
Restartanytasksthatwerepaused(ornotyetstarted)whiletheapplicationwasinactive.Iftheapplicationwaspreviouslyinthebackground,optionallyrefreshtheuserinterface.
*/
}
@end游戲一般場景圖片展示如圖4-7:圖4-7游戲一般場景圖游戲場景和布局代碼:#import"SlingShot.h"@implementationSlingShot@synthesizestartPoint1=_startPoint1;@synthesizestartPoint2=_startPoint2;@synthesizeendPoint=_endPoint;//draw函數所有ccnode里面虛函數-(void)draw{//要實現真正的畫線glLineWidth(2.0f);//設置線寬glColor4f(1.0f,0.0f,0.0f,1.0f);//設置顏色glEnable(GL_LINE_SMOOTH);//把線段反鋸齒glDisable(GL_TEXTURE_2D);glDisableClientState(GL_TEXTURE_COORD_ARRAY);glDisableClientState(GL_COLOR_ARRAY);GLfloatver[4]={_startPoint1.x,_startPoint1.y,_endPoint.x,_endPoint.y};glDisable(GL_LINE_SMOOTH);}@end游戲角色bird圖片展示如圖4-8:圖4-8游戲角色bird圖游戲主要角色bird的創建代碼:#import"Bird.h"
@implementationBird
@synthesizeisFly=_isFly,isReady=_isReady;-(id)initWithX:(float)xandY:(float)yandWorld:(b2World*)worldandLayer:(CCLayer<SpriteDelegate>*)layer
{
myLayer=layer;
imageUrl=@"bird";
myWorld=world;
self=[superinitWithFile:[NSStringstringWithFormat:@"%@1.png",imageUrl]];
self.tag=BIRD_ID;
self.position=ccp(x,y);
HP=10000;
self.scale=0.3f;
returnself;
}
-(void)hitAnimationX:(float)xandY:(float)y{
for(inti=0;i<6;i++){
intrange=2;
CCSprite*temp=[CCSpritespriteWithFile:@"yumao1.png"];
temp.scale=(float)(arc4random()%5/10.1f);
temp.position=CGPointMake(x+arc4random()%10*range-10,y+arc4random()%10*range-10);
[myLayeraddChild:temp];游戲角色pig圖片展示如圖4-9:圖4-9游戲角色pig圖游戲角色pig創建代碼:#import"Pig.h"@implementationPig-(id)initWithX:(float)xandY:(float)yandWorld:(b2World*)worldandLayer:(CCLayer<SpriteDelegate>*)layer{myWorld=world;imageUrl=@"pig";myLayer=layer;//myLayer表示GameLayer游戲場景self=[superinitWithFile:[NSStringstringWithFormat:@"%@1.png",imageUrl]];self.position=ccp(x,y);self.tag=PIG_ID;HP=1;floatscale=2;self.scale=scale/10;};blockShape.Set(vertices,8);b2FixtureDefballShapeDef;ballShapeDef.shape=&blockShape;ballShapeDef.density=80.0f;ballShapeDef.friction=80.0f;//Wedon'twanttheballtohavefriction!ballShapeDef.restitution=0.15f;ballBody->CreateFixture(&ballShapeDef);returnself;}@end4.4游戲應用程序所用到的框架和應用的頭文件Frameworkslibz.dylibQurtzCore.FrameworkOpenGLES.frameworkOpenAL.frameworkAudioToolbox.frameworkAVFoundation.frameworkUIKit.frameworkFoundation.frameworkCoreGraphics.framework#include
<Box2D/Common/b2Settings.h>
#include
<Box2D/Collision/Shapes/b2CircleShape.h>
#include
<Box2D/Collision/Shapes/b2PolygonShape.h>
#include
<Box2D/Collision/b2BroadPhase.h>
#include
<Box2D/Collision/b2Distance.h>
#include
<Box2D/Collision/b2DynamicTree.h>
#include
<Box2D/Collision/b2TimeOfImpact.h>
#include
<Box2D/Dynamics/b2Body.h>
#include
<Box2D/Dynamics/b2Fixture.h>
#include
<Box2D/Dynamics/b2WorldCallbacks.h>
#include
<Box2D/Dynamics/b2TimeStep.h>
#include
<Box2D/Dynamics/b2World.h>
#include
<Box2D/Dynamics/Contacts/b2Contact.h>
5系統測試與性能分析5.1功能測試本章根據測試用例書對網上招聘系統的各項功能進行了測試,以檢驗本系統的是否實現了預期設計的要求。具體測試情況,如表5—1所示。表5—1測試用例書項目名稱基于IOS的憤怒的小鳥游戲的設計與實現測試環境硬件環境服務器端:MAC機一臺客戶端:MAC機一臺軟件環境服務器端:OS操作系統,安裝了Xcode客戶端:Chrome39.0.2171.95m瀏覽器網絡環境中國電信,20M帶寬編制人卞城城測試時間2016-04-07測試編號測試對象測試步驟預期結果結果001管理員輸入管理員賬號和密碼跳轉到游戲登錄界面OK002點擊開始游戲進入游戲開始界面OK003開始游戲正常游戲OK004完成第一關任務進入下一關OK005未完成此關任務跳轉到結束界面并顯示所獲得的得分OK006點擊玩家信息顯示玩家得分和前十名得分玩家OK007退出游戲退出游戲界面OK5.2測試結果分析本系統完成了既定設計的功能,對于系統輸入的數據有嚴格的驗證,系統性能良好,達到系統設計的要求。由于缺乏相關測試環境、工具軟件,不能對系統進行高并發等極端情況下的穩定性測試。6結束語本次設計在完成設計的過程中不斷查閱資料以及余老師的耐心指導,已基本實現了系統預期設計的功能。然而由于時間關系,系統仍然存在一些不完美的地方,比如頁面不夠美觀,功能與成熟的手機游戲相比不夠完善等都需要自己在日后的學習過程中不斷進步??傮w來說,通過本次設計,讓我對整個軟件開發流程有了更好的理解,對于系統中用到的技術,比如Framework框架、Cocos2D前端技術等。其中自己感受最深的還是對Objective-C和Cocos2D前端技術的初步探索[14]。隨著網絡技術的發展,手機喲偶系已經越來越受到人們的歡迎,隨著信息化社會的發展,在將來找工作將變成輕松的事情,讓每個人都擁有一款屬于自己的滿意的手機游戲。
參考文獻[1]夏夢.基于iOS的車聯網手機客戶端的設計與實現[D].南昌大學2014趙淼.基于Telematics的iPhone手機客戶端系統的研究及應用[D].吉林大學.2014KevinT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全知識法試題及答案
- 2025年電動汽車電池熱管理系統熱管理效率優化與創新研究報告
- 安全技能比武試題及答案
- 安全工作教育試題及答案
- 物業品質培訓課件目錄
- 魔鏡檢測皮膚培訓課件
- 重疾保險培訓課件
- 《編制說明蒙農1號蒙古冰草提純復壯技術規程》
- 中班家園共育課件
- 冬季生產安全培訓
- 上海市重點建設項目社會穩定風險評估報告編制指南2025
- 數字化情報資源管理-洞察闡釋
- 北京市2025學年高二(上)第一次普通高中學業水平合格性考試物理試題(解析版)
- 2025年四川省高考物理試卷真題(含答案)
- 炸雞店的產品創新與口味調研
- 陜西省銅川市2025年八下英語期末監測試題含答案
- 社區工作者綜合能力考試基礎知識試題及答案
- 山西焦煤集團所屬煤炭子公司招聘筆試題庫2025
- 墊付醫療費協議書
- 2025年福建省廈門市中考物理模擬試卷
- 2024年陜西省普通高中學業水平合格性考試語文試題(原卷版+解析版)
評論
0/150
提交評論