捕魚達(dá)人的課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課</b></p><p><b>  程</b></p><p><b>  設(shè)</b></p><p><b>  計(jì)</b></p><p><b>  報(bào)</b></p><p

2、><b>  告</b></p><p>  設(shè)計(jì)名稱: “捕魚達(dá)人”的手游開發(fā)</p><p><b>  班 級(jí):</b></p><p><b>  姓 名: </b></p><p>  指導(dǎo)老師: </

3、p><p>  組織單位: </p><p>  時(shí) 間: 2013.6.10——2013.6.22</p><p><b>  摘要</b></p><p>  利用cocos2d-x引擎,通過構(gòu)建三個(gè)框架,包含LogoScene、SlectScene、GameScen

4、e這三個(gè)場(chǎng)景,通過三個(gè)流程達(dá)到捕魚的效果:1)LogoScene :包含“開始游戲”、“退出游戲”以及“網(wǎng)絡(luò)連接”。點(diǎn)擊“開始游戲”字樣的按鈕,點(diǎn)擊跳轉(zhuǎn)到SelectScene:2)SelectScene :選擇關(guān)卡:包含已經(jīng)解鎖的“繽紛珊瑚島”,未解鎖的“沉沒古跡”、“夢(mèng)幻藍(lán)礁”,還有一關(guān)卡暫未開放的,以及返回按鈕;3)GameScene : 有一個(gè)炮塔,對(duì)準(zhǔn)游動(dòng)的海龜發(fā)射炮彈,并可以實(shí)時(shí)跟蹤。</p><p>

5、;  關(guān)鍵字: cocos2d-x引擎 LogoScene SelectScene GameScene</p><p><b>  目錄</b></p><p>  需求分析 ——————————————————————————————— 3</p><p>  1.1、設(shè)計(jì)目的 —————————————————————

6、———————— 3</p><p>  1.2、設(shè)計(jì)要求 ————————————————————————————— 3</p><p>  二、概要設(shè)計(jì) ——————————————————————————————— 4 </p><p>  2.1、項(xiàng)目的組成框架 ————————————————————————— 4</p><p&

7、gt;  2.2、項(xiàng)目的流程 ——————————————————————————— 4</p><p>  詳細(xì)設(shè)計(jì) ——————————————————————————————— 5</p><p>  3.1、宏文件和資源文件 ———————————————————————— 5 </p><p>  3.2、第一個(gè)場(chǎng)景 LogoScene ————

8、—————————————————— 6</p><p>  3.3、第一個(gè)場(chǎng)景 SelectScene ————————————————————— 7</p><p>  3.4、第一個(gè)場(chǎng)景 GameScene —————————————————————— 7</p><p>  3.5、第一個(gè)場(chǎng)景 GameScene ————————————————

9、—————— 7</p><p>  四、調(diào)試與測(cè)試 ————————————————————————————— 8</p><p>  4.1、調(diào)試中的問題和解決方法 ————————————————————— 8</p><p>  4.2、運(yùn)行結(jié)果 ———————————————————————————— 8</p><p

10、>  源程序清單和運(yùn)行結(jié)果 ————————————————————————— 9</p><p>  5.1、附錄一 ————————————————————————————— 9</p><p>  5.2、附錄二 ————————————————————————————— 26</p><p><b>  一、需求分析</b>

11、</p><p><b>  1.1設(shè)計(jì)目的</b></p><p>  “捕魚達(dá)人”的手游開發(fā)課程設(shè)計(jì)是一個(gè)綜合性的設(shè)計(jì)性環(huán)節(jié),旨在通過手機(jī)游戲開發(fā)的實(shí)踐訓(xùn)練,進(jìn)一步掌握設(shè)計(jì)開發(fā)軟件的方法與技術(shù),學(xué)會(huì)數(shù)據(jù)的組織方法,提高軟件的開發(fā)實(shí)際應(yīng)用能力,培養(yǎng)創(chuàng)造性的工程設(shè)計(jì)能力和分析、解決問題的能力,鞏固學(xué)生已學(xué)知識(shí),使學(xué)生熟悉軟件企業(yè)軟件開發(fā)過程,提高學(xué)生對(duì)知識(shí)的融會(huì)貫通能

