2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  本科學(xué)生畢業(yè)論文(設(shè)計(jì))</p><p>  2014 年 4 月 25 日</p><p>  湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))誠信聲明</p><p>  本人鄭重聲明:所呈交的本科畢業(yè)論文(設(shè)計(jì)),是本人在指導(dǎo)老師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果,成果不存在知識(shí)產(chǎn)權(quán)爭議,除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個(gè)人或集體已經(jīng)發(fā)

2、表或撰寫過的作品成果。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律結(jié)果由本人承擔(dān)。</p><p>  本科畢業(yè)論文(設(shè)計(jì))作者簽名: </p><p>  二〇一四年四月二十五日</p><p>  畢業(yè)論文(設(shè)計(jì))任務(wù)書</p><p>  課題名稱: 基于iOS手游戰(zhàn)地塔防

3、 </p><p>  學(xué)生姓名: 田 勇 </p><p>  系 別: 計(jì)算機(jī)與通信工程系 </p><p>  專 業(yè): 軟件工程 </p><p>  指導(dǎo)教師: 楊杰(副教授) </p><

4、p>  2013 年 9 月 20 日</p><p>  注:此報(bào)告應(yīng)根據(jù)下達(dá)的畢業(yè)設(shè)計(jì)(論文)任務(wù)書,在指導(dǎo)教師的指導(dǎo)下由學(xué)生獨(dú)立撰寫,并于畢業(yè)設(shè)計(jì)(論文)開始后一周內(nèi)完成。可加附頁。</p><p>  湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))開題報(bào)告書</p><p>  注:此報(bào)告應(yīng)根據(jù)下達(dá)的畢業(yè)設(shè)計(jì)(論文)任務(wù)書,在指導(dǎo)教師的指導(dǎo)下由學(xué)生獨(dú)立撰寫

5、,并于畢業(yè)設(shè)計(jì)(論文)開始后一周內(nèi)完成。一式三份,一份下達(dá)給學(xué)生,一交指導(dǎo)教師,一份留系里存檔??筛郊禹?。</p><p>  湖南科技學(xué)院畢業(yè)論文(設(shè)計(jì))中期檢查表 </p><p>  注:此表用于指導(dǎo)教師在學(xué)生畢業(yè)論文(設(shè)計(jì))初稿完成后對(duì)學(xué)生執(zhí)行任務(wù)書情況進(jìn)行中期檢查時(shí)用,由指導(dǎo)教師填寫。</p><p>  湖南科技學(xué)

6、院畢業(yè)設(shè)計(jì)(論文)指導(dǎo)過程記錄表</p><p>  湖南科技學(xué)院畢業(yè)論文(設(shè)計(jì))答辯申請(qǐng)暨資格審查表</p><p>  注:此表為學(xué)生畢業(yè)論文(設(shè)計(jì))定稿后申請(qǐng)答辯,及系領(lǐng)導(dǎo)小組對(duì)申請(qǐng)答辯學(xué)生進(jìn)行資格審查時(shí)用;資格審查項(xiàng)目由指導(dǎo)教師填寫。</p><p>  湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))評(píng)審表</p><p>  說明:評(píng)定成績分為優(yōu)

7、秀、良好、中等、及格、不及格五個(gè)等級(jí),實(shí)評(píng)總分90—100分記為優(yōu);</p><p>  80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p><p>  說明:評(píng)定成績分為優(yōu)秀、良好、中等、及格、不及格五個(gè)等級(jí),實(shí)評(píng)總分90—100分記為優(yōu)秀,80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p&

8、gt;<p>  湖南科技學(xué)院本科畢業(yè)論文(設(shè)計(jì))答辯記錄表</p><p>  基于iOS手游戰(zhàn)地塔防</p><p><b>  摘 要</b></p><p>  “戰(zhàn)地塔防”單機(jī)游戲的設(shè)計(jì)采用編程語言O(shè)C制作,利用cocos2d引擎在Xcode開發(fā)環(huán)境下制作而成,用于iOS平臺(tái)。該游戲以軟件工程思想為指導(dǎo),分析了游戲策劃

9、方案,以iPhone平臺(tái)塔防游戲項(xiàng)目為依托,采用MVC設(shè)計(jì)模式,完成了該款游戲的設(shè)計(jì)和實(shí)現(xiàn)。</p><p>  本項(xiàng)目的主要工作包括完成了游戲程序結(jié)構(gòu)設(shè)計(jì)和資源文件結(jié)構(gòu)設(shè)計(jì),以及核心類和場景類;在進(jìn)行相關(guān)技術(shù)分析的基礎(chǔ)上,參與完成了動(dòng)畫系統(tǒng)和聲音系統(tǒng),完成了游戲的框架設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì)和GUI設(shè)計(jì);通過類設(shè)計(jì)和程序?qū)崿F(xiàn),完成了具體設(shè)計(jì)。游戲制作中設(shè)置了各種不同難度關(guān)卡,聲音設(shè)置等,游戲的界面制作美觀,運(yùn)行流暢,功能

10、設(shè)計(jì)基本達(dá)到了預(yù)期目標(biāo)。</p><p>  【關(guān)鍵詞】 單機(jī)游戲; Cocos2d; Xcode; OC</p><p>  Hand Swim Field Tower Defence Based on the iOS </p><p><b>  Abstract </b></p><p>  " W

11、arzone Tower Defense " stand-alone game design made of programming language OC use cocos2d engine in Xcode development environment, for the iOS platform. With software engineering idea as guidance for the games, gam

12、e design scheme is analyzed, which is based on the iPhone platform tower defense game project, using the MVC design pattern, completed the design and implementation of the game.</p><p>  The main work of thi

13、s project include finished the game program structure design and resource file structure is designed, and the core classes and class scene; On the basis of the analysis of related technologies, participate in finished th

14、e animation system and sound system, completed the framework of game design, structure design and GUI design; Through the class design and program implementation, completed the detailed design. Game set in a variety of d

15、ifferent difficulty levels, sound Settin</p><p>  【Keywords】 Stand-alone game; Cocos2d; Xcode;</p><p><b>  目錄</b></p><p><b>  1 緒論1</b></p><p>

16、;  1.1 課題背景1</p><p>  1.2 手游的國內(nèi)外發(fā)展現(xiàn)狀和趨勢1</p><p>  1.3 研究課題的意義2</p><p>  1.4 論文結(jié)構(gòu)安排3</p><p>  2 軟件系統(tǒng)分析4</p><p>  2.1 可行性分析4</p><p>  2.1

