北科大暑期C程序?qū)嵺`計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告_第1頁
北科大暑期C程序?qū)嵺`計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告_第2頁
北科大暑期C程序?qū)嵺`計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告_第3頁
北科大暑期C程序?qū)嵺`計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告_第4頁
北科大暑期C程序?qū)嵺`計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、北京科技大學(xué)計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告機(jī)房名稱    逸夫樓904  時(shí) 間 2014年6月30日至7月18日 學(xué) 院 機(jī)械工程學(xué)院 專業(yè)班級    物流1302 姓  名     徐松松 學(xué)  號     41345053 指導(dǎo)教師  張敏 成 績        2014年 7月說 明一、 計(jì)算機(jī)應(yīng)用實(shí)踐是本科教學(xué)重要的實(shí)踐

2、教學(xué)環(huán)節(jié),是提高學(xué)生應(yīng)用計(jì)算機(jī)能力的重要措施。所有參加計(jì)算機(jī)應(yīng)用實(shí)踐教學(xué)活動的學(xué)生都必須撰寫實(shí)踐報(bào)告二、 計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告的質(zhì)量反映了計(jì)算機(jī)應(yīng)用實(shí)踐的教學(xué)質(zhì)量,它是評定計(jì)算機(jī)應(yīng)用實(shí)踐成績的主要依據(jù)之一。不交實(shí)踐報(bào)告者不得參加實(shí)習(xí)成績評定。三、 指導(dǎo)教師必須對學(xué)生的實(shí)踐報(bào)告寫出評語并在相應(yīng)位置給出成績并簽字,否則本實(shí)踐報(bào)告無效。四、 實(shí)踐報(bào)告要求條理清晰,內(nèi)容詳盡,數(shù)據(jù)準(zhǔn)確,字?jǐn)?shù)不少于5000字。五、 計(jì)算機(jī)應(yīng)用實(shí)踐活動結(jié)束后請將本報(bào)告上交學(xué)院存檔保存。計(jì)算機(jī)應(yīng)用實(shí)踐報(bào)告一、 問題的提出在選項(xiàng)目的時(shí)候我思考了一番,對于拼圖,打飛碟,黃金礦工這些游戲比較熟悉,我一看到迷你高爾夫這個(gè)題目的時(shí)候感覺

3、有點(diǎn)新奇,沒碰到過,我想嘗試下新的東西于是就選了這個(gè)游戲,希望能在了解基本框架的基礎(chǔ)上添加一些新功能和優(yōu)化一下游戲框架并且美化一下場景。以前小時(shí)候玩過各種各樣的小游戲,對小游戲如何制作的過程十分好奇,我很盼望能夠自己編出一個(gè)游戲來,通過一段課程的學(xué)習(xí),我了解了游戲的基本制作過程,我選這個(gè)題目,具有一定的挑戰(zhàn)性,但我相信自己能做好。比如看懂游戲基本代碼,添加一些開始,計(jì)時(shí),計(jì)分,游戲成功或者失敗后的相應(yīng),以及游戲的優(yōu)化和場景變換以及游戲的趣味性與逼真性等等都是我在制作游戲的過程中需要考慮的部分。由于我是個(gè)人制作,所以這個(gè)項(xiàng)目顯得有點(diǎn)艱巨,但我會安排好時(shí)間,考慮到方方面面,把握好細(xì)節(jié)方面的處理,從

4、而使迷你高爾夫從原先簡單單調(diào)的小游戲變?yōu)橐豢罟δ芡晟?,豐富多彩的小游戲。二、 游戲的整體設(shè)計(jì)及框架結(jié)構(gòu)1. 游戲功能描述“迷你高爾夫”游戲是通過鍵盤控制球的運(yùn)動,最終走出出口,考驗(yàn)了反應(yīng)能力和思維能力。該游戲功能包括游戲的開始設(shè)置,游戲說明,游戲的計(jì)時(shí)和游戲的分?jǐn)?shù)計(jì)算,以及包括背景的音樂播放,場景的變換和精靈的變化,一些特效的加入還有對游戲結(jié)束時(shí)的不同反應(yīng),這是一款相對完善的游戲。2. 游戲流程圖“迷你高爾夫”游戲一局結(jié)束后的界面游戲中的功能初始界面及功能停止游戲時(shí)間,返回第一關(guān)游戲結(jié)束對成功與失敗分別顯示不同的語句顯示本次游戲所得的分?jǐn)?shù)每過一關(guān)變換場景和障礙物精靈不至于顯得單調(diào),每一關(guān)的場景

5、都顯得和諧漂亮按空格鍵開始游戲,游戲開始則響起背景音樂,同時(shí)開始倒計(jì)時(shí)單擊GameDescription顯示游戲說明單擊說明消失則游戲說明消失三、 詳細(xì)設(shè)計(jì)1.主函數(shù)模塊main()函數(shù)模塊 主要功能為完成游戲的計(jì)時(shí),并在游戲進(jìn)程中實(shí)時(shí)顯示剩余時(shí)間并計(jì)算分?jǐn)?shù);調(diào)用其他函數(shù)來完成點(diǎn)擊鼠標(biāo)、按下鼠標(biāo)、精靈與世界邊界碰撞時(shí)的效果;實(shí)現(xiàn)說明文字的顯示和影藏。步驟詳細(xì)介紹: 第一步,進(jìn)入游戲界面,顯示文字說明; 第二步,根據(jù)需要查看游戲說明 第三步,空格進(jìn)入游戲,設(shè)定初始時(shí)間為60秒,開始創(chuàng)造精靈,利用dSetSpriteVisble()隱藏?zé)o關(guān)文字。第四步,控制球的運(yùn)動,計(jì)分計(jì)時(shí)。第五步,游戲結(jié)束;顯

6、示通關(guān)是否成功,成功的話顯示本次所得的分?jǐn)?shù),失敗則顯示“游戲失敗”文字。2.游戲的初始化操作功能:每局開始前進(jìn)行初始化,清空上一局相關(guān)數(shù)據(jù)相關(guān)函數(shù):void CGameMain:GameInit() m_iMoveState=0; ClearAllSprite(); InitLevel(); CreateAllSprite();3.游戲運(yùn)行過程功能:1. 顯示游戲剩余時(shí)間2. 計(jì)算游戲的分?jǐn)?shù)3. 控制文字與圖片的顯示4. 控制球的運(yùn)動狀態(tài)和判斷位置,控制關(guān)卡的轉(zhuǎn)換相應(yīng)函數(shù):void CGameMain:GameRun( float fDeltaTime )m_iGameScore -= 2*f

7、DeltaTime;m_fGameTime -= fDeltaTime;if(m_fGameTime > 0)m_pTime->SetTextValue(int)m_fGameTime); /顯示剩余時(shí)間m_pscore->SetTextValue(int)m_iGameScore); /顯示剩余分?jǐn)?shù)elsem_iCurLevel=1;InitLevel();m_iGameState = 0;CSystem:ShowCursor(true);m_pKaishi->SetSpriteVisible(true);m_jieshu->SetSpriteVisible(

8、true );m_shuoming->SetSpriteVisible(true);if( 0 != m_iMoveState )floatfPosX=m_pControlBall->GetSpritePositionX();floatfPosY=m_pControlBall->GetSpritePositionY();intiIndexX=SpritePosXToIndexX( fPosX );intiIndexY=SpritePosYToIndexY( fPosY );/ 控制球已經(jīng)出了邊界,所以不需要再判斷if( iIndexX < 0 | iIndexX >

9、;= GRID_COUNT | iIndexY < 0 | iIndexY >= GRID_COUNT )return;floatfNextPosX=fPosX;floatfNextPosY=fPosY;/if( 1 = m_iMoveState )fNextPosY -= m_fGridSize * 0.5f;else if( 2 = m_iMoveState )fNextPosY += m_fGridSize * 0.5f;else if( 3 = m_iMoveState )fNextPosX-= m_fGridSize * 0.5f;else if( 4 = m_iMove

10、State )fNextPosX+= m_fGridSize * 0.5f;intiNextIndexX=SpritePosXToIndexX( fNextPosX );int iNextIndexY=SpritePosYToIndexY( fNextPosY );/ 該邊緣已經(jīng)出了邊界,不需要往下判斷if( iNextIndexX < 0 | iNextIndexX >= GRID_COUNT | iNextIndexY < 0 | iNextIndexY >= GRID_COUNT )return;/1)是方塊:if( RIGID_BLOCK = m_iGridDa

11、taiNextIndexYiNextIndexX |RIGID_BLOCK1 = m_iGridDataiNextIndexYiNextIndexX|RIGID_BLOCK2 = m_iGridDataiNextIndexYiNextIndexX|RIGID_BLOCK3 = m_iGridDataiNextIndexYiNextIndexX|RIGID_BLOCK4 = m_iGridDataiNextIndexYiNextIndexX)/ 清零移動狀態(tài)m_iMoveState = 0;/ 速度清零,顯示指示箭頭m_pControlBall->SetSpriteLinearVeloci

12、ty(0.f, 0.f);m_pGolfArrow->SetSpriteVisible(1);/ 把球和指示箭頭設(shè)置在本方塊的中心MoveSpriteToBlock( m_pControlBall, iIndexX, iIndexY );MoveSpriteToBlock( m_pGolfArrow, iIndexX, iIndexY );/2)是黑洞:else if( BLACK_HOLE = m_iGridDataiNextIndexYiNextIndexX )/ 將游戲狀態(tài)設(shè)置為1,重新開始關(guān)卡m_iGameState=1;/3)是出口:else if( GOLF_EXIT = m

13、_iGridDataiNextIndexYiNextIndexX )/ 將游戲狀態(tài)設(shè)置為1,開始新關(guān)卡m_iGameState=1;/ 往下一關(guān)卡,如果已經(jīng)是最大值,則返回第一關(guān)m_iCurLevel+;if( m_iCurLevel > MAX_LEVEL )m_chenggong->SetSpriteVisible( true );m_fGameTime=0;m_iCurLevel = 1;InitLevel();m_iGameState = 0;CSystem:ShowCursor(true);m_pKaishi->SetSpriteVisible(true);m_ch

14、enggong->SetSpriteVisible( true );m_scoretext->SetSpriteVisible(true);m_pscore->SetSpriteVisible(true);m_shuoming->SetSpriteVisible(true);5. 鼠標(biāo)單擊事件功能:控制游戲說明的顯示與消失控制游戲的暫停和繼續(xù)函數(shù)代碼:void CGameMain:OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )if(iMouseType=0&am

15、p;&(fMouseX>=-12&&fMouseX<=12)&&(fMouseY>=18&&fMouseY<=22)m_description->SetSpriteVisible( true );m_xiaoshi->SetSpriteVisible( true );if(iMouseType=0&&(fMouseX>=-18&&fMouseX<=4)&&(fMouseY>=-27&&fMouseY<=-21)m_d

16、escription->SetSpriteVisible( false );m_xiaoshi->SetSpriteVisible( false );if(iMouseType=0&&(fMouseX>=22&&fMouseX<=46)&&(fMouseY>=-38&&fMouseY<=-30)m_tupian->SetSpriteVisible( true );m_iGameState = 4;if(iMouseType=0&&(fMouseX>=-17&&

17、amp;fMouseX<=17)&&(fMouseY>=24&&fMouseY<=32)m_tupian->SetSpriteVisible( false );m_iGameState = 2;6. 鍵盤控制事件功能:1.按下空格游戲開始,按下時(shí)同時(shí)進(jìn)行一些初始化操作2.通過上下左右按鍵來控制球的運(yùn)動方向函數(shù)代碼:void CGameMain:OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress )/ 游

18、戲還未開始,按下空格鍵,游戲開始。if( KEY_SPACE = iKey && 0 = m_iGameState )PlaySound("d:Sound.wav", NULL, SND_FILENAME | SND_ASYNC);m_chenggong->SetSpriteVisible( false );m_jieshu->SetSpriteVisible( false );m_scoretext->SetSpriteVisible(false);m_pscore->SetSpriteVisible(false);m_shuomi

19、ng->SetSpriteVisible(false);m_description->SetSpriteVisible( false );m_xiaoshi->SetSpriteVisible( false );m_iGameState=1; / 游戲開始m_iGameScore=0;m_fGameTime=60.f;/游戲剩余時(shí)間m_iGameScore=120.f;/ 每局游戲開始,初始得分為0/m_pScore->SetTextValue( m_iGameScore );/ 每局游戲開始,初始時(shí)間為60m_pTime->SetTextValue(int)m_

20、fGameTime);/ 隱藏 "空格開始" 提示圖片m_pKaishi->SetSpriteVisible( false );/ 隱藏鼠標(biāo)CSystem:ShowCursor( false );if( 2 != m_iGameState | 0 != m_iMoveState )return;floatfPosX=m_pControlBall->GetSpritePositionX(); floatfPosY=m_pControlBall->GetSpritePositionY(); intiIndexX=SpritePosXToIndexX( fPos

21、X );intiIndexY=SpritePosYToIndexY( fPosY );if( iIndexX < 0 | iIndexX >= GRID_COUNT | iIndexY < 0 | iIndexY >= GRID_COUNT )return;/1)如果是按下向上方向鍵:if( KEY_UP = iKey )if( iIndexY > 0 && RIGID_BLOCK = m_iGridDataiIndexY - 1iIndexX )return;/ 給予控制球一個(gè)方向速度,并設(shè)置移動狀態(tài)、隱藏指示箭頭m_iMoveState=1;m

22、_pControlBall->SetSpriteLinearVelocityY(-60.f);m_pGolfArrow->SetSpriteVisible(0);/如果是按下向下方向鍵:else if( KEY_DOWN = iKey )if( iIndexY < GRID_COUNT - 1 && RIGID_BLOCK = m_iGridDataiIndexY + 1iIndexX )return;/ 給予控制球一個(gè)方向速度,并設(shè)置移動狀態(tài)、隱藏指示箭頭m_iMoveState=2;m_pControlBall->SetSpriteLinearVel

23、ocityY(60.f);m_pGolfArrow->SetSpriteVisible(0);/3)如果是按下向左方向鍵:else if( KEY_LEFT = iKey )if( iIndexX > 0 && RIGID_BLOCK = m_iGridDataiIndexYiIndexX - 1 )return;/ 給予控制球一個(gè)方向速度,并設(shè)置移動狀態(tài)、隱藏指示箭頭m_iMoveState=3;m_pControlBall->SetSpriteLinearVelocityX(-60.f);m_pGolfArrow->SetSpriteVisible(

24、0);/4)如果是按下向右方向鍵:else if( KEY_RIGHT = iKey )if( iIndexX < GRID_COUNT - 1 && RIGID_BLOCK = m_iGridDataiIndexYiIndexX + 1 )return;/ 給予控制球一個(gè)方向速度,并設(shè)置移動狀態(tài)、隱藏指示箭頭m_iMoveState=4;m_pControlBall->SetSpriteLinearVelocityX(60.f);m_pGolfArrow->SetSpriteVisible(0);7. 世界邊界控制事件功能:1 如果球運(yùn)動出世界邊界,則重新這

25、個(gè)關(guān)卡2 控制魚的運(yùn)動邊界函數(shù)代碼:void CGameMain:OnSpriteColWorldLimit( const char *szName, const int iColSide )/if(strcmp(szName, "fish0")=0)m_pFish->SetSpriteLinearVelocity(0,0);/dSetSpriteFlipX("fish0", true);/*if(strcmp(szName, "fish0")=0)m_pFish->SetSpriteLinearVelocity(0, 0

26、);/dSetSpriteFlipX("fish0", true);*/boolbFlip;floatfSpeedX;CSprite *tmp;if(strcmp(szName, "fish0")=0)if(iColSide = 1) / 右邊bFlip = true;fSpeedX = -CSystem:RandomRange(10, 20);else if(iColSide = 0) / 左邊bFlip = false;fSpeedX = CSystem:RandomRange(10, 20);m_pFish->SetSpriteFlipX(b

27、Flip);m_pFish->SetSpriteLinearVelocity(fSpeedX,0);else if(tmp = FindSpriteByName(szName)!=NULL)/如果找到同szName同名的精靈if(iColSide = 1)tmp->SetSpriteLinearVelocityX(-15.f);tmp->SetSpriteFlipX(true);else if(iColSide = 0)tmp->SetSpriteLinearVelocityX(15.f);tmp->SetSpriteFlipX(false);float fSpe

28、edY;if(iColSide = 2)/上面tmp->SetSpriteLinearVelocityY(15.f);else if(iColSide = 3)/下面tmp->SetSpriteLinearVelocityY(-15.f);/*mySprite->SetSpriteLinearVelocityX(fSpeedX);float fPosY;CSprite* tmpSprite=FindSpriteByName(szName);tmpSprite->SetSpriteFlipX(bFlip);tmpSprite->SetSpriteLinearVelo

29、city(fSpeedX, 0);fPosY=CSystem:RandomRange(m_fScreenTop+10.f, m_fScreenBottom-10.f);/因?yàn)橛胁煌聂~,因此隨機(jī)生成Y方向的速度后需要分配給不同的/魚,這樣多條魚就不會重復(fù)了/tmpSprite->SetSpritePositionY(fPosY); */ 只處理控制的球if( strcmp( szName, m_pControlBall->GetName() != 0 )return;/ 將游戲狀態(tài)設(shè)置為1,重新開始關(guān)卡m_iGameState=1;8. 清除精靈模板功能:每換一個(gè)關(guān)卡清除上一個(gè)關(guān)卡

30、的精靈函數(shù)代碼:void CGameMain: ClearAllSprite()intiLoop= 0;for( iLoop = 0; iLoop < m_vRigidBlock.size(); iLoop+ )m_vRigidBlockiLoop->DeleteSprite();for( iLoop = 0; iLoop < m_vBlackHole.size(); iLoop+ )m_vBlackHoleiLoop->DeleteSprite();for( iLoop = 0; iLoop < m_vGolfExit.size(); iLoop+ )m_vGo

31、lfExitiLoop->DeleteSprite();for( iLoop = 0; iLoop < m_vFish.size(); iLoop+ )m_vFishiLoop->DeleteSprite();9. 每個(gè)關(guān)卡的初始化設(shè)置功能:復(fù)制當(dāng)前關(guān)卡的地圖,并交換場景函數(shù)代碼:void CGameMain: InitLevel()/ 總數(shù)置0,重新創(chuàng)建m_iRigidBlockCount=0;m_iBlackHoleCount=0;m_iGolfExitCount=0;/ 根據(jù)當(dāng)前關(guān)卡,選擇關(guān)卡數(shù)據(jù)switch( m_iCurLevel )case 2:m_changji

32、ng1->SetSpriteVisible( false );m_iControlStartX=5;m_iControlStartY=9;memcpy( m_iGridData, m_iLevelData2, sizeof(int) * GRID_COUNT * GRID_COUNT );break;case 3:m_changjing2->SetSpriteVisible( false );m_iControlStartX=3;m_iControlStartY=6;memcpy( m_iGridData, m_iLevelData3, sizeof(int) * GRID_COU

33、NT * GRID_COUNT );break;case 4:m_changjing3->SetSpriteVisible( false );m_iControlStartX=3;m_iControlStartY=5;memcpy( m_iGridData, m_iLevelData4, sizeof(int) * GRID_COUNT * GRID_COUNT );break;case 5:m_changjing4->SetSpriteVisible( false );m_changjing5->SetSpriteVisible( false );m_iControlSta

34、rtX=5;m_iControlStartY=5;memcpy( m_iGridData, m_iLevelData5, sizeof(int) * GRID_COUNT * GRID_COUNT );break;/ Level1 或者g_iCurLevel錯誤case 1:default:m_changjing1->SetSpriteVisible( true );m_changjing2->SetSpriteVisible( true );m_changjing3->SetSpriteVisible( true );m_changjing4->SetSpriteVi

35、sible( true );m_changjing5->SetSpriteVisible( true );m_iControlStartX=5;m_iControlStartY=6;memcpy( m_iGridData, m_iLevelData1, sizeof(int) * GRID_COUNT * GRID_COUNT );break;10. 每個(gè)關(guān)卡的精靈創(chuàng)建功能:創(chuàng)建當(dāng)前關(guān)卡的障礙物,黑洞和出口精靈,并添加一些特效函數(shù)代碼:void CGameMain: CreateAllSprite()intiLoopX = 0, iLoopY = 0;CSprite* tmpSprite

36、;char*szName = NULL;for( iLoopY = 0; iLoopY < GRID_COUNT; iLoopY+ )for( int iLoopX = 0; iLoopX < GRID_COUNT; iLoopX+ )/如果是0,則不創(chuàng)建精靈,continue表示跳出本次循環(huán),繼續(xù)下一個(gè)循環(huán)。if( 0 = m_iGridDataiLoopYiLoopX )continue;/如果是方塊,則創(chuàng)建方塊精靈:if( RIGID_BLOCK = m_iGridDataiLoopYiLoopX )szName=CSystem:MakeSpriteName("Ri

37、gidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("RigidBlockTemplate");MoveSpriteToBlock( tmpSprite, iLoopX, iLoopY );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;/如果是土豆,則創(chuàng)建土豆精靈:if( RIGID_BLOCK1 = m_iGridDataiLoopYiLoopX )szName=CSystem:

38、MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("RigidBlock1Template");MoveSpriteToBlock( tmpSprite, iLoopX, iLoopY );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;/如果是金塊,則創(chuàng)建金塊:if( RIGID_BLOCK2 = m_iGridDataiLoopYi

39、LoopX )szName=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("RigidBlock2Template");MoveSpriteToBlock( tmpSprite, iLoopX, iLoopY );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;/如果是魚,則創(chuàng)建魚:if( RIGID_BLOCK3

40、= m_iGridDataiLoopYiLoopX )szName=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("RigidBlock3Template");MoveSpriteToBlock( tmpSprite, iLoopX, iLoopY );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;if(m_iRi

41、gidBlockCount=1)/ 獲取屏幕的邊界值m_fScreenLeft = CSystem:GetScreenLeft();m_fScreenRight = CSystem:GetScreenRight();m_fScreenTop = CSystem:GetScreenTop();m_fScreenBottom = CSystem:GetScreenBottom();/ 設(shè)置精靈世界邊界m_pFish->SetSpriteWorldLimit(WORLD_LIMIT_NULL, m_fScreenLeft, m_fScreenTop, m_fScreenRight, m_fSc

42、reenBottom);m_pFish->SetSpriteLinearVelocity( 15, 0);/ 生成多條魚精靈for(int i=1; i<5; i+)char szName128;float fPosX, fPosY;float fSpeedX;float fSpeedY;/將szName的值賦為"fish"加上i,即循環(huán)因子sprintf(szName, "fish%d", i); CSprite* tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("f

43、ish_muban");/創(chuàng)建魚精靈fPosX = CSystem:RandomRange(m_fScreenLeft+10.f, m_fScreenRight-10.f);fPosY = CSystem:RandomRange(m_fScreenTop+10.f,m_fScreenBottom-10.f);tmpSprite->SetSpritePosition(fPosX, fPosY);tmpSprite->SetSpriteWorldLimit(WORLD_LIMIT_NULL, m_fScreenLeft-10.f, m_fScreenTop, m_fScree

44、nRight+10.f, m_fScreenBottom);fSpeedX = CSystem:RandomRange(10, 20);fSpeedY = CSystem:RandomRange(10, 20);tmpSprite->SetSpriteLinearVelocity(fSpeedX, fSpeedY);m_vFish.push_back(tmpSprite);for(int j=5; j<10; j+)char szName128;float fPosX, fPosY;float fSpeedX;float fSpeedY;/將szName的值賦為"fish

45、"加上i,即循環(huán)因子sprintf(szName, "fish%d", j); CSprite* tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("fish_muban2");/創(chuàng)建魚精靈fPosX = CSystem:RandomRange(m_fScreenLeft+10.f, m_fScreenRight-10.f);fPosY = CSystem:RandomRange(m_fScreenTop+10.f,m_fScreenBottom-10.f);tmpSprite-&g

46、t;SetSpritePosition(fPosX, fPosY);tmpSprite->SetSpriteWorldLimit(WORLD_LIMIT_NULL, m_fScreenLeft-10.f, m_fScreenTop, m_fScreenRight+10.f, m_fScreenBottom);fSpeedX = CSystem:RandomRange(10, 20);fSpeedY = CSystem:RandomRange(10, 20);tmpSprite->SetSpriteLinearVelocity(fSpeedX, fSpeedY);m_vFish.pu

47、sh_back(tmpSprite);if(m_iRigidBlockCount=1)szName=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("texiao");MoveSpriteToBlock( tmpSprite, 5, 5 );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;if(m_iRigidBloc

48、kCount=2)szName=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("texiao");MoveSpriteToBlock( tmpSprite,5, 10 );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;/如果是飛碟,則創(chuàng)建飛碟:if( RIGID_BLOCK4 = m_iGridDataiLoopY

49、iLoopX )szName=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("RigidBlock4Template");MoveSpriteToBlock( tmpSprite, iLoopX, iLoopY );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;if(m_iRigidBlockCount=1)szN

50、ame=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("baopo");MoveSpriteToBlock( tmpSprite, 3, 3 );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;if(m_iRigidBlockCount=2)szName=CSystem:MakeSpriteName("Ri

51、gidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("baopo");MoveSpriteToBlock( tmpSprite,3, 8 );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;if(m_iRigidBlockCount=4)szName=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );

52、tmpSprite=new CSprite(szName);tmpSprite->CloneSprite("baopo");MoveSpriteToBlock( tmpSprite,8, 3 );m_vRigidBlock.push_back(tmpSprite);m_iRigidBlockCount+;if(m_iRigidBlockCount=5)szName=CSystem:MakeSpriteName("RigidBlock",m_iRigidBlockCount );tmpSprite=new CSprite(szName);tmpSprite-

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論