12、力及動(dòng)手能力。培養(yǎng)學(xué)生運(yùn)用所學(xué)知識(shí)的基礎(chǔ)理論、基本知識(shí)和基本技能,分析解決實(shí)際問題能力的一個(gè)重要環(huán)節(jié)。它與課堂教學(xué)環(huán)節(jié)彼此配合,相輔相成,在某種程度上是課堂學(xué)習(xí)的繼續(xù)、深化和檢驗(yàn)。它的實(shí)踐性和綜合性是其它教學(xué)環(huán)節(jié)所不能代替的。課程設(shè)計(jì)能使學(xué)生受到必需的綜合訓(xùn)練,在不同程度上提高各種能力。</p><p>  通過課程設(shè)計(jì),使學(xué)生熟練掌握C++語言課程中所學(xué)的理論知識(shí),通過綜合C++語言的基本知識(shí)來解決實(shí)際問題,加

13、強(qiáng)學(xué)生分析和解決問題的能力。</p><p>  “捕魚達(dá)人”游戲是通過三個(gè)場(chǎng)景的建立,通過進(jìn)入LogoScene ,點(diǎn)擊“開始游戲”字樣的按鈕,點(diǎn)擊跳轉(zhuǎn)到SelectScene,選擇關(guān)卡進(jìn)入已經(jīng)解鎖的“繽紛珊瑚島”進(jìn)入GameScene : 有一個(gè)炮塔,對(duì)準(zhǔn)游動(dòng)的海龜發(fā)射炮彈,并可以實(shí)時(shí)跟蹤。</p><p><b>  1.2、設(shè)計(jì)要求</b></p>

14、<p>  框架:3個(gè)場(chǎng)景,LogoScene、StartScene、GameScene流程:1)LogoScene :LogoScene :包含“開始游戲”、“退出游戲”以及“網(wǎng)絡(luò)連接”。點(diǎn)擊“開始游戲”字樣的按鈕,點(diǎn)擊跳轉(zhuǎn)到SelectScene:</p><p>  2)StratScene :選擇關(guān)卡:包含已經(jīng)解鎖的“繽紛珊瑚島”,未解鎖的“沉沒古”、“夢(mèng)幻藍(lán)礁”,還有一關(guān)卡暫未開放的,以

15、及返回按鈕;</p><p>  3)GameScene : 有一個(gè)炮塔,對(duì)準(zhǔn)游動(dòng)的海龜發(fā)射炮彈,并可以實(shí)時(shí)跟蹤。</p><p><b>  二、概要設(shè)計(jì)</b></p><p>  2.1、項(xiàng)目的組成框架,如圖(一):</p><p>  圖(一)項(xiàng)目框架結(jié)構(gòu)圖</p><p>  2.2、項(xiàng)

16、目的流程,如圖(二)所示:</p><p>  圖(二)項(xiàng)目的流程圖</p><p><b>  三、詳細(xì)設(shè)計(jì)</b></p><p>  3.1、宏文件和資源文件</p><p>  這一步我們準(zhǔn)好準(zhǔn)備工作,分別寫好游戲所需的宏文件和資源文件,為接下來的任務(wù)做好鋪墊。</p><p><b

17、>  macro.h</b></p><p>  resource.h</p><p>  ----------------------------------------------------------------------</p><p>  #ifndef __MACRO_H__</p><p>  #defin

18、e __MACRO_H__</p><p>  #define SCREEN_X 960 //屏幕大小,對(duì)應(yīng)著main.cpp</p><p>  #define SCREEN_Y 640</p><p><b>  enum{</b></p><p>  KZBACKGROUND = 0,//背景<

19、/p><p>  KZFLOATBACKGROUND,//浮動(dòng)背景 </p><p>  KZNORMALSPRITE,//普通精靈</p><p>  KZTIPSPRITE,//頂端精靈</p><p>  KZMENU,//菜單</p><p>  KZNORMALDI