17、.1 操作可行性4</p><p>  2.1.2 技術(shù)可行性4</p><p>  2.1.3 社會(huì)可行性4</p><p>  2.2 功能概述4</p><p>  2.3 功能分析5</p><p>  2.3.1 主要功能分析5</p><p>  2.3.2

18、 關(guān)鍵功能分析6</p><p><b>  2.4本章小結(jié)7</b></p><p>  3 軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)8</p><p>  3.1 系統(tǒng)概述8</p><p>  3.2 系統(tǒng)模塊設(shè)計(jì)8</p><p>  3.3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)9</p><

19、p>  3.3.1 主界面模塊設(shè)計(jì)與實(shí)現(xiàn)9</p><p>  3.3.2 關(guān)卡選擇模塊設(shè)計(jì)與實(shí)現(xiàn)10</p><p>  3.3.3 技能模塊設(shè)計(jì)與實(shí)現(xiàn)11</p><p>  3.3.4 角色模塊設(shè)計(jì)12</p><p>  3.3.5 游戲邏輯模塊設(shè)計(jì)與實(shí)現(xiàn)12</p><p>  3.

20、4 本章小結(jié)22</p><p>  4 系統(tǒng)測試與性能23</p><p>  4.1 游戲系統(tǒng)測試23</p><p>  4.2 游戲測試的運(yùn)行結(jié)果23</p><p>  4.3 本章小結(jié)27</p><p>  5 總結(jié)與展望28</p><p>  5.1

21、總結(jié)28</p><p>  5.2 展望28</p><p><b>  參考文獻(xiàn)29</b></p><p><b>  致 謝30</b></p><p><b>  1 緒論</b></p><p>  隨著社會(huì)發(fā)展,手機(jī)成為了人們

22、日常生活不可缺少的一部分。手機(jī)游戲作為手機(jī)發(fā)展和普及過程中的一個(gè)產(chǎn)物,有著廣泛的發(fā)展前景,它的出現(xiàn)不僅可以豐富人們的業(yè)務(wù)生活,而且為國家信息產(chǎn)業(yè)的發(fā)展發(fā)揮了不可替代的作用。特別是當(dāng)中國加入世界貿(mào)易組織以后,國外大量的娛樂游戲、游戲迅速進(jìn)入中國市場,并獲得巨大成功,給中國信息產(chǎn)業(yè)和國內(nèi)游戲企業(yè)帶來了前所未有的挑戰(zhàn)和機(jī)遇。國家為了適應(yīng)市場的需要,大力提倡和幫扶國內(nèi)游戲產(chǎn)業(yè),給游戲企業(yè)提供了大量的政策支持,在這種情況下產(chǎn)生了國內(nèi)盛大游戲、巨人

23、等一批有實(shí)力的游戲企業(yè),也生產(chǎn)出了仙劍奇緣、天龍八部等具有中國特色的游戲,大大提高了我國游戲策劃、游戲制作的實(shí)力。隨著我國經(jīng)濟(jì)實(shí)力和信息產(chǎn)業(yè)的不斷發(fā)展,游戲必將為豐富人們娛樂生活、我國信息化建設(shè)發(fā)揮越來越重要的作用。</p><p><b>  課題背景</b></p><p>  研智能手機(jī)已經(jīng)成為方便人們生活的互聯(lián)網(wǎng)智能終端。擁有快捷性和實(shí)用性的手機(jī)軟件越來越被人

24、們所喜愛。蘋果公司做智能手機(jī)的先驅(qū),它開創(chuàng)的手持設(shè)備,如Iphone、Ipod、Ipad在整個(gè)移動(dòng)終端市場,都占據(jù)著相當(dāng)重要的地位。這三款設(shè)備的軟件都是基于IOS實(shí)現(xiàn)的。整個(gè)系統(tǒng)的客戶體驗(yàn)已經(jīng)達(dá)到了一個(gè)很高的層次。本文十分詳細(xì)的闡述了基于iPhone平臺(tái)開發(fā)的一款塔防類游戲,盡管有許多的開發(fā)者在為iPhone平臺(tái)開發(fā)著各種各樣的應(yīng)用程序,同時(shí)App Store已經(jīng)有數(shù)以萬記的軟件和游戲供使用者下載和使用,但是分析和總結(jié)應(yīng)用程序和游戲的開

25、發(fā)技術(shù)方面的論文卻十分的少,基于iPhone平臺(tái)開發(fā)游戲主要包括的是內(nèi)存管理機(jī)制、程序詳細(xì)設(shè)計(jì)、游戲框架搭建、游戲引擎使用、游戲策劃等。本文在完成了iPhone平臺(tái)上的游戲設(shè)計(jì)和開發(fā)的基礎(chǔ)上,使開發(fā)者能夠更加方便快捷地進(jìn)行iPhone平臺(tái)進(jìn)行游戲開發(fā),對(duì)工作的成果進(jìn)行了總結(jié),為iPhone平臺(tái)開發(fā)者提供了一些借鑒和參考。</p><p>  手游的國內(nèi)外發(fā)展現(xiàn)狀和趨勢</p><p>  

26、手游作為移動(dòng)互聯(lián)網(wǎng)殺手級(jí)別的應(yīng)用,在全球市場范圍內(nèi)流行,手游將經(jīng)歷著一個(gè)黃金發(fā)展的時(shí)期。2012年在全球手機(jī)游戲市場的規(guī)模達(dá)到了70億美元,手游作為美國手機(jī)用戶最受歡迎的移動(dòng)應(yīng)用之一,在iPhone和Android等智能終端推出后發(fā)展十分的迅速。2009年,中國手游總體市場的規(guī)模達(dá)到18億元,同比增長了38.5%,手機(jī)網(wǎng)游市場的規(guī)模達(dá)到3.2億元,同比增長了88.2%。從2007年到2012年,在中國的手游市場規(guī)模復(fù)合增長率為45.4%

27、,預(yù)計(jì)在將來3年復(fù)合增長率將超過50%。2013年市場規(guī)模將超過50億元。手機(jī)活躍用戶將在2009年超過1100萬人,更有望在2012年達(dá)到3200萬。</p><p>  在以后發(fā)展趨勢中將會(huì)是單機(jī)和聯(lián)網(wǎng)手機(jī)游戲并存:手游用戶群、消費(fèi)模式和PC網(wǎng)游將會(huì)差異明顯,支付方式將更為便捷,單機(jī)游戲長期存在。手機(jī)網(wǎng)游則會(huì)隨著終端(如iPad)操控體驗(yàn),網(wǎng)速和移動(dòng)社區(qū)的規(guī)模提升將會(huì)實(shí)現(xiàn)更快成長。</p>&l

