![寶石對對碰手機游戲設(shè)計_第1頁](http://file4.renrendoc.com/view/8628e814a16b83338bf91ee98ce88f9f/8628e814a16b83338bf91ee98ce88f9f1.gif)
![寶石對對碰手機游戲設(shè)計_第2頁](http://file4.renrendoc.com/view/8628e814a16b83338bf91ee98ce88f9f/8628e814a16b83338bf91ee98ce88f9f2.gif)
![寶石對對碰手機游戲設(shè)計_第3頁](http://file4.renrendoc.com/view/8628e814a16b83338bf91ee98ce88f9f/8628e814a16b83338bf91ee98ce88f9f3.gif)
![寶石對對碰手機游戲設(shè)計_第4頁](http://file4.renrendoc.com/view/8628e814a16b83338bf91ee98ce88f9f/8628e814a16b83338bf91ee98ce88f9f4.gif)
![寶石對對碰手機游戲設(shè)計_第5頁](http://file4.renrendoc.com/view/8628e814a16b83338bf91ee98ce88f9f/8628e814a16b83338bf91ee98ce88f9f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
河北農(nóng)業(yè)大學(xué)本科畢業(yè)論文(設(shè)計)題目:寶石對對碰摘要游戲設(shè)計的歷史很悠久,幾千年來,從最古老的非洲的Awari游戲,到現(xiàn)在最為優(yōu)雅的游戲圍棋,人們設(shè)計和玩過的游戲不計其數(shù),許多游戲已經(jīng)隨著時間遺失在歷史的長河中了。除了經(jīng)典游戲之外,人們總是對新游戲感興趣,因此一直有對新游戲設(shè)計的需求。手機游戲:指用戶利用隨身攜帶具有廣域無線網(wǎng)絡(luò)聯(lián)機功能(GPRS或CDMA)的移動終端設(shè)備(手機),隨時隨地進行的游戲。簡單說手機游戲是指運行于手機上的游戲軟件。 本文介紹了手機游戲?qū)ε龅拈_發(fā)過程。論文遵循軟件工程的方法,詳盡論述了從需求分析、系統(tǒng)分析、概要設(shè)計、詳細設(shè)計、以及測試與調(diào)試的整個開發(fā)過程,總結(jié)了開發(fā)過程中的經(jīng)驗及本系統(tǒng)今后的改進方向。本系統(tǒng)開發(fā)成功后可以實現(xiàn)對對碰游戲的登陸,注冊,以及游戲的娛樂功能。Xcode5.0開發(fā)工具,采用成熟的軟件研制技術(shù),后臺數(shù)據(jù)庫采用Sqlite3。關(guān)鍵詞:對對碰,Xcode、Sqlite3AbstractGamedesignisalonghistory,thousandsofyears,fromthemostancientAfricaAwarigame,nowthemostelegantgame,chess,peopledesignandplaythegametoomanytocount,manygameshavethetimelostinthelongriverofhistory.Inadditiontotheclassicgame,peoplearealwaysinterestedinnewgame,sotherehasbeentothenewdemandofthegamedesign.Mobilephonegame:referstocarryawirelesswideareanetworkonlinefunctionusingtheuser(GPRSorCDMA)ofthemobileterminal(mobilephone),wheneverandwhereverpossiblethegame.Simplesaidmobilephonegameisrunningonthemobilephonegamesoftware.Thispaperintroducesthedevelopmentprocessofmobilephonegamesoncolliding.Methodsaccordingtothesoftwareengineering,discussedindetailfromthedemandanalysis,systemanalysis,outlinedesign,detaileddesign,andtestanddebugtheentiredevelopmentprocess,summeduptheimprovementdirectionoftheexperienceofthedevelopmentprocessofthesystemandfuture.Afterthesuccessofthesystemdevelopmentcanbeachievedonthepuzzlegamelanding,registration,andentertainmentfunction.Xcode5developmenttools,theuseofmaturesoftwaredevelopmenttechnology,back-enddatabaseusingSqlite3.Keywords:twoofakind,Xcode,Sqlite3目錄1.緒論31.1課題背景31.2選題依據(jù)和研究意義31.3研究現(xiàn)狀和發(fā)展態(tài)勢42相關(guān)開發(fā)工具的技術(shù)簡介42.1IOS開發(fā)技術(shù)52.2Xcode開發(fā)工具介紹62.3面向?qū)ο罄碚摰慕榻B62.4SQLite的介紹73游戲分析與總體設(shè)計73.1游戲功能及規(guī)則描述73.2游戲流程分析83.2.1登陸模塊93.2.2注冊模塊103.2.3主頁模塊113.2.4游戲模塊124游戲界面實現(xiàn)134.1登陸界面134.2注冊界面144.3主界面164.4游戲界面175核心代碼實現(xiàn)和程序的設(shè)計模式175.1游戲規(guī)則的核心算法175.2IOS開發(fā)中的代理模式295.3IOS中的MVC設(shè)計模式306結(jié)束語317參考文獻328致謝331.緒論1.1課題背景現(xiàn)在的移動電話是小型的計算機,它的處理能力與臺式機的標準處理能力相比很有限,但是足夠運行一個小型的游戲。
現(xiàn)在的手機的一個特性就是它們還是網(wǎng)絡(luò)計算機,能夠高速發(fā)送和接收數(shù)字數(shù)據(jù)。除了語音數(shù)據(jù)以外,它們還可以發(fā)送和接收其它類型的數(shù)據(jù)。所以類似《傳奇》、《千年》這樣的網(wǎng)絡(luò)游戲也可以在手機上實現(xiàn)。
當(dāng)然就處理能力和性能而言,當(dāng)前階段的支持Java的手機很接近第二代控制臺游戲機、80年代中期的家用電腦和早期的手持游戲機。內(nèi)存通常很有限--一般128KB到500KB--雖然有些智能手機比如Nokia3650有4MB內(nèi)存。與PC相比,它們的輸入和顯示功能也很有限;小屏幕(許多仍然是黑白屏幕),為電話撥號優(yōu)化的小鍵盤并不針對文本輸入,以及有限的聲音處理能力,中國電子游戲產(chǎn)業(yè)的發(fā)展,是從上個世紀的80年代末開始興起的,市場展現(xiàn)過的有大型機游戲、家用游戲、掌機游戲、PC機游戲、動漫游戲、網(wǎng)絡(luò)游戲、手機游戲等幾大類游戲。80年代末是大型機游戲時代,主要經(jīng)營游戲廳。90年初家用游戲和掌機游戲發(fā)展較快,主要產(chǎn)品面向家用。到了90年代中期,個人計算機普及很快,因此PC機游戲比較流行。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,從2000年開始盛行網(wǎng)絡(luò)游戲?,F(xiàn)在,網(wǎng)絡(luò)游戲發(fā)展很快,是目前游戲產(chǎn)業(yè)中規(guī)模較大的一個種類。最近幾年,手機游戲、動漫、卡通又開始迅速發(fā)展。游戲產(chǎn)業(yè)發(fā)展很快,游戲種類不斷變化。1.2選題依據(jù)和研究意義作為運行于手持設(shè)備上的應(yīng)用程序,手機的硬件特征決定了手機游戲的特點。那什么是手機游戲呢?相信大家都知道吧!手機游戲是指運行于手機上的游戲軟件。目前用來編寫手機最多的程序是Java語言,見J2ME。其次是C語言。
是的,就是如此,中國市場以及全球市場龐大的手機用戶群,都為手機游戲的發(fā)展奠定了良好的基礎(chǔ)。而現(xiàn)在手機本身硬件的發(fā)展,也為其支持多項游戲的運行提供了可靠的保障?。?)龐大的潛在用戶群全球在使用的移動電話已經(jīng)超過10億部,而且這個數(shù)字每天都在不斷增加。在除美國之外的各個發(fā)達國家,手機用戶都比計算機用戶多。手機游戲潛在的市場比其他任何平臺,比如PlayStation和GameBoy都要大。
(2)便攜性在控制臺游戲時代,GameBoy熱銷的一個原因就是便攜性——人們可以隨時隨地沉浸在自己喜歡的游戲中。和游戲控制臺或者PC相比,手機雖然可能不是一個理想的游戲設(shè)備,但畢竟人們總是隨時隨身攜帶,這樣手機游戲很可能成為人們消遣時間的首選。(3)支持網(wǎng)絡(luò)因為手機是網(wǎng)絡(luò)設(shè)備,在一定限制因素下可以實現(xiàn)多人在線游戲?,F(xiàn)在騰訊的多款游戲、盛大的游戲都支持手機登陸的。是的,擁有這么大的市場前景和用戶群體,手機游戲的迅猛發(fā)展是勢不可擋的,接下來,都會有更多更好的網(wǎng)絡(luò)游戲不斷面世,相信對于廣大的用戶朋友來說都都是值得欣喜的!1.3研究現(xiàn)狀和發(fā)展態(tài)勢.在科技技術(shù)與互聯(lián)網(wǎng)高速發(fā)展的社會中,手機游戲能夠給人們帶來隨時隨地的并具有廣域無線網(wǎng)絡(luò)聯(lián)機功能的休閑互動娛樂體驗,以獲取在現(xiàn)實生活中的精神與娛樂上的享受,在某種程度上滿足人們本身的希冀,是一種精神世界地釋放。wsn中國行業(yè)咨詢網(wǎng)_行業(yè)報告_行業(yè)分析_市場調(diào)研_第三方市場數(shù)據(jù)提供商wsn中國行業(yè)咨詢網(wǎng)_行業(yè)報告_行業(yè)分析_市場調(diào)研_第三方市場數(shù)據(jù)提供商
近幾年來,手機游戲快速發(fā)展的同時按內(nèi)容可分為:角色扮演類、冒險類、格斗類、體育競速類、電影改版類、棋牌類、益智類、模擬類。紛繁的手機游戲種類已成為人類線上娛樂生活的不可缺少的最主流載體而存在,各類智能手機伴隨著PC網(wǎng)絡(luò)游戲為基礎(chǔ)、3G網(wǎng)絡(luò)的不斷強化為措施的條件下大力迅猛發(fā)展手機網(wǎng)絡(luò)游戲。雖然手機游戲的用戶越來越多,豐富多彩的游戲種類給玩家?guī)砹烁嗟倪x擇,但是我國的手機游戲行業(yè)的發(fā)展現(xiàn)狀并不樂觀,主要因素有:1)高質(zhì)量游戲軟件開發(fā)公司和人才的貧乏,導(dǎo)致無優(yōu)秀游戲打人市場。2)游戲創(chuàng)意的匱乏。大多游戲都只是一味跟風(fēng),看到某個游戲成功贏得市場,便改換場景風(fēng)格、人物造型、故事背景等,其游戲核心一沉不變的思維理念會使玩家產(chǎn)生審美疲勞。wsn中國行業(yè)咨詢網(wǎng)_行業(yè)報告_行業(yè)分析_市場調(diào)研_第三方市場數(shù)據(jù)提供商wsn中國行業(yè)咨詢網(wǎng)_行業(yè)報告_行業(yè)分析_市場調(diào)研_第三方市場數(shù)據(jù)提供商
隨著手機游戲的商業(yè)模式進一步凸顯,人們對手機的休閑娛樂功能需求越來越強烈,手機游戲已成為現(xiàn)代人們生活娛樂中必不可少的主流移動終端設(shè)備。游戲應(yīng)用服務(wù)市場促使手機平臺的不斷提升而日新月異。據(jù)中咨網(wǎng)研究部調(diào)研顯示,2012年底,我國手機游戲產(chǎn)業(yè)有了突飛猛進的發(fā)展,手機游戲使用用戶比例高達到80%以上,市場規(guī)模超過16億元人民幣。在未來,游戲產(chǎn)品能否在市場中脫穎而出,一切取決于你能玩出什么花樣來,這將激發(fā)更多的開發(fā)商和制作人員攻堅克難創(chuàng)造出高質(zhì)量的作品,面對手機游戲自身的趣味性、易掌握性、可中斷性、交互性,游戲廠商也將面臨亙古未見的激烈競爭。由此可見,手機游戲已是人們?nèi)粘I钪忻懿换蛉钡男蓍e娛樂方式。這強有力的促使具有朝陽產(chǎn)業(yè)的手機游戲行業(yè)朝著健康有序的方向大步前進。2相關(guān)技術(shù)的選用與介紹2.1IOS開發(fā)技術(shù)IOS是iPhone,iPodtouch以及iPad等設(shè)備的核心操作系統(tǒng)。IOS平臺使用了構(gòu)建MacOSX時積累的知識,IOSSDK提供了創(chuàng)建IOS應(yīng)用程序所需要的環(huán)境和工具,利用IOSSDK開發(fā)應(yīng)用時所用的編程語言是Objective-C。IOS平臺開發(fā)工具和開發(fā)技術(shù)源于MacOSX,都是以UNIX為基礎(chǔ)。IOS應(yīng)用程序開發(fā)依賴于iPhone軟件開發(fā)包(SDK),其中SDK繼承與Xcode中。從整體上看,IOS扮演底層硬件和應(yīng)用程序的中介。創(chuàng)建的應(yīng)用程序不能直接訪問硬件,而需要和系統(tǒng)接口進行交互。IOS實現(xiàn)可以看作多個層的集合,底層為所有程序提供基礎(chǔ)服務(wù),高層則包含一些復(fù)雜的服務(wù)和技術(shù)。Cocoatouch層提供了基本的系統(tǒng)行為支持,當(dāng)需要實現(xiàn)更為復(fù)雜的行為和界面時,才考慮向下層探尋技術(shù)支持。UIKit框架:提供程序運行必須得關(guān)鍵對象,使APP能夠捕獲用戶輸入和在屏幕上顯示內(nèi)容。MapKit框架:IOS3.0引入該框架,可被嵌入到應(yīng)用程序的地圖界面,該框架包含一個可以滾動的地圖視圖。AddressBookUI框架:IOS3.0引入該框架,用于撰寫電子郵件,并將其放入到用戶的發(fā)件箱排隊等候發(fā)送。MessageUI框架:顯示創(chuàng)建或者編輯聯(lián)系人的標準系統(tǒng)界面。Media層包含圖形、音頻、視頻等技術(shù)。AVFoundation框架:用于播放和編輯復(fù)雜的音頻和視頻。CoreImage框架:包含高級圖像和視頻處理功能。如人臉識別和圖像過濾功能。CoreGraphics框架:包含2D繪畫和合成功能。MediaPlayer框架:提供典型的屏幕控件用于播放電影。QuartzCore框架:包含CoreAnimation接口。用于實現(xiàn)復(fù)雜的動畫和視覺效果。Coreservice層用于訪問較多低級的操作系統(tǒng)服務(wù),如文件存取,聯(lián)網(wǎng)和常見的數(shù)據(jù)對象類型。Foundation框架:為CoreFoundation框架的許多功能提供Objective-C封裝。CoreFoundation框架:一組C語言的接口,為IOS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能。CoreLocation框架:用于定位設(shè)備當(dāng)前經(jīng)緯度。SystemConfiguration:用于確定設(shè)備網(wǎng)絡(luò)配置的當(dāng)前狀態(tài)。IOS開發(fā)限制介紹(1)平臺間差異:iPhoneOS設(shè)備和臺式機或筆記本電腦的開發(fā)的不同,也和桌面應(yīng)用程序不同,需要意識到終端開發(fā)的特殊性。(2)屏幕大小的限制:由于iPhoneOS設(shè)備具有高分辨率的小型屏幕,在iPhone5之前設(shè)備都是3.5in,iPhone5以及iPhone5c,iPhone5s都是4.0in,在設(shè)計應(yīng)用時需要注意不要放置非必要的元素。(3)內(nèi)存限制:IOS的內(nèi)存非常有限,避免分配超出設(shè)備的可用內(nèi)存,不然應(yīng)用程序?qū)⒔K止。當(dāng)發(fā)生內(nèi)存過低時,IOS系統(tǒng)將發(fā)出警告,需要進行及時清理內(nèi)存。同時需要注意避免內(nèi)存泄露。(4)窗口顯示限制:在IOS環(huán)境上,用戶每次只能看到單個窗口。多個窗口只能順序訪問和查看。(5)電量限制:iPhoneOS設(shè)備是通過電池供電,而高速運轉(zhuǎn)的系統(tǒng),大屏幕,上網(wǎng)或看電子書都會消耗電量。2.2Xcode開發(fā)工具介紹Xcode:IOS集成開發(fā)環(huán)境,也是編譯器,負責(zé)管理應(yīng)用程序工程。InterfaceBuilder:快速原型開發(fā)工具,可視化的組裝用戶UI接口的工具,集成在Xcode中。Instruments:功能強大的性能調(diào)試工具,以及內(nèi)存分析工具。iPhoneSimulator:MacOSX平臺應(yīng)用程序,它是模擬應(yīng)用程序,但不能完全模擬所有功能。IOSSDK:ISO軟件開發(fā)工具包。2.3面向?qū)ο罄碚摰慕榻B從現(xiàn)實世界中客觀存在的事物(即對象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運用人類的自然思維方式,強調(diào)直接以問題域(現(xiàn)實世界)中的事物為中心來思考問題,并根據(jù)這些事物的本質(zhì)特點,把它們抽象地表示為系統(tǒng)中的對象,作為系統(tǒng)的基本構(gòu)成單位(而不是用一些與現(xiàn)實世界中的事物相關(guān)比較遠,并且沒有對應(yīng)關(guān)系的其它概念來構(gòu)造系統(tǒng))。這可以使系統(tǒng)直接地映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌。對象是要研究的任何事物。從一本書到一家圖書館,單的整數(shù)到整數(shù)列龐大的數(shù)據(jù)庫、極其復(fù)雜的自動化工廠、航天飛機都可看作對象,它不僅能表示有形的實體,也能表示無形的(抽象的)規(guī)則、計劃或事件。對象由數(shù)據(jù)(描述事物的屬性)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一獨立整體。從程序設(shè)計者來看,對象是一個程序模塊,從用戶來看,對象為他們提供所希望的行為。在對內(nèi)的操作通常稱為方法。類是對象的模板。即類是對一組有相同數(shù)據(jù)和相同操作的對象的定義,一個類所包含的方法和數(shù)據(jù)描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可有其子類,也可有其它類,形成類層次結(jié)構(gòu)。消息是對象之間進行通信的一種規(guī)格說明。一般它由三部分組成:接收消息的對象、消息名及實際變元。三大特性:封裝性:封裝是一種信息隱藏技術(shù),它體現(xiàn)于類的說明,是對象的重要特性。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法(函數(shù))封裝為一個整體,以實現(xiàn)獨立性很強的模塊,使得用戶只能看見到對象的外特性(對象能接受哪些消息,具有哪些處理能力),而對象的內(nèi)特性(保存內(nèi)部狀態(tài)的私有數(shù)據(jù)和實現(xiàn)加工能力的算法)對用戶是隱蔽的。封裝的目的在于把對象的設(shè)計者和對象者的使用分開,使用者不必知曉行為實現(xiàn)的細節(jié),只須用設(shè)計者提供的消息來訪問該對象。繼承性:“繼承”是面向?qū)ο筌浖夹g(shù)當(dāng)中的一個概念。如果一個類A繼承自另一個類B,就把這個A稱為“B的子類”,而把B稱為“A的父類”。繼承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼。在令子類繼承父類的同時,可以重新定義某些屬性,并重寫某些方法,即覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。另外,為子類追加新的屬性和方法也是常見的做法。多態(tài)性:對象根據(jù)所接收的消息而做出動作。同一消息為不同的對象接受時可產(chǎn)生完全不同的行動,這種現(xiàn)象稱為多態(tài)性。利用多態(tài)性用戶可發(fā)送一個通用的消息,而將所有的實現(xiàn)細節(jié)都留給接受消息的對象自行決定,如是,同一消息即可調(diào)用不同的方法。多態(tài)的實現(xiàn)受到繼承性的支持,利用類繼承的層次關(guān)系,把具有通用功能的協(xié)議存放在類層次中盡可能高的地方,而將實現(xiàn)這一功能的不同方法置于較低層次,這樣,在這些低層次上生成的對象就能給通用消息以不同的響應(yīng)。類的多態(tài)性提供類方法的多樣性,多態(tài)性有兩種表示方式:重載和覆蓋。2.4SQLite的介紹SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月。至今已經(jīng)有14個年頭,SQLite也迎來了一個版本SQLite3已經(jīng)發(fā)布。同時它還支持事務(wù)處理功能等等。也有人說它象Microsoft的Access,有時候真的覺得有點象,但是事實上它們區(qū)別很大。比如SQLite支持跨平臺,操作簡單,能夠使用很多語言直接創(chuàng)建數(shù)據(jù)庫,而不象Access一樣需要Office的支持。如果你是個很小型的應(yīng)用,或者你想做嵌入式開發(fā),沒有合適的數(shù)據(jù)庫系統(tǒng),那么你可以考慮使用SQLite。到2013年10月17日最新版本是3.8.1。它的官方網(wǎng)站是:或者http://www.sqlite.com.cn,能在上面獲得源代碼和文檔。同時因為數(shù)據(jù)庫結(jié)構(gòu)簡單,系統(tǒng)源代碼也不是很多,也適合想研究數(shù)據(jù)庫系統(tǒng)開發(fā)的專業(yè)人士3游戲分析與總體設(shè)計3.1游戲功能及規(guī)則描述游戲在8×10格子的游戲池中進行。每個格子中有一個寶石的圖片。鼠標連續(xù)選中兩個相鄰的圖片,它們的位置會互換,互換后如果橫排或豎排有3個以上相同的頭像,則可以消去該頭像,并得分。
基本規(guī)則
交換
玩家選中相鄰(橫、豎)的兩個圖片,則這兩個圖片的位置發(fā)生互換,如果互換成功則消去圖片,否則位置交換。
消去
玩家選擇兩個寶石的圖片進行位置互換,互換后如果橫排或豎排有3個以上相同的寶石的圖片,則消去這幾個相同的寶石的圖片,如果互換后沒有可以消去的寶石的圖片,則換位置。消去后的空格由上面的寶石的圖片掉下來補齊。每次消去寶石的圖片玩家都能得到一定的分數(shù)。
連鎖
玩家消去寶石的圖片后,上面的頭像掉下來補充空格。如果這時游戲池中有連續(xù)擺放(橫、豎)的3個或3個以上相同的寶石的圖片,則可以消去這些頭像,這就是一次連鎖??崭癖恍碌膶毷膱D片填充,又可以進行下一次連鎖。每次連鎖會有加分。
3.2游戲流程分析3.2.1登陸模塊是否是3.2.2注冊模塊是否是否否是3.2.3主頁模塊3.2.4游戲模塊是否是否4游戲界面實現(xiàn)4.1登陸界面4.2注冊界面4.3主界面4.4游戲界面最上面記錄玩家的昵稱,當(dāng)前得分,以及最高分,點擊返回,到上一個界面。5核心代碼實現(xiàn)和程序的設(shè)計模式5.1游戲規(guī)則的核心算法-(void)distributeStoneType{if(!_isReloading){for(inti=0;i<KRow;i++)for(intj=0;j<KCol;j++){_stoneType[i][j]=arc4random()%KStoneTypeNumber;if(j>0&&i>0){while(_stoneType[i][j]==_stoneType[i][j-1]||_stoneType[i][j]==_stoneType[i-1][j]){_stoneType[i][j]=arc4random()%KStoneTypeNumber;}continue;}if(i>0){while(_stoneType[i][j]==_stoneType[i-1][j]){_stoneType[i][j]=arc4random()%KStoneTypeNumber;}continue;}if(j>0){while(_stoneType[i][j]==_stoneType[i][j-1]){_stoneType[i][j]=arc4random()%KStoneTypeNumber;}continue;}}}else{_scoreLab.text=[NSStringstringWithFormat:@"Score:%@",_player.lastScore];NSLog(@"讀取游戲進度:%@",_player.gameProcess);NSArray*arr=[_player.gameProcesscomponentsSeparatedByString:@"|"];for(inti=0;i<KRow;i++)for(intj=0;j<KCol;j++){NSIntegernum=i*KCol+j;NSString*score=[arrobjectAtIndex:num];_stoneType[i][j]=[scoreintegerValue];}}}//寶石按鈕-(void)createStoneBtn{for(inti=0;i<KRow;i++)for(intj=0;j<KCol;j++){StoneBtnModel*model=[[StoneBtnModelalloc]init];UIButton*btn=[UIButtonbuttonWithType:UIButtonTypeCustom];btn.tag=KStoneImageButtonTag+i*KCol+j;model.stoneType=_stoneType[i][j];model.stoneRow=i;model.stoneCol=j;UIImage*image=[[BuildingStoneViewshareStoneView]getStoneImageWith:model.stoneType];btn.frame=CGRectMake(KStoneImageOriginX+KBackViewHeight*j,KStoneImageOriginY+i*KBackViewHeight,KImageWidth,KImageHeight);[btnsetImage:imageforState:UIControlStateNormal];[btnaddTarget:selfaction:@selector(StoneImageBtnClicked:)forControlEvents:UIControlEventTouchUpInside];model.stoneBtn=btn;model.btnTag=btn.tag;[_stoneBtnArraddObject:model];}}}-(void)exchangeStone:(NSInteger)tag1withTag:(NSInteger)tag2{StoneBtnModel*model1=[_stoneBtnArrobjectAtIndex:tag1-KStoneImageButtonTag];StoneBtnModel*model2=[_stoneBtnArrobjectAtIndex:tag2-KStoneImageButtonTag];UIButton*btn1=model1.stoneBtn;UIButton*btn2=model2.stoneBtn;//frame交換CGRectrect=btn1.frame;btn1.frame=btn2.frame;btn2.frame=rect//按鈕tag交換btn1.tag=model2.btnTag;btn2.tag=model1.btnTag;NSIntegertype=model1.stoneType;model1.stoneType=model2.stoneType;model2.stoneType=type;model1.stoneBtn=btn2;model2.stoneBtn=btn1;[selfperformSelector:@selector(judgeIsThreeInLine)withObject:nilafterDelay:KTimeCheckDelay];}//判斷是否可以交換-(void)isExchangeTag:(NSInteger)tag1withTag:(NSInteger)tag2{_isEXchange=NO;StoneBtnModel*model1=[_stoneBtnArrobjectAtIndex:tag1-KStoneImageButtonTag];StoneBtnModel*model2=[_stoneBtnArrobjectAtIndex:tag2-KStoneImageButtonTag];NSIntegerrow=model1.stoneRow;NSIntegercol=model1.stoneCol;NSIntegerrow2=model2.stoneRow;NSIntegercol2=model2.stoneCol;if((1==fabsf(row-row2)&&col==col2)||(1==fabsf(col-col2)&&row==row2)){_isEXchange=YES;}_firstSelectedStone=0;_secondSelectedStone=0;NSLog(@"_isExchange:%d",_isEXchange);if(_isEXchange){_isEXchange=NO;[selfexchangeStone:tag1withTag:tag2];}}#pragmamarkJudegThreeStoneIsInLine//每行是否有三個相同類型寶石在一條線上-(void)judgeIsThreeInARow{NSLog(@"judgeIsThreeInARow");NSMutableArray*stone=[[NSMutableArrayalloc]init];for(introw=0;row<KRow;row++)for(intcol=0;col<KCol-2;col++){NSIntegertype=[selfgetStoneTypeWithTag:KStoneImageButtonTag+row*KCol+col]if(type==KStoneTypeBlank){continue;}[stoneremoveAllObjects];NSIntegeri=0;NSIntegertag=KStoneImageButtonTag+row*KCol+col+i;while(type==[selfgetStoneTypeWithTag:tag]&&col+i<KCol){[stoneaddObject:[selfgetStoneBtnModelWithTag:tag]];i++;tag=KStoneImageButtonTag+row*KCol+col+i;}if(stone.count>2){NSLog(@"有三個寶石連續(xù)共線!");[_stoneInLineSetaddObjectsFromArray:stone];col+=stone.count;}}}//從視圖上移除寶石-(void)deleteStoneWithStoneArr:(NSSet*)stoneArr{NSLog(@"移除寶石!");for(StoneBtnModel*modelinstoneArr){if(model.stoneType==KStoneTypeBlank){continue;}UIButton*btn=model.stoneBtn;//NSLog(@"deleteStoneBtn:%d",btn.tag);model.stoneType=KStoneTypeBlank;[btnremoveFromSuperview];}//得分[selfgetScoreWithStoneNumber:[stoneArrcount]];//刷新NSSet*set=[[NSSetalloc]initWithSet:_stoneInLineSet];[selfrefreshMapWithSet:setwithType:5];}//刷新地圖-(void)refreshMapWithSet:(NSSet*)arrwithType:(NSInteger)type{NSMutableArray*tempStoneArr=[[NSMutableArrayalloc]init];for(StoneBtnModel*modelinarr){if(model.stoneType!=KStoneTypeBlank){continue;}[tempStoneArrremoveAllObjects];//得到空寶石上方不為空的寶石實例[tempStoneArraddObjectsFromArray:[selfgetColStoneWithCol:model.stoneCol]];[selfrefreshMapInCol:tempStoneArrwithCol:model.stoneCol];}//交換完畢延時檢測,讓寶石落到位置[selfperformSelector:@selector(judgeIsThreeInLine)withObject:nilafterDelay:KTimeCheckDelay];}-(void)getScoreWithStoneNumber:(NSInteger)number{number-=3;NSIntegerscore=25*number*(number+1)+100;_currentScore+=score;NSLog(@"消除%d個寶石,得分:%d當(dāng)前得分:%d",number+3,score,_currentScore);NSString*str=[NSStringstringWithFormat:@"Score:%d",_currentScore];_scoreLab.text=str;[selfrefreshMaxScoreWith:_currentScore];}-(void)StoneImageBtnClicked:(UIButton*)btn{if(0==_firstSelectedStone){_firstSelectedStone=btn.tag;[selfcustomAnimations];}else{_secondSelectedStone=btn.tag;[_timerinvalidate];[selfisExchangeTag:_firstSelectedStonewithTag:_secondSelectedStone];}}5.2IOS開發(fā)中的代理模式代理是一種簡單而功能強大的設(shè)計模式,這種模式用于一個對象“代表”另外一個對象和程序中其他的對象進行交互。主對象(這里指的是delegatingobject)中維護一個代理(delegate)的引用并且在合適的時候向這個代理發(fā)送消息。這個消息通知“代理”主對象即將處理或是已經(jīng)處理完了某一個事件。這個代理可以通過更新自己或是其它對象的UI界面或是其它狀態(tài)來響應(yīng)主對象所發(fā)送過來的這個事件的消息?;蚴窃谀承┣闆r下能返回一個值來影響其它即將發(fā)生的事件該如何來處理。代理的主要價值是它可以讓你容易的定制各種對象的行為。注意這里的代理是個名詞,它本身是一個對象,這個對象是專門代表被代理對象來和程序中其他對象打交道的。5.3IOS開發(fā)中的MVC模式MVC:模型,視圖,控制器,是iOS開發(fā)中用到的主要的設(shè)計模式。Model中處理邏輯與數(shù)據(jù),View展示應(yīng)用界面,接收用戶的操作,而Controller夾在View和Model中間,當(dāng)View接收到用戶操作,他將通知Controller,Controller會判斷采取什么樣的措施,Controller也負責(zé)將邏輯和數(shù)據(jù)處理交給Model完成,根據(jù)返回結(jié)果來更新View。Controller就像膠水,將兩個獨立的部分粘合在一起。Model和Controller之間可以通信,View和Controller之間可以通信,而View和Model之間是禁止通信的。Controller可以通過直接訪問屬性、調(diào)用方法,來控制Model和View,向他們傳遞消息,對于Storyboard和XIB文件,上面的控件可以通過生成outlet來調(diào)用,如果直接代碼生成的話,就調(diào)用控件實例。Controller必須實現(xiàn)View中所定義的target或者delegate方法,來實現(xiàn)View對Controller的回調(diào)。這樣,View就可以通知Controller自己的變化,以及用戶對View的操作。View還有datasource方法,用于向Controller請求某些時刻需要顯式的數(shù)據(jù),比如UITableViewDataSource中,會在tableview生成時,向Controller請求表格的行數(shù)和頁面上可見的單元格中的內(nèi)容。Model可以通過Notification和KVO的方式來通知Controller在Model中數(shù)據(jù)的改變。也可以使用delegate或者block來實現(xiàn),在AFNetworking中的網(wǎng)絡(luò)狀態(tài)變化通知,就是使用block來實現(xiàn)的。把所有的邏輯和數(shù)據(jù)都放到Model層中,Model就會變得很雜亂,所以我習(xí)慣把Model再細分:Service層,用于為Controller提供一些最直接的邏輯功能、數(shù)據(jù)封裝,并且管理下一層模塊,向下一層模塊請求數(shù)據(jù)。Controller只管理他所擁有的View,以及與他直接相關(guān)的Service類。Manager層,用于管理一大類操作,比如:數(shù)據(jù)同步功能,寫一個數(shù)據(jù)同步的類,再類中處理網(wǎng)絡(luò)狀態(tài)判斷、緩存數(shù)據(jù)的讀寫以及緩存數(shù)據(jù)的發(fā)送,錯誤處理。Manager層位于Service層之下,接受Service的調(diào)度。Handler層,用于實現(xiàn)具體的操作,如:FileHandler,用來處理文件存儲操作,將字符串或NSData數(shù)據(jù)轉(zhuǎn)換成文件并存放在指定路徑,以及一些多線程處理操作。Handler層接受Manager調(diào)度。Model還有一些其它的部分:實現(xiàn)一些公共方法的Utility工具類,以及一些存儲數(shù)據(jù)結(jié)構(gòu)的類。各個平級的層之間不允許互相調(diào)用,調(diào)用只能自上而下發(fā)生,回調(diào)都使用block來實現(xiàn)。這樣實現(xiàn),項目結(jié)構(gòu)看起來就清晰了許多。結(jié)束語本次畢業(yè)設(shè)計到此已經(jīng)順利結(jié)束,通過這次的畢業(yè)設(shè)計,我學(xué)到了很多。在以前的4年時間內(nèi)我學(xué)習(xí)了很多的課程及編程語言,雖然通過學(xué)習(xí)對這些課程有所了解和掌握,但是始終處于理論知識的掌握階段,并沒有真正應(yīng)用于實踐設(shè)計開發(fā),所以對知識的掌握還不夠全面和熟練。而且并不能真正獨立的開發(fā)出一個完整的應(yīng)用于實際的軟件。通過這次的畢業(yè)設(shè)計,我已經(jīng)可以完成這一任務(wù),對自身的編程能力也有了很大的提高。這次開發(fā)的軟件是一款手機游戲,跟以往的PC端開發(fā)不一樣,我采用的自學(xué)的objective--C語言,它是一種兼容c和c++的語言,是c語言的超集。當(dāng)然在學(xué)習(xí)的過程中曾經(jīng)碰到過一些讓人頭痛的問題,我都一一解決了,直到游戲全部完成,也讓我在解決問題方面的能力得到了提高。整個開發(fā)的過程對我來說是一次能力的真正提高的過程;是一次將理論應(yīng)用于實踐的過程;是將以前所學(xué)知識充分利用的過程,比如信息管理,數(shù)據(jù)庫等等;是一次真正的實踐過程??傮w說來,在這次長達一個學(xué)期的畢業(yè)設(shè)計中,我真正學(xué)到了很多有用的東西,是一些在課堂內(nèi)所學(xué)不到的知識,收獲很大。參考文獻[1]徐松林,黃猛著.cocos2D-x手機游戲開發(fā)[M].北京:人民郵電出版社.[2]Ronpatton(美)著.王鈺,曹躍譯.軟件測試[M].北京:機械工業(yè)出版社,2006:4.[3]王水著.軟件工程[M].河南:河南科學(xué)技術(shù)出版社,2008:8.[4]吳潔明著.軟件工程實例教程[M].北京:清華大學(xué)出版社,2010:11.[5]郭東恩著.數(shù)據(jù)庫原理及應(yīng)用[M].河南:河南科學(xué)技術(shù)出版社,2008:4.[6]DanPilone著.HeadFirstiPhoneDevelopment[M].北京:東南大學(xué)出版社,2012:[7]薩丹著.iPhone開發(fā)秘籍[M].北京:人民郵電出版社,2010:1.[8]王志剛.編著應(yīng)用程序開發(fā)攻略之iPhone特色傳感器應(yīng)用[M].北京:電子工業(yè)出版社,2011:2.[9]GeneBacklin(美)著.岳紅凌沖譯.iPhone&iPad高級編程[M].北京:清華大學(xué)出版社,2012:1.[10]Wei-MengLee(美)著.張龍譯.IOS4編程入門經(jīng)典[M].北京:清華大學(xué)出版社,2012:1.致謝這是一個特殊的時刻,是一個值得紀念的時刻。此時此刻,短暫的畢業(yè)設(shè)計就要畫上句點,人生中的大學(xué)時光也即將畫上句號。心中的感受復(fù)雜交錯,有即將畢業(yè)的興奮、有畢設(shè)完成的輕松感、也有對大學(xué)時光的戀戀不舍。在此論文即將完成之時,首先我要特別感謝我的指導(dǎo)老師張璠老師!謝謝老師給予我悉心的關(guān)懷與指導(dǎo)。記得第一次見到老師時,立刻體會到了一種親近的感覺。老師認真負責(zé)的工作態(tài)度、嚴謹?shù)闹螌W(xué)風(fēng)格、親切平易近人的性格,使我深受啟發(fā),內(nèi)心許多次都在感激我能在大學(xué)最后的時光遇到了張璠老師。正是在老師的督促和耐心的指導(dǎo)下,才讓我將畢設(shè)各方面的工作完成得最好。其次,也感謝院系各級領(lǐng)導(dǎo)對我的關(guān)心,為我提供了舒適的工作、學(xué)習(xí)環(huán)境。最后,感謝同學(xué)們在開發(fā)的期間,給我的無私的幫助。曾經(jīng)遇到過很多疑難,正是與同學(xué)們的相互探討使我獲益匪淺,才能讓我繼續(xù)前進的腳步。短短幾個月時間內(nèi),除了學(xué)會了基本數(shù)據(jù)庫應(yīng)用系統(tǒng)地開發(fā)外,更重要的是學(xué)到了兢兢業(yè)業(yè),奮發(fā)向上的精神!這種精神將是我今后人生前進道路上的一種力量,所以我再次衷心地感謝老師和我的同學(xué)們,謝謝你們了。目錄TOC\o"1-2"\h\u253321總論 1311911.1項目概況 1317891.2建設(shè)單位概況 3162241.3項目提出的理由與過程 3311231.4可行性研究報告編制依據(jù) 4225921.5可行性研究報告編制原則 426521.6可行性研究范圍 5265791.7結(jié)論與建議 665262項目建設(shè)背景和必要性 9302042.1項目區(qū)基本狀況 9237942.2項目背景 11327472.3項目建設(shè)的必要性 11265903市場分析 14297233.1物流園區(qū)的發(fā)展概況 1479553.2市場供求現(xiàn)狀 1669963.3目標市場定位 17108883.4市場競爭力分析
17160544項目選址和建設(shè)條件 1950564.1選址原則 1969314.2項目選址 19544.3場址所在位置現(xiàn)狀 19297334.4建設(shè)條件 20123545主要功能和建設(shè)規(guī)模 22282555.1主要功能 22281835.2建設(shè)規(guī)模及內(nèi)容 26195696工程建設(shè)方案 27137726.1設(shè)計依據(jù) 27219396.2物流空間布局的要求 27262516.3空間布局原則 2853886.4總體布局 2936766.5工程建設(shè)方案 30235856.6給水工程 33115596.7排水工程 3553126.8電力工程 38288986.9供熱工程 46314656.10電訊工程 47153607工藝技術(shù)和設(shè)備方案 51276227.1物流技術(shù)方案 5142607.2制冷工藝技術(shù)方案 6769868節(jié)能方案分析 73HYPERLINK\l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年揭陽貨運從業(yè)資格證考題
- 2025年德州下載b2貨運從業(yè)資格證模擬考試考試
- 2025年商丘駕??荚囏涍\從業(yè)資格證模擬考試
- 電視臺合同范本(2篇)
- 電力服務(wù)績效合同(2篇)
- 山西省陽曲縣八年級地理上冊 第二章 自然環(huán)境 我們賴以生存的基本條件說課稿 晉教版
- 2024-2025學(xué)年五年級語文上冊第二單元5裝滿昆蟲的衣袋教案設(shè)計蘇教版
- 2024-2025學(xué)年高中歷史第四單元中國社會主義建設(shè)發(fā)展道路的探索第19課經(jīng)濟體制改革教案含解析岳麓版必修2
- 馬栗種子提取物片說明書
- 湘教版地理八年級下冊:9 建設(shè)《永續(xù)發(fā)展的美麗中國》 聽課評課記錄
- 20210年中考英語復(fù)習(xí):閱讀理解信息歸納摘錄考題匯編(含答案)
- 團餐服務(wù)培訓(xùn)資料
- 喉全切除術(shù)手術(shù)配合
- AQ4229-2013 糧食立筒倉粉塵防爆安全規(guī)范
- (正式版)SHT 3225-2024 石油化工安全儀表系統(tǒng)安全完整性等級設(shè)計規(guī)范
- 人教版六年級數(shù)學(xué)上冊《應(yīng)用題》專項練習(xí)題(含答案)
- 垃圾分類上門回收公司
- (2024年)FSC標準培訓(xùn)課件
- 第三單元 嘆錦繡中華書傳統(tǒng)佳話(教學(xué)設(shè)計) 三年級語文下冊大單元教學(xué)(部編版)
- 商業(yè)秘密培訓(xùn)課件模板
- 網(wǎng)絡(luò)與信息安全管理培訓(xùn)資料2024
評論
0/150
提交評論