20、ALOG,//普通對(duì)話框</p><p>  KZTIPDIALOG,//頂端對(duì)話框</p><p><b>  };</b></p><p>  #endif // __MACRO_H__</p><p>  目的:使用宏定義是為了在加載精靈到addchild中時(shí),層優(yōu)先級(jí)可以一目了然</p&

21、gt;<p>  ---------------------------------------------------------------------------------</p><p>  #ifndef __RESOURCE_H__</p><p>  #define __RESOURCE_H__</p><p>  //logoscen

22、e</p><p>  static const char* pPath_ls_BG_pic = "images/logoscene_bg.png"; </p><p>  static const char* pPath_ls_logo_pic = "images/logoscene_logo.png"; </p><p&g

23、t;  static const char* pPath_ls_start_word = "images/logoscene_start_word.png"; </p><p>  static const char* pPath_ls_start1_button = "images/logoscene_start1_button.png"; </p>&

24、lt;p>  static const char* pPath_ls_start2_button = "images/logoscene_start2_button.png";</p><p>  static const char* pPath_ls_exit1_button = "images/logoscene_exit1_button.png";</p&

25、gt;<p>  static const char* pPath_ls_exit2_button = "images/logoscene_exit2_button.png";</p><p>  static const char* pPath_ls_net = "images/logoscene_net.png";</p><p>

26、  static const char* pPath_ls_net_word = "images/logoscene_net_word.png";</p><p>  //selectscene</p><p>  static const char* pPath_ss_earth = "images/selectscene_earth.png";&

27、lt;/p><p>  static const char* pPath_ss_rotate = "images/selectscene_rotate.png";</p><p>  static const char* pPath_ss_guji = "images/selectscene_guji.png";</p><p>

28、  static const char* pPath_ss_shanhu = "images/selectscene_shanhu.png";</p><p>  static const char* pPath_ss_lanjiao = "images/selectscene_lanjiao.png";</p><p>  static const

29、 char* pPath_ss_xiaochouyu = "images/selectscene_xiaochouyu.png";</p><p>  static const char* pPath_ss_lock = "images/selectscene_lock.png";</p><p>  static const char* pPath

30、_ss_guji_word = "images/selectscene_guji_word.png";</p><p>  static const char* pPath_ss_shanhu_word = "images/selectscene_shanhu_word.png";</p><p>  static const char* pPath

31、_ss_lanjiao_word = "images/selectscene_lanjiao_word.png";</p><p>  static const char* pPath_ss_xiaochouyu_word = "images/selectscene_xiaochouyu_word.png";</p><p>  static con

32、st char* pPath_ss_back1_button = "images/selectscene_back1.png";</p><p>  static const char* pPath_ss_back2_button = "images/selectscene_back1.png";</p><p>  //loadscene</

33、p><p>  static const char* pPath_lds_logo = "images/loadscene_logo.png";</p><p>  static const char* pPath_lds_loading1 = "images/loadscene_loading1.png";</p><p>  

34、static const char* pPath_lds_loading2 = "images/loadscene_loading2.png";</p><p>  #endif // __RESOURCE_H__</p><p>  說明:這是今天所要使用的資源文件,全部放置在buyudaren2\Resources\images中</p><p&

35、gt;  目的是為了方便加載如CCSprite::create( )中直接放圖片所對(duì)應(yīng)的字符串。</p><p>  3.2、第一個(gè)場(chǎng)景 LogoScene</p><p>  此場(chǎng)景為游戲主界面,在已經(jīng)寫好函數(shù)框架中添加和效果,在init()中寫如下程序:</p><p>  //1.添加logo圖片</p><p>  CCSprite*

36、 logoPic = CCSprite::create("logo.png");</p><p>  logoPic->setPosition(ccp(240,160));</p><p>  addChild(logoPic);</p><p>  //2.logo動(dòng)作</p><p>  CCActionInte

37、rval* logoAct1 = CCFadeIn::create(1.5f);</p><p>  CCActionInterval* logoAct2 = CCFadeOut::create(1.5f);</p><p>  logoPic->runAction(CCSequence::create(logoAct1,logoAct2,NULL));</p><