28、t;p>  盈利模式清晰,提升用戶體驗(yàn)是關(guān)鍵:手游以下載和道具收費(fèi)為主的前向收費(fèi)模式已相對(duì)成熟。提升用戶的體驗(yàn)將會(huì)主要體現(xiàn)在豐富的游戲類型,界面還有玩法等等。</p><p>  平臺(tái)之爭激烈:手游平臺(tái)之爭將主要在巨頭間展開,包括App store、Android market,運(yùn)營商應(yīng)用商店,騰訊無線,百度應(yīng)用開放平臺(tái)。移動(dòng)互聯(lián)網(wǎng)企業(yè)UCWEB、當(dāng)樂網(wǎng)和凱斯網(wǎng)絡(luò)依托先發(fā)優(yōu)勢,也有一定的機(jī)會(huì)。</p&

29、gt;<p>  應(yīng)用商店將會(huì)是熱點(diǎn):終端的廠商將不僅僅是手機(jī)游戲載體,同時(shí)也是十分有效的推廣渠道。</p><p>  內(nèi)容從分散走向集中:手游行業(yè)發(fā)展初期將呈現(xiàn)內(nèi)容分散化的特征。當(dāng)平臺(tái)格局相對(duì)穩(wěn)定時(shí),具有跨平臺(tái)匹配、運(yùn)營和規(guī)模研發(fā)能力的手游廠商有望迅速做大做強(qiáng)。內(nèi)容環(huán)節(jié)集中度提高,議價(jià)能力提升。</p><p><b>  研究課題的意義</b>&l

30、t;/p><p>  戰(zhàn)地塔防游戲是一款經(jīng)典的策略類游戲,其以合理的開發(fā)原則,根據(jù)軟件工程的有關(guān)規(guī)范設(shè)計(jì)出的戰(zhàn)地塔防游戲,給人們的生活中帶來了藝術(shù)享受和健康愉快的補(bǔ)足。該游戲采用了當(dāng)前最新的手游技術(shù)cocos2d引擎制作而成,本文詳細(xì)闡述了基于iPhone平臺(tái)開發(fā)的一款塔防游戲,盡管有眾多開發(fā)者在為iPhone開發(fā)各式各樣的應(yīng)用程序,同時(shí)App Store已經(jīng)有成千上萬的軟件和游戲供使用者下載,然而分析和總結(jié)應(yīng)用程序

31、和游戲開發(fā)技術(shù)方面的論文卻很少,基于iPhone平臺(tái)開發(fā)的游戲主要包括內(nèi)存管理控制、程序詳細(xì)設(shè)計(jì)、游戲框架設(shè)計(jì)、游戲引擎、游戲策劃等。本文在完成了iPhone平臺(tái)上的游戲設(shè)計(jì)和開發(fā)的基礎(chǔ)上,使開發(fā)者能夠更加方便快捷地進(jìn)行iPhone平臺(tái)進(jìn)行游戲開發(fā),對(duì)工作的成果進(jìn)行了總結(jié),為iPhone平臺(tái)開發(fā)者提供了一些借鑒與參考。同時(shí)我所制作的塔防游戲相對(duì)與其它經(jīng)典的塔防有以下幾點(diǎn)優(yōu)勢:</p><p>  1.利用游戲引擎

32、cocos2d制作,開發(fā)方便簡單,而且用于iOS平臺(tái),性能優(yōu)良,游戲運(yùn)行流暢。</p><p>  2.游戲中設(shè)計(jì)了技能升級(jí)系統(tǒng),玩家可以根據(jù)通過關(guān)卡,獲得升級(jí)技能的星星,使得游戲的可玩性更高。</p><p>  3.游戲中設(shè)計(jì)了士兵攻擊,相對(duì)于其他經(jīng)典塔防只有防御塔的游戲,更加增強(qiáng)了玩家的操作性。</p><p><b>  論文結(jié)構(gòu)安排</b&

33、gt;</p><p>  本文主要闡述了基于iPhone平臺(tái)開發(fā)的一款塔防游戲設(shè)計(jì)與實(shí)現(xiàn)過程,從開始的分析,到設(shè)計(jì)不同模塊,最后到實(shí)現(xiàn)功能,本文都以實(shí)際開發(fā)過程為研究依據(jù),一步步將其實(shí)現(xiàn),使得該游戲趨于完善。本文分為六章,主要內(nèi)容如下:</p><p>  第一章是緒論,其中介紹了課題的背景及其意義,并對(duì)手游的國內(nèi)外現(xiàn)狀和發(fā)展的趨勢進(jìn)行了簡要的分析。</p><p&g

34、t;  第二章是軟件的系統(tǒng)分析,對(duì)游戲?qū)崿F(xiàn)的可行性操作進(jìn)行分析,并對(duì)游戲的主要功能進(jìn)行的介紹。</p><p>  第三章是軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),本章主要對(duì)游戲的系統(tǒng)模塊設(shè)計(jì),系統(tǒng)結(jié)構(gòu)設(shè)計(jì),游戲的運(yùn)行流程,主要功能做了大體的設(shè)計(jì)和實(shí)現(xiàn)。</p><p>  第四章是系統(tǒng)測試與性能,本章對(duì)于游戲的各個(gè)模塊和主要的功能進(jìn)行測試的結(jié)果進(jìn)行了展示和充分的說明。</p><p>

35、;  第五章是總結(jié)與展望,對(duì)于本次戰(zhàn)地塔防游戲的設(shè)計(jì)過程加以總結(jié),并陳述未來應(yīng)該做的工作。</p><p><b>  2 軟件系統(tǒng)分析</b></p><p>  在游戲開發(fā)之前,我們必須充分的了解該游戲的特點(diǎn)、適應(yīng)性,并以此作為基礎(chǔ)為開發(fā)系統(tǒng)精準(zhǔn)的定位,然后對(duì)使用者所需要實(shí)現(xiàn)的功能和玩法進(jìn)行分析,并根據(jù)使用者實(shí)際要求來給該游戲系統(tǒng)設(shè)計(jì)一個(gè)開始的方案。</p&

36、gt;<p>  2.1 可行性分析</p><p>  本游戲是塔防游戲(iOS版),塔防游戲指的是一類在地圖上通過建造防御塔或類似的建筑物,從而防止游戲中怪物進(jìn)攻的一種策略類的游戲,是一種十分耐玩的游戲,下面從各個(gè)方面簡要分析制作該類游戲的可行性。</p><p>  2.1.1 操作可行性</p><p>  戰(zhàn)地塔防游戲的每個(gè)關(guān)卡都經(jīng)過了精