38、;p>  (1)進(jìn)入下一個(gè)場(chǎng)景</p><p>  a.要在LogoScene.h中添加</p><p>  void nextScene(float);</p><p>  b.在LogoScene.cpp中定義這個(gè)函數(shù)</p><p>  void LogoScene::nextScene( float )</p>&

39、lt;p><b>  {</b></p><p>  CCScene* nS = StartScene::scene();</p><p>  CCDirector::sharedDirector()->replaceScene(nS);</p><p><b>  }</b></p><p

40、> ?。?)然后添加頭文件</p><p>  #include "StartScene.h"</p><p>  (3)所得的程序見5.1附錄一:7、LogoScene.h和8、LogoScene.cpp</p><p>  3.3、第二個(gè)場(chǎng)景 SelectScene</p><p>  所得的程序見5.1、附錄一

41、:9、SelectScene.h和10、SelectScene.cpp</p><p>  3.4、第三個(gè)場(chǎng)景 GameScene</p><p>  所得的程序見5.1、附錄一:5、GameScene.h和6、GameScene.cpp</p><p><b>  3.5、附加程序:</b></p><p>  所得

42、的程序見5.1、附錄一:11.main.h、12.main.cpp、 </p><p>  1.AppDelegate.h、2.AppDelegate.cpp </p><p><b>  四、調(diào)試與測(cè)試</b></p><p>  4.1、調(diào)試中的問題與解決方案:</p><p>  (1)無法顯示結(jié)果,錯(cuò)誤提示:“L

43、INK : fatal error LNK1104: 無法打開文件‘libcocos2d.lib’”。</p><p><b>  解決方法:</b></p><p>  a.在虛擬機(jī)的e盤里面,有個(gè) #cocos2d-source#v1 從這里進(jìn)去,然后把我們的項(xiàng)目添加進(jìn)去;</p><p>  b.在里面用helloworld 是否有 這兩

44、項(xiàng),如無添加即可。</p><p>  (2)運(yùn)行可以出來,可是出現(xiàn)的很多都連在一起,并不分散,顯得畫面的質(zhì)感很差。</p><p><b>  解決方法:</b></p><p>  在GameScene中,找到倒數(shù)第三行,及這段程序:</p><p>  CCMoveTo::create(rand()%3+7ccp(

45、-winSize.width*0.1,winSize.height*(rand()%50*0.01 + 0.25)));</p><p>  修改“rand()%3”為“rand()%10”,即減慢隨機(jī)出魚的速度。</p><p>  (3)運(yùn)行時(shí)可以得出結(jié)果,可是只有最后一個(gè)界面。</p><p><b>  解決方法:</b></p&

46、gt;<p>  在2.AppDelegate.cpp中添加#include "LogoScene.h",并且修改“CCScene *pScene =ScreenScene::scene();”為“CCScene *pScene = LogoScene::scene();”</p><p><b>  4.2、運(yùn)行結(jié)果:</b></p><

47、;p>  得到的最終界面詳見5.2、附錄二。</p><p>  五、源程序清單和運(yùn)行結(jié)果</p><p><b>  5.1、附錄一:</b></p><p>  1.AppDelegate.h</p><p>  #ifndef __APP_DELEGATE_H__</p><p>  

48、#define __APP_DELEGATE_H__</p><p>  #include "cocos2d.h"</p><p><b>  /**</b></p><p>  @brief The cocos2d Application.</p><p>  The reason for i

49、mplement as private inheritance is to hide some interface call by CCDirector.</p><p><b>  */</b></p><p>  class AppDelegate : private cocos2d::CCApplication</p><p><