37、心的設(shè)計(jì),游戲難度逐漸增加,游戲時(shí)間逐漸增長,因而在這樣的設(shè)計(jì)下,玩家可以感受到游戲的可玩性,同時(shí)也可以享受到完成游戲的成就感。而且該游戲操作簡單靈活,比如玩家只要通過建造防御塔,升級(jí)防御塔,技能攻擊等簡單操作,就能玩好此游戲。</p><p>  2.1.2 技術(shù)可行性</p><p>  “戰(zhàn)地塔防”策略游戲技術(shù)的實(shí)現(xiàn)使用的是OC語言開發(fā),當(dāng)前的計(jì)算機(jī)在硬件配置方面完全滿足開發(fā)的需求

38、,所以在技術(shù)上絕對(duì)是可行的。在軟件方面:cocos2d游戲引擎是一個(gè)讓你輕松開發(fā)游戲的工具,是一個(gè)全面開發(fā)游戲的專業(yè)引擎。因此在軟件開發(fā)平臺(tái)也是成熟可行的。</p><p>  2.1.3 社會(huì)可行性</p><p>  本游戲豐富的道具和還有技能的加入,大大增加了游戲可玩性。多種樣式變化的地圖,使玩家在各個(gè)時(shí)間段和關(guān)卡都能尋找到自己挑戰(zhàn)的目標(biāo),這會(huì)使得玩家長期保持對(duì)游戲的新鮮感。<

39、;/p><p><b>  2.2 功能概述</b></p><p>  本系統(tǒng)主要實(shí)現(xiàn)的功能有“關(guān)卡的選擇系統(tǒng)”、“成就任務(wù)系統(tǒng)”、“技能升級(jí)系統(tǒng)”、“技能描述系統(tǒng)”。在游戲控制實(shí)現(xiàn)方面包含了一般游戲的“開始”,“繼續(xù)”和“暫?!?,還有“退出”。為了增加游戲的可玩性還特別設(shè)置了技能加點(diǎn)重置和游戲重置功能。并在游戲的運(yùn)行方面做了各種不同的背景地圖、各種不同的敵怪、不同類

40、型的防御塔、金幣、生命、游戲菜單、怪物的波數(shù)等等。</p><p><b>  2.3 功能分析</b></p><p>  塔防這類的游戲,人機(jī)交互性好,操作性強(qiáng),耐玩性強(qiáng)。這種游戲在應(yīng)用商店上就不會(huì)過時(shí),增加對(duì)功能的設(shè)計(jì)以及聲音效果等其他方面的考慮和設(shè)計(jì),游戲本身就具有可玩性。如果能實(shí)現(xiàn)多人同時(shí)在線時(shí)時(shí)對(duì)戰(zhàn)類的游戲,相信一定會(huì)受到玩家的認(rèn)可與喜愛。下面從主要功能

41、和關(guān)鍵功能方面來分析游戲的主要功能和關(guān)鍵功能,從而更好的設(shè)計(jì)出此游戲。</p><p>  2.3.1 主要功能分析</p><p>  本游戲的菜單功能包括開始游戲、游戲說明、成就和游戲幫助。其中在點(diǎn)擊開始游戲之后并不是直接進(jìn)入游戲,而是進(jìn)入關(guān)卡選擇界面。關(guān)卡選擇界面第一次進(jìn)入游戲時(shí)只有一個(gè)關(guān)卡,通過了第一個(gè)關(guān)卡之后第二個(gè)關(guān)卡才會(huì)出現(xiàn)。選擇了關(guān)卡之后會(huì)彈出技能選擇框,要自己選擇兩個(gè)技能

42、之后才可以進(jìn)入游戲界面。關(guān)于游戲是對(duì)于游戲的簡單介紹。幫助是對(duì)于各種技能和防御塔的介紹,使得玩家更好的了解游戲,玩好游戲。</p><p>  游戲控制模塊包含了游戲的一些基本控制,在游戲中又暫停,繼續(xù)游戲,重新開始和退出游戲,其主要原理就是通過按鍵的狀態(tài)的改變,來改變游戲的狀態(tài)用來達(dá)到游戲的整體控制。</p><p>  其中技能升級(jí)系統(tǒng)是本游戲的一大特色,玩家可以通過過關(guān)來獲得技能升級(jí)

43、的點(diǎn)數(shù),一共有四個(gè)不同的技能和四種不同的防御塔可以進(jìn)行升級(jí),第一種技能可以產(chǎn)生士兵幫助戰(zhàn)斗,第二種技能可以產(chǎn)生從天而降的流星火,造成群體傷害,第三種技能可以產(chǎn)生閃電,造成單體傷害,第四種技能可以產(chǎn)生隕石,造成單體傷害。還有四種不同的防御塔:兵營、箭塔、炮塔和魔法塔。升級(jí)他們可以增加他們的殺傷力,使得玩家更好的體驗(yàn)游戲。</p><p>  游戲運(yùn)行方面主要包含背景、防御塔、敵怪、金幣,生命、怪物的波數(shù)、暫停菜單的

44、繪制。其中游戲的每一關(guān)都有不同的地圖背景,不同的怪物,每一種怪物都有不同的血量和背景。玩家通過建造不同的防御塔來攻擊敵怪,每種防御塔都有自己的攻擊速度和攻擊力,建造兵營可以產(chǎn)生士兵來阻擋敵怪前進(jìn),擊殺不同的敵怪之后可以得到金幣,玩家可以通過金幣用來建造更多的防御塔攻擊敵人。當(dāng)敵怪抵達(dá)終點(diǎn)時(shí)還未擊殺,玩家會(huì)損失自己的生命值,當(dāng)生命值變成零,游戲結(jié)束,當(dāng)怪物都被消滅,玩家就可以通過此關(guān)卡,進(jìn)入下一關(guān)。游戲功能流程圖如圖2-1所示:</

45、p><p>  圖2-1 游戲功能流程圖</p><p>  從上圖可以看出游戲的主要流程如下:</p><p>  1.游戲開始首先播放LOGO視頻,同時(shí)加載主菜單素材。</p><p>  2.LOGO視頻播放完畢,進(jìn)入主菜單。</p><p><b>  3.進(jìn)入游戲。</b></p&g

46、t;<p>  4.進(jìn)入關(guān)卡選擇。進(jìn)入游戲。</p><p>  5.進(jìn)入技能選擇界面。</p><p>  6.進(jìn)入游戲主場景。</p><p>  7.玩家在游戲中進(jìn)行相關(guān)操作,例如選擇建造防御塔、升級(jí)防御塔、施放技能。</p><p><b>  結(jié)束游戲。</b></p><p&