50、b>  {</b></p><p><b>  public:</b></p><p>  AppDelegate();</p><p>  virtual ~AppDelegate();</p><p><b>  /**</b></p><p>  @b

51、rief Implement CCDirector and CCScene init code here.</p><p>  @return true Initialize success, app continue.</p><p>  @return false Initialize failed, app terminate.</p><p>

52、;<b>  */</b></p><p>  virtual bool applicationDidFinishLaunching();</p><p><b>  /**</b></p><p>  @brief The function be called when the application enter ba

53、ckground</p><p>  @param the pointer of the application</p><p><b>  */</b></p><p>  virtual void applicationDidEnterBackground();</p><p><b>  /**<

54、/b></p><p>  @brief The function be called when the application enter foreground</p><p>  @param the pointer of the application</p><p><b>  */</b></p><p&

55、gt;  virtual void applicationWillEnterForeground();</p><p><b>  };</b></p><p>  #endif // __APP_DELEGATE_H__</p><p>  2.AppDelegate.cpp</p><p>  #include &

56、quot;cocos2d.h"</p><p>  #include "CCEGLView.h"</p><p>  #include "AppDelegate.h"</p><p>  #include "SimpleAudioEngine.h"</p><p>  #i

57、nclude "LogoScene.h"</p><p>  #include "macro.h"</p><p>  using namespace CocosDenshion;</p><p>  USING_NS_CC;</p><p>  AppDelegate::AppDelegate()&l

58、t;/p><p><b>  {</b></p><p><b>  }</b></p><p>  AppDelegate::~AppDelegate()</p><p><b>  {</b></p><p>  SimpleAudioEngine::e

59、nd();</p><p><b>  }</b></p><p>  bool AppDelegate::applicationDidFinishLaunching()</p><p><b>  {</b></p><p>  // initialize director</p>

60、<p>  CCDirector *pDirector = CCDirector::sharedDirector();</p><p>  pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());</p><p>  // turn on display FPS</p><p>  pDirec

61、tor->setDisplayStats(true);</p><p>  // set FPS. the default value is 1.0/60 if you don't call this</p><p>  pDirector->setAnimationInterval(1.0 / 60);</p><p>  // create

62、a scene. it's an autorelease object</p><p>  CCScene *pScene = LogoScene::scene();</p><p><b>  // run</b></p><p>  pDirector->runWithScene(pScene);</p><

63、;p>  return true;</p><p><b>  }</b></p><p>  // This function will be called when the app is inactive. When comes a phone call,it's be invoked too</p><p>  void A

64、ppDelegate::applicationDidEnterBackground()</p><p><b>  {</b></p><p>  CCDirector::sharedDirector()->stopAnimation();</p><p>  SimpleAudioEngine::sharedEngine()->p

65、auseBackgroundMusic();</p><p><b>  }</b></p><p>  // this function will be called when the app is active again</p><p>  void AppDelegate::applicationWillEnterForeground(

66、)</p><p><b>  {</b></p><p>  CCDirector::sharedDirector()->startAnimation();</p><p>  SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();</p><p&

67、gt;<b>  }</b></p><p><b>  3.macro.h</b></p><p>  #ifndef __MACRO_H__</p><p>  #define __MACRO_H__</p><p>  //對(duì)應(yīng)main.cpp中,設(shè)置屏幕坐標(biāo)</p><p

68、>  #define SCREEN_X 960</p><p>  #define SCREEN_Y 640</p><p>  //對(duì)應(yīng)AppDelegate.cpp中,設(shè)置第一啟動(dòng)場(chǎng)景</p><p>  #include "LogoScene.h"</p><p>  #include "Select

69、Scene.h"</p><p>  #include "GameScene.h"</p><p>  #define CURRENT_SCREEN GameScene</p><p>  #include "SimpleAudioEngine.h"</p><p><b>  en

70、um{</b></p><p>  KZBACKGROUND = 0,//背景</p><p>  KZFLOATBACKGROUND,//浮動(dòng)背景 </p><p>  KZNORMALSPRITE,//普通精靈</p><p>  KZTIPSPRITE,//頂端精靈</p>

71、;<p>  KZMENU,//菜單</p><p>  KZNORMALDIALOG,//普通對(duì)話框</p><p>  KZTIPDIALOG,//頂端對(duì)話框</p><p><b>  };</b></p><p>  #endif // __MACRO_H__<

72、;/p><p>  4.resource.h</p><p>  #ifndef __MAIN_H__</p><p>  #define __MAIN_H__</p><p>  #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows h

73、eaders</p><p>  // Windows Header Files:</p><p>  #include <windows.h></p><p>  #include <tchar.h></p><p>  // C RunTime Header Files</p><p>  

74、#include "CCStdC.h"</p><p>  #endif // __WINMAIN_H__</p><p>  5.GameScene.h</p><p>  #ifndef __GAMESCENE_H__</p><p>  #define __GAMESCENE_H__</p>&l

75、t;p>  #include "cocos2d.h"</p><p>  #include "resource.h"</p><p>  #include "macro.h"</p><p>  USING_NS_CC;</p><p>  class GameScene :

76、public CCLayer</p><p><b>  {</b></p><p><b>  public:</b></p><p>  GameScene();</p><p>  ~GameScene();</p><p>  virtual bool init();

77、</p><p>  static CCScene* scene();</p><p>  CREATE_FUNC(GameScene);</p><p>  /////////////////////////////////////</p><p>  void initData();</p><p>  void

78、 shoot(float);</p><p>  void spriteMoveFinished(CCNode*);</p><p>  void updateTest(float);</p><p>  void crash(CCSprite*,CCSprite*);</p><p>  void addFish(float);</p

79、><p>  //////////////////////////////</p><p>  virtual void registerWithTouchDispatcher(); </p><p>  virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); </p><p>

80、;  virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); </p><p>  virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); </p><p><b>  private:</b></p><p>

81、  CCSize winSize; //屏幕尺寸</p><p>  CCSprite* tower;</p><p>  CCSprite* bullet;</p><p>  CCArray* bulletArr;</p><p>  CCSprite* fish;</p><p>  CCArray* fish

82、Arr;</p><p>  float k;//斜率</p><p>  float diffRotate; //角度差</p><p><b>  };</b></p><p>  #endif // __GAMESCENE_H__</p><p>  6.GameScene.cpp&

83、lt;/p><p>  #include "GameScene.h"</p><p>  GameScene::GameScene()</p><p><b>  {</b></p><p>  bulletArr = NULL;</p><p><b>  }

84、</b></p><p>  GameScene::~GameScene()</p><p><b>  {</b></p><p>  if(bulletArr){</p><p>  bulletArr->release();</p><p>  bulletArr = NU

85、LL;</p><p><b>  }</b></p><p><b>  }</b></p><p>  bool GameScene::init()</p><p><b>  {</b></p><p>  srand(time(0));</

86、p><p>  bulletArr = CCArray::create();</p><p>  bulletArr->retain();</p><p>  initData();</p><p>  schedule(schedule_selector(GameScene::addFish),rand()%3);</p>

87、<p>  return true;</p><p><b>  }</b></p><p>  CCScene* GameScene::scene()</p><p><b>  {</b></p><p>  CCScene* myScene = CCScene::create();&

88、lt;/p><p>  GameScene* myLayer = GameScene::create();</p><p>  myScene->addChild(myLayer);</p><p>  return myScene;</p><p><b>  }</b></p><p>  

89、void GameScene::initData()</p><p><b>  {</b></p><p><b>  //獲取屏幕尺寸</b></p><p>  winSize = CCDirector::sharedDirector()->getWinSize();</p><p>&

90、lt;b>  //添加背景圖片</b></p><p>  CCSprite* bg = CCSprite::create(pPath_gs_bg);</p><p>  bg->setPosition(ccp(winSize.width*0.5,winSize.height*0.5));</p><p>  addChild(bg,KZBA

91、CKGROUND);</p><p><b>  //添加炮塔圖片</b></p><p>  tower = CCSprite::create(pPath_gs_tower1);</p><p>  tower->setPosition(ccp(winSize.width*0.5,winSize.height*0.05));</p

92、><p>  addChild(tower,KZTIPSPRITE);</p><p><b>  //設(shè)置為可觸摸</b></p><p>  setTouchEnabled(true); </p><p><b>  }</b></p><p>  void Gam