47、gt;<b>  8.游戲結(jié)束。</b></p><p>  2.3.2 關(guān)鍵功能分析</p><p>  塔防游戲指一類通過在地圖上建造炮塔或類似的建筑物,以防止游戲中敵人進(jìn)攻的策略類游戲,因此建造防御塔,升級(jí)防御塔,怪物行走路線還有技能升級(jí)系統(tǒng)是該游戲的關(guān)鍵部分也是難點(diǎn)部分,下面從這幾點(diǎn)做簡要分析:</p><p>  1.關(guān)于怪物行走路

48、線的分析,怪物的行走路線是直線行走,首先先確定出各轉(zhuǎn)彎的坐標(biāo),不同的怪物每移動(dòng)一個(gè)坐標(biāo)點(diǎn)的時(shí)間都不相同,當(dāng)怪物走到需要轉(zhuǎn)彎的坐標(biāo)點(diǎn)之后,就改變怪物的行走方向。</p><p>  2.關(guān)于防御塔攻擊敵人的分析,每個(gè)防御塔都有自己的攻擊范圍,所有的敵人都存在一個(gè)單獨(dú)的數(shù)組中,定義一個(gè)定時(shí)器,讓定時(shí)器一直判斷防御塔與每個(gè)敵人的距離,當(dāng)有敵人進(jìn)入防御塔的范圍之內(nèi),防御塔就會(huì)發(fā)射子彈攻擊敵人。</p>&l

49、t;p>  3.關(guān)于建造防御塔分析,當(dāng)點(diǎn)擊地圖上可以建造防御塔的地方時(shí),會(huì)彈出一個(gè)選擇建造哪種防御塔的背景圖片,每種防御塔的價(jià)格都不同,當(dāng)滿足該防御塔的價(jià)格時(shí),防御塔的背景圖片是亮的,并且可以點(diǎn)擊,當(dāng)我們點(diǎn)擊可以建造的防御塔時(shí),就可以在地圖上建造一個(gè)防御塔來攻擊敵人。</p><p>  4.關(guān)于兵營產(chǎn)生士兵,并攻擊敵人分析,當(dāng)我們建造一個(gè)兵營時(shí),會(huì)產(chǎn)生三個(gè)士兵,每個(gè)士兵也都有一個(gè)攻擊范圍,當(dāng)敵人出現(xiàn)在該范

50、圍時(shí)會(huì)攻擊敵人,當(dāng)敵人死后,改士兵會(huì)回到自己最初的位置,當(dāng)士兵被敵人攻擊致死后,兵營會(huì)過一段時(shí)間在產(chǎn)生一個(gè)士兵,當(dāng)士兵沒有攻擊敵人時(shí),它的生命值會(huì)慢慢增加,直到達(dá)到最大值。</p><p>  5.關(guān)于系統(tǒng)垃圾回收問題的處理,對(duì)于內(nèi)存資源的釋放,游戲中做了很大的改進(jìn),當(dāng)防御塔賣出的時(shí)候、怪物消失時(shí)及時(shí)釋放資源,使得內(nèi)存回收機(jī)制得到了優(yōu)化。</p><p><b>  2.4本章小

51、結(jié)</b></p><p>  本章對(duì)游戲?qū)崿F(xiàn)的可行性操作進(jìn)行分析,并對(duì)游戲的操作流程的主要功能模塊進(jìn)行的簡要的介紹,便于下一章系統(tǒng)的實(shí)現(xiàn)設(shè)計(jì)打下了基礎(chǔ)。</p><p>  3 軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  戰(zhàn)地塔防是一款精心設(shè)計(jì)的手機(jī)游戲,經(jīng)典的塔防游戲再現(xiàn)手機(jī)之上,在原有的塔防基礎(chǔ)上加入了新的屬性元素,讓游戲的可玩性大大增加,給玩家一個(gè)

52、新奇的事件,本章將對(duì)戰(zhàn)地塔防的設(shè)計(jì)與實(shí)現(xiàn)做了詳細(xì)的說明。</p><p><b>  3.1 系統(tǒng)概述</b></p><p>  戰(zhàn)地塔防手機(jī)游戲是一款十分好玩的策略類游戲,當(dāng)玩家開始游戲時(shí),會(huì)進(jìn)入關(guān)卡選擇界面,當(dāng)完成第一關(guān)之后,第二關(guān)才會(huì)解鎖,選擇進(jìn)入的關(guān)卡,會(huì)彈出技能選擇界面,玩家選擇兩個(gè)技能后,進(jìn)入游戲界面,游戲界面的布局包括一個(gè)出怪口,一個(gè)終點(diǎn),之間是一個(gè)

53、怪的行走路線(是固定的),地圖會(huì)標(biāo)記防御塔的投放位置。當(dāng)點(diǎn)擊防御塔的投放位置后,會(huì)彈出四種防御塔的選擇界面,玩家可以點(diǎn)擊防御塔然后點(diǎn)擊地圖上的投放點(diǎn)來投放防御塔,同時(shí)還可以通過投放技能以消滅定時(shí)產(chǎn)生的幾種不同的怪物獲得金幣。地圖上方顯示金幣和生命,被通過一個(gè)怪物生命減少一,四種防御塔需要相應(yīng)的金幣來購買。當(dāng)生命減少為零時(shí),游戲結(jié)束。</p><p>  3.2 系統(tǒng)模塊設(shè)計(jì)</p><p&g

54、t;  該游戲主要主要可以分為五大模塊,分別為程序控制界面模塊、游戲邏輯模塊、游戲音效模塊、關(guān)卡管理模塊、技能升級(jí)模塊和游戲菜單模塊。程序體系結(jié)構(gòu)如圖3-1所示:</p><p>  圖3-1 程序體系結(jié)構(gòu)圖</p><p>  本程序主要是通過程序控制界面來和用戶進(jìn)行交互,用戶是通過控制界面的菜單模塊來進(jìn)行游戲,游戲的邏輯模塊負(fù)責(zé)記錄金幣的數(shù)量和玩家的血量等,刷新各種數(shù)據(jù)和記錄防御塔的

55、位置信息,刷新怪物和防御塔;游戲音效模塊負(fù)責(zé)聲音的播放;關(guān)卡管理模塊用來讓用戶選擇通過的關(guān)卡;技能升級(jí)模塊負(fù)責(zé)技能的升級(jí)管理和防御塔等級(jí)的提升。</p><p>  3.3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  本節(jié)主要從主界面模塊,關(guān)卡選擇模塊,技能升級(jí)模塊還有游戲的邏輯模塊幾個(gè)方面,對(duì)游戲的設(shè)計(jì)與實(shí)現(xiàn)做了詳細(xì)的說明。同時(shí)cocos2d是一個(gè)封裝了很好的動(dòng)畫系統(tǒng)和GUI系統(tǒng),并提供了相對(duì)

56、完善的功能,大大縮短了游戲開發(fā)的周期,更好的實(shí)現(xiàn)了游戲的功能,因此本節(jié)也對(duì)cocos2d的一個(gè)重要的知識(shí)點(diǎn)進(jìn)行了簡要的說明與理解,使得自己更好的實(shí)現(xiàn)游戲。</p><p>  3.3.1 主界面模塊設(shè)計(jì)與實(shí)現(xiàn)</p><p>  游戲主界面包括一個(gè)背景圖片和雪花的粒子效果還有四個(gè)按鈕項(xiàng)。</p><p>  其中添加游戲背景圖片bgSprite,首先定義一個(gè)CCS

57、prite類,然后添加在CCLayer上,實(shí)現(xiàn)如下:</p><p>  CGSize winSize = [[CCDirector sharedDirector] winSize];</p><p>  CCSprite *bg = [CCSprite spriteWithFile:@"mainMenuBg.png"];</p><p>  [

58、bg setPosition:ccp(winSize.width/2.0f,winSize.height/2.0f)];</p><p>  [self addChild:bg];</p><p>  游戲開發(fā)者通常使用粒子系統(tǒng)來制作視覺特效。粒子系統(tǒng)能發(fā)射大量細(xì)小粒子并且對(duì)他們進(jìn)行渲染效果,而且效率遠(yuǎn)遠(yuǎn)高于渲染同樣數(shù)量的精靈。粒子系統(tǒng)可以模擬火焰、下雨、雪花、蒸氣拖尾、爆炸等其他多種的視

59、覺效果??紤]到界面的美觀性,對(duì)其添加了雪花的粒子效果,具體實(shí)現(xiàn)如下:</p><p>  (CCParticleSystem *)ParticleWithType:(ParticleType)type</p><p><b>  {</b></p><p>  CCParticleSystem *system = nil;</p>

60、<p>  switch (type) {</p><p>  case ParticleSun:</p><p><b>  {</b></p><p>  system = [CCParticleSun node];</p><p><b>  }</b></p>&l

61、t;p><b>  break;</b></p><p>  case ParticleSnow:</p><p><b>  {</b></p><p>  system = [CCParticleSnow node];</p><p>  CCTexture2D *texture = [[

62、CCTexture2D alloc] initWithImage:[UIImage imageNamed:@"snow.png"]];</p><p>  [system setTexture:texture];</p><p><b>  }</b></p><p><b>  break;</b>&

63、lt;/p><p><b>  default:</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  return system;</p><p><b>  }</b>

64、</p><p>  3.3.2 關(guān)卡選擇模塊設(shè)計(jì)與實(shí)現(xiàn)</p><p>  該系統(tǒng)主要內(nèi)容在于關(guān)卡的選擇,第一次進(jìn)入游戲只可以選擇第一關(guān),過了該關(guān)卡之后下一關(guān)才會(huì)打開,因此我們先定義了一個(gè)文件管理類GameUtil類,在該類中我們實(shí)現(xiàn)了兩個(gè)類方法,可以存儲(chǔ)游戲的關(guān)卡到文件里,每次通過一個(gè)關(guān)卡之后我們都會(huì)存入文件,又可以讀取我們存入文件的關(guān)卡信息,在每次加載關(guān)卡的時(shí)候首先會(huì)去讀取關(guān)卡的信

65、息,然后用變量值successLevel得到存儲(chǔ)的關(guān)卡,如果通過了此關(guān)卡,才定義此關(guān)卡的圖片是可以點(diǎn)擊的,具體實(shí)現(xiàn)如下:</p><p>  successLevel = [GameUtil readLevelFromFile];</p><p>  NSString *imageStr = nil;</p><p>  for (int i=0; i<8;

66、i++) {</p><p>  if (i>=successLevel) {</p><p><b>  break;</b></p><p><b>  }</b></p><p>  imageStr = @"btnWaveStation.png";</p>

67、;<p>  CCSprite *level = [CCSprite spriteWithFile:imageStr];</p><p>  level.tag = i+1;</p><p>  float x = 40 + i*54;</p><p>  float y = 60 + i*(arc4random()%10+28);</p>

68、<p>  [level setScale:0.8f];</p><p>  [level setPosition:ccp(x, y)];</p><p>  [self addChild:level];</p><p>  if (i==successLevel-1) {</p><p>  for (int i=0; i&l

69、t;3; i++) {</p><p>  CCSprite *star = [CCSprite spriteWithFile:@"starLightHui.png"];</p><p>  [star setPosition:ccp(level.position.x-16+i*16, level.position.y+35)];</p><p>

70、;  [self addChild:star];</p><p><b>  }</b></p><p><b>  }else{</b></p><p>  for (int i=0; i<3; i++) {</p><p>  CCSprite *star = [CCSprite spri

71、teWithFile:@"starLight.png"];</p><p>  [star setPosition:ccp(level.position.x-18+i*16, level.position.y+40)];</p><p>  [self addChild:star];</p><p><b>  }</b>&

72、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p>  3.3.3 技能模塊設(shè)計(jì)與實(shí)現(xiàn)</p><p>  升級(jí)系統(tǒng)玩家通過完成關(guān)卡可以獲得星星,星星可以用來升級(jí)技能和防御塔的等級(jí)。</p><p>  在此系統(tǒng)中,四種防御塔和技

73、能都繼承自定義的精靈UpdateUtil類,該類繼承CCSprite精靈類,該類都定義自己的屬性starCount(技能的等級(jí)),這樣就能記住自己的等級(jí),并且所有的技能都存在同一個(gè)可變數(shù)組中,這樣在調(diào)用的時(shí)候就能知道每個(gè)技能,并且知道它們的等級(jí)。</p><p>  升級(jí)需要的星星數(shù)量通過fmdb第三方庫,通過mySql存入本地?cái)?shù)據(jù)庫,每次通過關(guān)卡都會(huì)存入一顆星星的數(shù)量,在進(jìn)入該界面時(shí),會(huì)去數(shù)據(jù)庫讀取數(shù)據(jù)。實(shí)現(xiàn)如

74、下:</p><p>  NSString *dbPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/manage.db"];</p><p>  db = [[FMDatabase alloc] initWithPath:dbPath];</p><p>  [db op

75、en];</p><p>  [db executeUpdate:@"create table if not exists Star(ID integer primary key autoincrement, StarCount integer default 0);"];</p><p>  [self insertData];</p><p>

76、;  讀取到每個(gè)防御塔的等級(jí),并且存到數(shù)組中,實(shí)現(xiàn)如下:</p><p>  - (NSArray *)getAllStarRecords</p><p><b>  {</b></p><p>  NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:0];</