93、eScene::shoot(float dt)</p><p><b>  {</b></p><p><b>  //發(fā)射</b></p><p>  CCActionInterval* bAct = CCMoveBy::create(3.0f,ccp(winSize.height/k ,winSize.height))

94、; </p><p>  bullet->runAction(CCSequence::create(</p><p><b>  bAct,</b></p><p>  CCCallFuncN::create(this, callfuncN_selector(GameScene::spriteMoveFinished)), <

95、/p><p><b>  NULL));</b></p><p>  //射出的子彈飛出屏幕后被父節(jié)點(diǎn)銷毀,避免無效精靈數(shù)</p><p><b>  }</b></p><p>  void GameScene::spriteMoveFinished(CCNode *sender )</p>

96、;<p><b>  {</b></p><p>  CCSprite *sprite = (CCSprite*)sender;</p><p>  this->removeChild(sprite, true);</p><p><b>  }</b></p><p>  //

97、////////////////////////////////////////////////////////////////////////</p><p>  void GameScene::registerWithTouchDispatcher()</p><p><b>  {</b></p><p>  CCDirector::sh

98、aredDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true); </p><p><b>  }</b></p><p>  bool GameScene::ccTouchBegan( CCTouch *pTouch, CCEvent *pEvent )</p>

99、<p><b>  {</b></p><p>  CCLOG("%f,%f",pTouch->getLocation().x,pTouch->getLocation().y); </p><p><b>  /*</b></p><p>  CCLOG 調(diào)試日志,在main

100、.cpp的#define USE_WIN32_CONSOLE 這一行,把它的注釋刪掉即開啟調(diào)試框</p><p>  兩個(gè)%f是為了查看我們這里鼠標(biāo)點(diǎn)擊后的坐標(biāo)點(diǎn),用%f是精度問題</p><p><b>  */</b></p><p>  //計(jì)算觸點(diǎn)坐標(biāo)和炮塔坐標(biāo)的差值</p><p>  float x = pT

101、ouch->getLocation().x - tower->getPosition().x;</p><p>  float y = pTouch->getLocation().y - tower->getPosition().y;</p><p><b>  //計(jì)算斜率</b></p><p><b> 

102、 k = y/x;</b></p><p>  //計(jì)算炮塔旋轉(zhuǎn)角度</p><p>  diffRotate = atan2(x,y)*180/3.14;</p><p>  //設(shè)置炮塔的旋轉(zhuǎn)位置,對(duì)準(zhǔn)觸點(diǎn)</p><p>  tower->setRotation(diffRotate);</p><

103、;p><b>  //添加子彈圖片</b></p><p>  bullet = CCSprite::create(pPath_gs_bullet1);</p><p>  bullet->setAnchorPoint(ccp(0.5,0));</p><p>  bullet->setPosition(ccp(winSize

104、.width*0.5,winSize.height*0.05));</p><p>  addChild(bullet,KZNORMALSPRITE);</p><p><b>  //設(shè)置子彈方向</b></p><p>  bullet->setRotation(diffRotate);</p><p>  /

105、/單個(gè)炮彈放入炮彈數(shù)組中</p><p>  bulletArr->addObject(bullet);</p><p><b>  //炮彈發(fā)射</b></p><p>  schedule(schedule_selector(GameScene::shoot),0.1f);</p><p><b> 

106、 //碰撞檢測(cè)</b></p><p>  schedule(schedule_selector(GameScene::updateTest),0.1f);</p><p>  return true;</p><p><b>  }</b></p><p>  void GameScene::ccTouch

107、Moved( CCTouch *pTouch, CCEvent *pEvent )</p><p><b>  {</b></p><p><b>  }</b></p><p>  void GameScene::ccTouchEnded( CCTouch *pTouch, CCEvent *pEvent )</p

108、><p><b>  {</b></p><p><b>  }</b></p><p>  //////////////////////////////////////////////////////////////////////////</p><p>  void GameScene::upda

109、teTest( float )</p><p><b>  {</b></p><p>  crash(bullet,fish);</p><p><b>  }</b></p><p>  void GameScene::crash( CCSprite* sp1,CCSprite* sp2)<