77、p><p>  FMResultSet *set = [db executeQuery:@"select *from Star;"];</p><p>  while ([set next]) {</p><p>  NSString *star = [NSString stringWithFormat:@"%d",[set in

78、tForColumn:@"StarCount"]];</p><p>  [array addObject:star];</p><p><b>  }</b></p><p>  return [array copy];</p><p><b>  }</b></p>

79、;<p>  3.3.4 角色模塊設(shè)計(jì)</p><p>  本游戲的角色可分為兩種,一種角色Enemy,非玩家控制,另外一種是Tower,由玩家控制。這兩類角色有著相同的地方,但又有各自邏輯。因此角色模塊可以設(shè)計(jì)為兩個(gè)類:Enemy與Tower,游戲中的每種敵人和防御塔塔分別繼承Enemy和Tower。</p><p>  每個(gè)角色都不同的屬性,Enemy擁有防御力,生命值

80、;Tower有攻擊力,攻擊范圍,CD時(shí)間等等。雖然它們有不同的屬性,但是這些屬性都必須在創(chuàng)建對(duì)象時(shí)候進(jìn)行初始化,從而表現(xiàn)出是不同對(duì)象。因此在對(duì)構(gòu)建類Enemy和Tower時(shí),Enemy和Tower的構(gòu)造函數(shù)中就調(diào)用init()方法,這樣就可以免得忘記對(duì)角色屬性數(shù)據(jù)進(jìn)行初始化。</p><p>  3.3.5 游戲邏輯模塊設(shè)計(jì)與實(shí)現(xiàn)</p><p>  游戲的邏輯是該游戲成功的關(guān)鍵,標(biāo)志著

81、該游戲能否成功制作,下面簡要從游戲中一些主要的邏輯方面的問題來做出簡要的說明。</p><p>  3.3.5.1 添加防御塔和升級(jí)防御塔的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  cocos2d引擎自己兩種觸摸事件的處理機(jī)制分別為CCStandardTouchDelegate和CCTargetedTouchDelegate。CCStandardTouchDelegate包含四個(gè)回調(diào)函數(shù),分別如下

82、:</p><p>  virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)   處理按下的事件</p><p>  virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)   處理移動(dòng)的事件</p><p>

83、  virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)    處理松開的事件</p><p>  virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent)  處理被打斷的事件,例如來電話。</p><p>  添加防

84、御塔首先把能建造塔的地方標(biāo)記出來,把它們都存在一個(gè)數(shù)組中,玩家點(diǎn)擊游戲界面的時(shí)候,會(huì)去響應(yīng)virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)   函數(shù),然后在此函數(shù)中判斷玩家觸摸的點(diǎn)是否與能建造塔的地方重合,實(shí)現(xiàn)如下:</p><p>  for (int i=0;i<towerPlaceArray.count;i++) {&

85、lt;/p><p>  CCSprite *towerPlace = [towerPlaceArray objectAtIndex:i];</p><p>  if (CGRectContainsPoint([towerPlace boundingBox], nodePoint)) {</p><p>  buildTower = i;</p><

86、p>  [self createSelectTowerMenu:towerPlace];</p><p><b>  }</b></p><p><b>  }</b></p><p>  如果玩家與建造塔的地方重合,在游戲界面的右下角會(huì)彈出選擇防御塔的界面,不同的防御塔的價(jià)格不同,當(dāng)滿足建造塔的金幣時(shí),防御塔是亮的

87、,可以建造,效果圖如下:</p><p>  大致實(shí)現(xiàn)如下:首先我們會(huì)定義一個(gè)Tower類,該類有自己的成員變量,如下:</p><p>  @interface Tower : CCSprite</p><p>  @property (nonatomic, assign)int grade; //等級(jí)</p>&l

88、t;p>  @property (nonatomic, assign)int gongji; //攻擊力</p><p>  @property (nonatomic, assign)float pingLv;</p><p>  @property (nonatomic, assign)CGPoint soPoint; //防御塔

89、建造的坐標(biāo)</p><p>  @property (nonatomic, assign)NSMutableArray *placeArray;</p><p>  @property (nonatomic, retain)NSMutableArray *soldarray;</p><p>  四種防御塔都有自己的tag值,這樣我們就能知道建造是哪種防御塔,同時(shí)都

90、有自己的等級(jí)和攻擊力還有攻擊速度,當(dāng)我們建造好了防御塔之后,把它都存在一個(gè)數(shù)組中,便于以后的判斷和使用。</p><p>  當(dāng)我們建造好了防御塔之后,再次點(diǎn)擊建造的防御塔的時(shí)候會(huì)彈出升級(jí)的界面,在此界面中會(huì)出現(xiàn)下次升級(jí)所需的金幣數(shù)量,以及出售此防御塔的金幣數(shù)量,我當(dāng)我們點(diǎn)擊升級(jí)防御塔的后,防御塔會(huì)用的紋理(背景圖片)去代替以前的,而且攻擊速度和攻擊力會(huì)得到提升。當(dāng)我們發(fā)現(xiàn)自己建錯(cuò)了防御塔或者不要這個(gè)防御塔的時(shí)候

91、,可以點(diǎn)擊出售就可以賣出此防御塔。實(shí)現(xiàn)邏輯大致如下:首先會(huì)彈出升級(jí)的界面框,然后通過存所有建造防御塔的數(shù)組去判斷是哪種防御塔,同時(shí)可以得到該防御塔的所有屬性,這樣可以把這些信息顯示在升級(jí)界面上,當(dāng)我們點(diǎn)擊升級(jí)防御塔時(shí),只要替換掉背景圖片,同時(shí)改變它的屬性,這樣防御塔就升級(jí)成功,當(dāng)點(diǎn)擊出售時(shí),我們?cè)谟螒蚪缑嫔锨宄摲烙尘埃瑫r(shí)在存防御塔的數(shù)組中刪除該防御塔,這樣就出售成功。</p><p>  3.3.5.2

92、 添加敵怪設(shè)計(jì)與實(shí)現(xiàn)</p><p>  首先我們會(huì)定義一個(gè)Enemy類,用來實(shí)現(xiàn)敵怪,每個(gè)怪物都有自己的屬性,實(shí)現(xiàn)如下:</p><p>  @interface Enemy : CCSprite</p><p>  @property (nonatomic, assign)float speed; //速度</p><p>

93、  @property (nonatomic, assign)int blood; //血量</p><p>  @property (nonatomic, assign)int director;</p><p>  @property (nonatomic, assign)int grade; //等級(jí)</p><p>  @

94、property (nonatomic, assign)BOOL isGongji; //攻擊力</p><p>  當(dāng)開始游戲之后,會(huì)啟動(dòng)一個(gè)定時(shí)器:</p><p>  [self schedule:@selector(game:) interval:0.5f];</p><p>  這樣每隔一定的時(shí)間我們會(huì)去添加一個(gè)敵怪,添加的敵怪我們會(huì)存在同一個(gè)數(shù)組e

95、nemyArray中,當(dāng)我們第一波敵人出現(xiàn)之后,會(huì)隔一段時(shí)間然后在出現(xiàn)第二波敵人,在這個(gè)時(shí)間怪物的出口會(huì)出現(xiàn)一個(gè)閃現(xiàn)的圖像,當(dāng)我們點(diǎn)擊之后,怪物就可以直接出現(xiàn),不需在等待一段時(shí)間之后在出現(xiàn)敵人,實(shí)現(xiàn)如下:</p><p>  - (void)game:(double)dt</p><p><b>  {</b></p><p>  enemyC

96、ount ++ ;</p><p><b>  //第一波</b></p><p>  if (enemyCount==1) {</p><p>  SoundEngine_StartEffect(musicWaveSoundID);</p><p><b>  }</b></p>&

97、lt;p>  if (enemyCount<=12&&enemyCount%4==0) {</p><p><b>  wave = 1;</b></p><p>  Enemy *enemy = [self createEnemy1];</p><p>  [enemy setPosition:ccp(150, 3

98、25)];</p><p>  [self createBlood:enemy];</p><p>  [self enemyMove1:enemy];</p><p><b>  }</b></p><p>  if (enemyCount==29) {</p><p>  SoundEngin

99、e_StartEffect(musicWaveSoundID);</p><p><b>  }</b></p><p>  if (enemyCount==30&&isPlay==NO) {</p><p>  enemyCount --;</p><p>  [self schedule:@selec

100、tor(showPlay) interval:0.5f];</p><p>  [self schedule:@selector(showPlaySprite) interval:4.0f];</p><p><b>  }</b></p><p>  3.3.5.3 防御塔攻擊敵怪設(shè)計(jì)與實(shí)現(xiàn)</p><p>  攻擊

101、塔的攻擊邏輯會(huì)直接影響到游戲體驗(yàn)效果。什么時(shí)候攻擊敵人,什么時(shí)候停止攻擊等等,正常的邏輯順序如圖3-2所示:</p><p>  圖3-2 攻擊邏輯圖</p><p><b>  代碼實(shí)現(xiàn)如下:</b></p><p>  首先定義一個(gè)定時(shí)器:</p><p>  [self schedule:@selector(p

102、layEnemy) interval:0.2f];</p><p>  在playEneny方法中,炮塔將不斷的檢查是否在攻擊范圍內(nèi)的敵人,如果在攻擊范圍內(nèi),炮塔將會(huì)對(duì)敵人進(jìn)行攻擊。一個(gè)敵人一旦被標(biāo)記為被攻擊,將會(huì)調(diào)用方法讓炮塔以攻擊間隔發(fā)射子彈。反過來,每個(gè)敵人都存儲(chǔ)有向其攻擊的炮塔列表,所以如果敵人被殺死了,那么炮塔就會(huì)被通知停止攻擊。一旦敵人進(jìn)入炮塔的攻擊范圍,炮塔就會(huì)向它們開火攻擊,敵人的血量條就會(huì)減少,

103、直到被消滅。程序?qū)崿F(xiàn)如下:</p><p>  - (void)playEnemy</p><p><b>  {</b></p><p>  static int k=1;</p><p><b>  k++;</b></p><p>  for (Tower *tower

104、 in towerArray) {</p><p>  for (int i=0;i<[enemyArray count];i++) {</p><p>  Enemy *enemy = [enemyArray objectAtIndex:i];</p><p>  float flx = tower.position.x - enemy.position.x

105、;</p><p>  float fly = tower.position.y - enemy.position.y;</p><p>  float distance = sqrt(flx*flx+fly*fly);</p><p>  if (tower.tag==600&&distance<=120) {</p><

106、p><b>  int dis;</b></p><p>  if (tower.grade==1) {</p><p><b>  dis = 8;</b></p><p>  }else if (tower.grade==2){</p><p><b>  dis = 6;<

107、;/b></p><p><b>  }else{</b></p><p><b>  dis = 4;</b></p><p><b>  }</b></p><p>  if (k%dis==0) {</p><p>  CCSprite *a

108、tb = [CCSprite spriteWithFile:@"atb.png"];</p><p>  [atb setPosition:ccp(tower.position.x, tower.position.y+20)];</p><p>  [self addChild:atb];</p><p>  atb.tag = tower.go

109、ngji*2.5;</p><p>  CGPoint point = enemy.position;</p><p>  if (enemy.director==1) {</p><p>  point.y += enemy.speed*0.8;</p><p>  }else if (enemy.director==2){</p&g

110、t;<p>  point.y -= enemy.speed*0.8;</p><p>  }else if (enemy.director==3){</p><p>  point.x -= enemy.speed*0.8;</p><p>  }else if (enemy.director==4){</p><p>  p

111、oint.x += enemy.speed*0.8;</p><p><b>  }</b></p><p>  CCJumpTo *jump = [CCJumpTo actionWithDuration:0.8f position:point height:30 jumps:1];</p><p>  CCRotateTo *rotate =

112、 [CCRotateTo actionWithDuration:0.8f angle:180];</p><p>  CCCallFuncN *call = [CCCallFuncN actionWithTarget:self selector:@selector(callFun1:)];</p><p>  CCSpawn *spawn = [CCSpawn actions:jump,r

113、otate, nil];</p><p>  CCSequence *sequence = [CCSequence actions:spawn,call, nil];</p><p>  [atb runAction:sequence];</p><p><b>  break;</b></p><p><b>

114、;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  3.3.5.4 技能攻擊敵怪設(shè)計(jì)與實(shí)現(xiàn)</p><p>  當(dāng)玩家點(diǎn)擊技能時(shí),我們首先判斷觸摸點(diǎn)擊時(shí)哪個(gè)技能,根據(jù)技能的tag值來找到:</p><

115、p>  for (int i=0;i<self.children.count;i++) {</p><p>  CCSprite *sprite = [self.children objectAtIndex:i];</p><p>  CCSprite *touming = (CCSprite *)[self getChildByTag:sprite.tag+10];</

116、p><p>  if (CGRectContainsPoint([sprite boundingBox], nodePoint)&&sprite.tag==250&&touming.visible==NO) {</p><p>  [self selectjiNeng:sprite];</p><p>  jiNeng = 1;</

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論