110、;/p><p><b>  {</b></p><p>  //CCRect rect1 = sp1->getTextureRect(); //getTextureRect 獲取這張圖的寬高等信息</p><p>  //CCRect rect2 = sp1->getTextureRect();</p><p>

111、  //CCPoint sp1_ori = ccpSub(sp1->getPosition(),ccp(sp1->getContentSize().width/2,sp1->getContentSize().height/2)); </p><p>  //CCPoint sp2_ori = ccpSub(sp2->getPosition(),ccp(sp2->getContentS

112、ize().width/2,sp2->getContentSize().height/2)); </p><p>  //rect1.origin = sp1_ori;//得到圖片的錨點(diǎn)</p><p>  //rect2.origin = sp2_ori;</p><p>  //if (rect1.intersectsRect(rect2)) //如果

113、錨點(diǎn)相碰,則判定其相碰</p><p><b>  //{</b></p><p>  //removeChild(sp2,true);</p><p>  //unschedule(schedule_selector(GameScene::updateTest));</p><p><b>  //}&

114、lt;/b></p><p><b>  }</b></p><p>  //////////////////////////////////////////////////////////////////////////</p><p>  void GameScene::addFish( float )</p><

115、p><b>  {</b></p><p>  //char* str;</p><p>  int n = rand()%18+1;</p><p>  srand(time(0));</p><p>  //sprintf(str,"gamescene_fish%d.png",n);

116、 //隨機(jī)出魚</p><p>  CCSprite* fish = CCSprite::create(pPath_gs_fish16);</p><p>  fish->setPosition(ccp(winSize.width*1.1,winSize.height*(rand()%50*0.01 + 0.25))); //保證魚出現(xiàn)的位置在屏幕高度的%-75%之間</p&g

117、t;<p>  addChild(fish,KZNORMALSPRITE);</p><p>  CCActionInterval* fishAct = CCMoveTo::create(rand()%10+7,ccp(-winSize.width*0.1,winSize.height*(rand()%50*0.01 + 0.25)));</p><p>  fish->

118、;runAction(fishAct);</p><p><b>  }</b></p><p>  7.LogoScene.h</p><p>  #ifndef __LOGOSCENE_H__</p><p>  #define __LOGOSCENE_H__</p><p>  #inclu

119、de "cocos2d.h"</p><p>  #include "resource.h"</p><p>  #include "macro.h"</p><p>  USING_NS_CC;</p><p>  class LogoScene : public CCLayer&

120、lt;/p><p><b>  {</b></p><p><b>  public:</b></p><p>  virtual bool init();</p><p>  static CCScene* scene();</p><p>  CREATE_FUNC(Logo

121、Scene);</p><p>  //////////////////////////////</p><p>  virtual void registerWithTouchDispatcher(); </p><p>  virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); </p&

122、gt;<p>  virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); </p><p>  virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); </p><p>  //////////////////////////////<

123、/p><p>  void initData();</p><p>  void nextScene(CCObject*);</p><p>  void exitScene(CCObject*);</p><p><b>  private:</b></p><p>  CCSize winSize

124、; //屏幕尺寸</p><p>  CCSprite* BG;</p><p><b>  };</b></p><p>  #endif // __LOGOSCENE_H__</p><p>  8.LogoScene.cpp</p><p>  #include "LogoSce

125、ne.h"</p><p>  #include "SelectScene.h"</p><p>  bool LogoScene::init()</p><p><b>  {</b></p><p>  initData();</p><p>  return t

126、rue;</p><p><b>  }</b></p><p>  CCScene* LogoScene::scene()</p><p><b>  {</b></p><p>  CCScene* myScene = CCScene::create();</p><p>

127、;  LogoScene* myLayer = LogoScene::create();</p><p>  myScene->addChild(myLayer);</p><p>  return myScene;</p><p><b>  }</b></p><p>  ///////////////////

128、///////////////////////////////////////////////////////</p><p>  void LogoScene::initData()</p><p><b>  {</b></p><p><b>  //獲取屏幕尺寸</b></p><p>  

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論