C語(yǔ)言課程設(shè)計(jì)黃金礦工(提高篇)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)黃金礦工(提高篇)_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余8頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、1 / 10C語(yǔ)言課程設(shè)計(jì)-黃金礦工一、實(shí)驗(yàn)內(nèi)容玩家通過(guò)鍵盤(pán)的按鍵控制礦工抓取金塊,將鉤子碰觸到的金塊抓取過(guò)來(lái)。 要求如下:1.游戲的初始界面如下圖(一),單機(jī)鍵盤(pán)上的空格鍵進(jìn)入游戲,進(jìn)入后界面如圖(二),金塊的總數(shù)是20,大小位置是隨機(jī)的。2.在沒(méi)有抓取狀態(tài)下,鉤子左右擺動(dòng),此時(shí)礦工的是靜止的。 當(dāng)鉤子擺動(dòng)到一定角度, 玩家可以單擊鍵盤(pán)上的上下左右鍵中的下方向鍵控制礦工伸出長(zhǎng)鉤,抓取金子,此時(shí)礦工是向下?lián)u動(dòng)轉(zhuǎn)軸。獲取到金子往回拉后,礦工是不斷轉(zhuǎn)動(dòng)轉(zhuǎn)軸,知道金子拉 動(dòng)到鉤子初始處,礦工恢復(fù)靜止,鉤子繼續(xù)左右搖擺,直到玩家再次單擊向下方向 鍵。3.伸出的鉤子如果碰觸到金子,則鉤子和金子一起往回拉

2、,回收的速度根據(jù)抓取到的 金子的大小變化而變化,金子越大,回拉的速度越慢,反之亦然。如果鉤子沒(méi)有碰 觸到金子,而是碰觸到左右和下的邊界,則鉤子保持原來(lái)的速度往回收。4.抓取到的金子拉回到轉(zhuǎn)軸處消失,此時(shí)金子數(shù)目減少一個(gè)。如果玩家將所有金子抓 取完,游戲返回到如圖(一)的初始界面。圖(一)2 / 10注意:工程名名稱(chēng)要求字母開(kāi)頭,只能包含字母和數(shù)字,且實(shí)驗(yàn)指南實(shí)驗(yàn)一開(kāi)始實(shí)驗(yàn)【實(shí)驗(yàn)任務(wù)】步驟一、打開(kāi)FunCode,創(chuàng)建一個(gè)的C語(yǔ)言項(xiàng)目;步驟二、導(dǎo)入Goldma n模板?!緦?shí)驗(yàn)思路】按實(shí)驗(yàn)指導(dǎo)完成。level. t2d-氐/張思亮/zhang/5:件潮i視羈幫肋打開(kāi)工戯件央創(chuàng)建儁言工程創(chuàng)建C+工程創(chuàng)

3、理J眇遼程設(shè)置 Eclipse,說(shuō)已垃置名字中間不能有空格。圖(二)bo運(yùn)行游戲【實(shí)驗(yàn)指導(dǎo)】1、打開(kāi)Fun Code,點(diǎn)擊項(xiàng)目”菜單,選擇創(chuàng)建C語(yǔ)言工程”3 / 102、點(diǎn)擊菜單“項(xiàng)目”中的“導(dǎo)入地圖模塊”,如圖一。跳出一個(gè)對(duì)話(huà)框,選中“Goldman” 模板,點(diǎn)擊“導(dǎo)入到工程”按鈕,如圖二。實(shí)驗(yàn)二單擊空格鍵,開(kāi)始游戲【實(shí)驗(yàn)內(nèi)容】步驟、啟動(dòng)游戲顯示“空格開(kāi)始”,單擊空格鍵進(jìn)入游戲初始界面?!緦?shí)驗(yàn)思路】系統(tǒng)會(huì)自動(dòng)響應(yīng)dOnKeyDown 函數(shù)來(lái)響應(yīng)鍵盤(pán)按下消息,這部分代碼實(shí)現(xiàn)在main.cpp 里。我們要做的就是通過(guò)在main.cpp 的 dOnKeyDown 函數(shù)里實(shí)現(xiàn)我們的代碼。當(dāng)用戶(hù)單擊鍵

4、盤(pán)上的空格鍵之后,設(shè)置 GameBegin 即空格開(kāi)始”精靈不可見(jiàn)?!緦?shí)驗(yàn)指導(dǎo)】1、 首先游戲會(huì)有不同的游戲狀態(tài),我們?cè)O(shè)置全局變量g_iGameState,分別用游戲狀0表示游戲結(jié)束等待開(kāi)始狀態(tài);游戲狀態(tài)1表示按下空格鍵開(kāi)始,初始化游戲;游戲狀態(tài)2表示游戲進(jìn)行中;2、 有了以上游戲狀態(tài)的定義,我們就可以將游戲的主流程寫(xiě)出來(lái);由于游戲是一直進(jìn)行的,所以一下要寫(xiě)在while循環(huán)當(dāng)中:switch( g_iGameState )項(xiàng)目W幫助園新戲阪翼至碑地囹 打開(kāi)工皿際創(chuàng)建匚語(yǔ)吉工程 創(chuàng)建O +工程 創(chuàng)建用卯工程導(dǎo)入ite圖模扳g/希地圖為模板 E 設(shè)置EMp窕走曲置圖圖3、導(dǎo)入成功后的,界面如下圖所

5、示:4 / 10/初始化游戲,清空上一局相關(guān)數(shù)據(jù)case 1:Gamel nit();g_iGameState =2; /初始化之后,將游戲狀態(tài)設(shè)置為進(jìn)行中break; I/游戲進(jìn)行中,處理各種游戲邏輯case 2:/金子數(shù)量大于0的時(shí)候,繼續(xù)游戲if( g iGoldCou nt 0 )GameR un( fTimeDelta );else/游戲結(jié)束。調(diào)用游戲結(jié)數(shù)函數(shù)并把游戲狀態(tài)修改為結(jié)束狀態(tài)gGameState=0;GameE nd(); I/游戲結(jié)束/等待按空格鍵開(kāi)始case 0:default:L_ _break;這是游戲的總體框架,那么我們就來(lái)完成這個(gè)游戲;3、 我們已經(jīng)知道,系統(tǒng)會(huì)

6、自動(dòng)檢測(cè)鍵盤(pán)的按下消息,艮卩main.cpp里面的 dOnKeyDown函數(shù)。系統(tǒng)會(huì)捕獲按下什么鍵,是否同時(shí)按下Alt 鍵或 Shift 鍵或 Ctrl 鍵,通過(guò)dO nKeyDown 的參數(shù)傳遞進(jìn)來(lái),供編程者使用。4、 鍵盤(pán)的鍵值我們通過(guò)枚舉類(lèi)型給出,其中空格對(duì)應(yīng)的鍵值為 KEY_SPACE 所以當(dāng) ikey 參數(shù)的值為KEY_SPAC 且游戲的狀態(tài)為 0,即 gGameState 的值為 0,說(shuō)明用戶(hù)單擊了 空格鍵,之后將g_iGameState 的值改為 1,說(shuō)明游戲開(kāi)始,并且把“游戲開(kāi)始精靈隱藏掉。5、 如果是空格鍵按下,則說(shuō)明現(xiàn)在游戲開(kāi)始,說(shuō)明游戲狀態(tài)進(jìn)入1,我們?cè)贕amelnit中

7、調(diào)用dSetSpriteVisible函數(shù)將空格開(kāi)始”隱藏;這里我們就不在添加代碼。至此,實(shí)驗(yàn)二完成,單機(jī)空格鍵,“空格開(kāi)始”消失,游戲進(jìn)入初始化狀態(tài)。實(shí)驗(yàn)三鉤子左右搖擺【實(shí)驗(yàn)內(nèi)容】步驟、鉤子在等待抓取狀態(tài)下左右搖擺【實(shí)驗(yàn)思路】鉤子的擺動(dòng)實(shí)際是動(dòng)畫(huà)精靈以某個(gè)點(diǎn)為中心位置,在某個(gè)角度范圍來(lái)回旋轉(zhuǎn)。在FunCode中,游戲不斷刷新屏幕,每次時(shí)間為幾微秒,每次刷新相應(yīng)改變精靈的角度,就能達(dá)到 旋轉(zhuǎn)的效果。5 / 10游戲每刷新一次屏幕,while循環(huán)執(zhí)行一次, 并且通過(guò)參數(shù)fTimeDelta把刷新屏幕的時(shí) 間傳遞進(jìn)去。 因此, 在該函數(shù)中, 通過(guò)精靈的旋轉(zhuǎn)速度、 旋轉(zhuǎn)時(shí)間就可以獲得每個(gè)時(shí)刻, 精靈

8、的旋轉(zhuǎn)角度。最后,利用FunCode提供的API接口dSetSpriteRotation函數(shù),設(shè) 置精靈每個(gè)時(shí)刻對(duì)應(yīng)的角度,從而獲得精靈旋轉(zhuǎn)的動(dòng)畫(huà)效果。具體到鉤子左右擺動(dòng),要考慮的因素有四個(gè):擺動(dòng)方向(從左往右、從右往左) 、擺動(dòng) 速度、擺動(dòng)時(shí)間、擺動(dòng)的角度范圍。定義兩個(gè)變量g_iHookRotToLeft表示鉤子當(dāng)前是往左擺動(dòng)還是往右擺動(dòng)( 1右-左,0左-右),g_fHookRotation表示鉤子當(dāng)前轉(zhuǎn)動(dòng)的朝向。判斷當(dāng)g_iHookRotToLeft不為0的時(shí)候(鉤子往左擺),將g_fHookRotation加上上面計(jì)算的本次旋轉(zhuǎn)的度數(shù)。如果g_fHookRotation大于180度,則

9、將其改為180度,并且將g_iHookRotToLeft設(shè)置為0(往右擺)。往左到頭后,開(kāi)始往右擺。往右擺與往左擺相反,但是算法是一致的定義 變量g_iHookRotToLeft表示鉤子當(dāng)前是往左擺動(dòng)還是往右擺動(dòng)( 1右-左,0左-右)。 定義變量g_fHookRotation表示鉤子當(dāng)前角度。當(dāng)前角度=擺動(dòng)速度x擺動(dòng)時(shí)間。 規(guī)定鉤子擺動(dòng)弧度,從左往右或從右往左正好都是擺動(dòng)到水平位置,因此鉤子擺動(dòng)角度 的范圍正好是0,180。從右往左擺時(shí),擺動(dòng)大于180度時(shí),設(shè)置當(dāng)前角度為180度, 鉤子變?yōu)閺淖笸覕[。從左往右擺時(shí),擺動(dòng)小于0度時(shí),設(shè)置當(dāng)前就得為0度,鉤子變 為從右向左擺?!緦?shí)驗(yàn)指導(dǎo)】1、

10、根據(jù)實(shí)驗(yàn)思路,為了實(shí)現(xiàn)鉤子左右搖擺,我們需要定義獲得金子的狀態(tài)、鉤子的角 度、是否再往左方向擺動(dòng)、以及鉤子的坐標(biāo)點(diǎn)等全局變量,并且在初始化函數(shù)GameInit中進(jìn)行初始化2、 在Main.cpp文件中,定義GameRun函數(shù),要實(shí)現(xiàn)鉤子左右搖擺,則判斷當(dāng)g_iHookRotToLeft不為0的時(shí)候(鉤子往左擺),將g_fHookRotation加上上面計(jì)算 的本次旋轉(zhuǎn)的度數(shù)。如果g_fHookRotation大于180度,則將其改為180度,并且 將gHookRotToLeft設(shè)置為0(往右擺)。往左到頭后,開(kāi)始往右擺。往右擺與往左 擺相反,但是算法是一致的。思路如下:1)如果當(dāng)前為等待抓取狀

11、態(tài), 那么鉤子以一定的角速度左右搖擺, 如果鉤子左擺的角 度大于了180度,就給角度變量賦值為180度,并改變是否往左搖擺的變量為否, 這樣鉤子就可以往右搖擺了;2)如果往右搖擺的角度小于了0度,那么就給角度變量賦值為0度,并且改變是否往 左搖擺的變量,這樣鉤子就可以不停的左右搖擺。到此實(shí)驗(yàn)三完成,游戲最開(kāi)始鉤子左右搖擺動(dòng)作的實(shí)現(xiàn)了。實(shí)驗(yàn)四 顯示金子【實(shí)驗(yàn)內(nèi)容】步驟一、初始化金子實(shí)例 步驟二、隨機(jī)顯示金子 步驟三、保存初始化的每一個(gè)金子 【實(shí)驗(yàn)思路】 以我們?cè)趯?shí)驗(yàn)一中添加的一個(gè)金子精靈作為模板, 定義好金子精靈數(shù)量, 調(diào)用dCloneSprite函數(shù), 使用一個(gè)for循環(huán)來(lái)復(fù)制金子。這里可以在

12、for循環(huán)里面嵌入if判斷來(lái)實(shí)現(xiàn)復(fù)制不同大小的金子精靈,最后在地圖上隨機(jī)顯示金子精靈。【實(shí)驗(yàn)指導(dǎo)】1、 在Main.cpp中添加要賦值金子的個(gè)數(shù)和金子分布的世界邊界的坐標(biāo)等全局變量; 并在Gamelnit函數(shù)中添加代碼,初始化全局變量。2、 接著在使用if語(yǔ)句,以限定金子最終在地圖上的顯示范圍不能超過(guò)世界邊界,數(shù) 字部分只是一個(gè)參考值,自己也可以定義在一個(gè)合理的范圍內(nèi)。/以下變量只需要初始化一次static int iln itedHookPos =0;if( 0 = iln itedHookPos )iI nitedHookPos=1;6 / 10/鉤子初始位置值初始化g fHookStar

13、tPosX=dGetSpritePositionX( GoldHook);g_fHookStartPosY=dGetSpritePositio nY( GoldHook);/金子可以出現(xiàn)的邊界范圍初始化g_iGoldBornMi nX= dGetWorldLeft() + 5;g iGoldBornMaxX= dGetWorldRight() - 5;g_iGoldBornMi nY= dGetWorldTop() + 20;g_iGoldBornMaxY= dGetWorldBottom() - 5;3、 在if后面,我們需要用一個(gè)for循環(huán)來(lái)創(chuàng)建所有的金子。我們規(guī)定金子的大小為三種,用iS

14、ize來(lái)記錄,分別是iSize=4,iSize=6,iSize=8。數(shù)量的比例是10個(gè),6個(gè),4個(gè)(這個(gè)是在金子總數(shù)為20的前提下,如果總數(shù)不是20,根據(jù)比例創(chuàng)建)。我們可以再for循環(huán)里面通過(guò)if判斷循環(huán)變量iLoop的大小范圍為創(chuàng)建不同 大小的金子。設(shè)置金子大小的函數(shù)分別為 SetSpriteWidth (設(shè)置寬度) dSetSpriteHeight (設(shè)置高度),最后使用 FunCode 提供的隨機(jī)函數(shù)隨機(jī)生成每個(gè)金子的(x,y )坐標(biāo)放入地圖:其中(float)iSize是類(lèi)型轉(zhuǎn)換,因?yàn)閕Size是int型,而SetSpriteWidth函數(shù)的 參數(shù)是float型,如果直接傳進(jìn)去可能會(huì)

15、丟失數(shù)據(jù),所以需要先將int型轉(zhuǎn)換為float型。4、 最后添加下面代碼,恢復(fù)挖金者的動(dòng)作。/播放挖金者的動(dòng)作(恢復(fù)初始守候動(dòng)作)dAn imateSpritePlayA ni matio n( GoldMa n, GolderMa nAni matio n2, 0 );至此,實(shí)驗(yàn)四顯示金子的部分就完成了。實(shí)驗(yàn)五抓取金子【實(shí)驗(yàn)內(nèi)容】步驟一、從纜繩器那里畫(huà)根線(xiàn)到鉤子上步驟二、檢測(cè)鉤子和金子的碰撞步驟三、實(shí)現(xiàn)金子綁定在鉤子上并往回拖步驟四、回拖之后使金子消失,金子數(shù)目減一【實(shí)驗(yàn)思路】從纜繩器畫(huà)線(xiàn)到鉤子上:在地圖上創(chuàng)建精靈的鏈接點(diǎn),然后獲取他們的坐標(biāo)位置,調(diào)用 數(shù)即可。鉤子與金子的碰撞:系統(tǒng)檢測(cè)到兩

16、者的碰撞之后會(huì)調(diào)用dO nSpriteColSprite函數(shù),所以我們只要在此函數(shù)中實(shí)現(xiàn)碰撞之后鉤子抓取金子的代碼就可以了。這里需要注意的是鉤子抓取金子之后的速度 處理,抓的金子越大,鉤子回收的速度就會(huì)越慢?!緦?shí)驗(yàn)指導(dǎo)】1、打開(kāi) fun code,單擊地圖上的礦工精靈圖像,在顯示框的上面五個(gè)選擇左數(shù)第二個(gè)編 輯次精靈的鏈接點(diǎn)”,按如圖所示依次單擊這位置顯示0,保存即可。Fun Code的dDrawLi ne 函7 / 102、同上,點(diǎn)擊地圖上的鉤子精靈,選擇“編輯此精靈的鏈接點(diǎn)”,依次單擊這三個(gè)位置顯示0,1,2,最后保存即可。3、 首先在 Main.cpp 中添加全局的字符數(shù)組變量,用它來(lái)存

17、放抓到的金子的名字,并定義 空鉤子在抓取金子的時(shí)候移向鉤子的速度變量,定義完成之后在GameInit 中初始化;4、 精靈的碰撞方式為:當(dāng)A移動(dòng)中碰上B時(shí),如果A是可以產(chǎn)生碰撞的,B是可以接受碰撞的,則這2個(gè)物體會(huì)產(chǎn)生碰撞,精靈碰撞的API將被調(diào)用。否則無(wú)碰撞發(fā)生通過(guò)調(diào)用 庫(kù)函數(shù)dSetSpriteCollisio nSend設(shè)置 鉤子可以發(fā)送碰撞,通過(guò)dSetSpriteCollisio nReceive函數(shù)設(shè)置金子可以接收碰撞,這樣,當(dāng)在地圖上鉤子和金子相碰時(shí),系統(tǒng)就能檢測(cè)到。5、 首先實(shí)現(xiàn)從纜繩器畫(huà)線(xiàn)到鉤子。首先在Main.cpp進(jìn)行聲明:voidDrawHookL in e();然后,

18、添加函數(shù)的定義。畫(huà)線(xiàn)的原理是先獲取纜繩器的坐標(biāo)和鉤子的坐標(biāo),然后調(diào)用DrawLine函數(shù)即可。函數(shù)定義如下voidDrawHookL in e()/首先,從礦工精靈上獲取一個(gè)纜繩鏈接點(diǎn)作為繩子的起始點(diǎn)(該鏈接點(diǎn)在編/輯器里編輯好)float fStartX =dGetSpriteLi nkPoi ntPosX( GoldMa n, 1 );8 / 10floatfStartY =dGetSpriteLi nkPoi ntPosY( GoldMa n, 1 );/繩子終點(diǎn)在鉤子精靈上獲?。ㄔ撴溄狱c(diǎn)在編輯器里編輯好)floatfEn dX=dGetSpriteLi nkPoi ntPosX( Go

19、ldHook, 1 );floatfEn dY=dGetSpriteLi nkPoi ntPosY( GoldHook, 1 );/在這兩點(diǎn)之間劃線(xiàn)線(xiàn)的顏色紅綠藍(lán)值都為50,即灰色dDrawLi ne( fStartX, fStartY, fEndX, fEn dY, 2.f, 0, 50, 50, 50, 255 );dDrawLine函數(shù)參數(shù)參見(jiàn)文檔前面部分的介紹或者是CommonAPl.h中關(guān)于dDrawLine的介紹。6、 main .cpp 文件里面的主函數(shù)中的while 循環(huán)每次調(diào)用 GameMa in Loop 函數(shù)時(shí)能保證調(diào)用到DrawHookLine函數(shù),保證了鉤子與纜繩器之

20、間的線(xiàn)是一直連著的。在 while 循環(huán)的最后面添加如下代碼:/畫(huà)鉤子的纜繩線(xiàn)。不管游戲是什么狀態(tài),這根纜繩線(xiàn)都要畫(huà)岀來(lái)DrawHookLi ne();7、 接下來(lái)要實(shí)現(xiàn)單擊鍵盤(pán)上的下方向鍵伸出鉤子。如實(shí)驗(yàn)二所說(shuō),系統(tǒng)檢測(cè)到鍵盤(pán)按下,會(huì)響應(yīng)ma in .cpp里面的 dO nKeyDow n 函數(shù),向下方向鍵的宏定義是KEY_DOWN因此我們只要判斷dOn KeyDown 獲取的鍵值ikey 等于它,并且游戲是正在進(jìn)行的(g_iGameState 等于 2),鉤子沒(méi)有抓到金子(gGetGoldState等于 0)即可。之后利用系統(tǒng)提供的函數(shù)給鉤子一個(gè)向前的速度,在播放挖金者手臂往下壓的動(dòng)作即可

21、。在main.cpp里面 dOnKeyDown 函數(shù) if 后面添加如下代碼:/當(dāng)前處于游戲進(jìn)行中,按下向下的方向鍵,鉤子伸出抓取金子else if( KEY_DOWN = iKey & 2 = g_iGameState & 0 = gGetGoldState )/設(shè)置抓取狀態(tài)為:鉤子往外伸/以當(dāng)前朝向給鉤子一個(gè)向前的速度dSetSpriteLi nearVelocityPolar(GoldHook,g fEmptyHookSpeed,g_fHookRotation );/播放挖金者的動(dòng)作(一個(gè)胳膊往下壓的動(dòng)作)dAn imateSpritePlayA ni matio n( GoldMa n

22、, GolderMa nAni matio n1, 0 );&實(shí)現(xiàn)鉤子抓金子的精靈與精靈碰撞事件。/首先判斷鉤子是否伸出,已經(jīng)游戲是否真在進(jìn)行,否則推出函數(shù):if( 2 != g_i GameState | 1 != g_i GetGoldState ) return;/判斷是否是鉤子與金子進(jìn)行碰撞(即這兩個(gè)名字字符串里必須一個(gè)是金子名,/個(gè)是鉤子名)if( stricmp(GoldHook,szSrcName)!=0&stricmp(GoldHook,szTarName)!=0) return;/找到哪個(gè)是金子的名字con st char*szGoldName = NULL;if( strs

23、tr( szSrcName, GoldBlock) szGoldName = szSrcName;else if( strstr( szTarName, GoldBlock)szGoldName = szTarName;elseg iGetGoldState =1;9 / 10return;9、 得到金子實(shí)例之后,使用Fun Code給的綁定函數(shù)SpriteMou ntToSpriteL in kPoi nt()將金子綁定在鉤子上隨鉤子移動(dòng):II將金子掛接到鉤子的2號(hào)掛接點(diǎn)上dSpriteMountToSpriteLinkPoint( szGoldName, GoldHook, 2 );II設(shè)

24、置抓取狀態(tài)為:鉤子往回收,抓取到東西。記錄金子名字gGetGoldState=3;strcpy( g_szCurGetGold, szGoldName );II根據(jù)金子大小,計(jì)算鉤子的往回收的速度,越大的越慢。II算法:之前設(shè)置的金子大小為4,6,8,用10減去該大小再除以10,得到3個(gè)小II數(shù):0.6,0.4,02該小數(shù)乘以空鉤子的速度即得到掛接不同金子后的實(shí)際速度f(wàn)loat f Width =dGetSpriteWidth( szGoldName );float f Speed =(10.f - fWidth) I 10.f) * g_fEmptyHookSpeed;II鉤子往初始位置移動(dòng)

25、dSpriteMoveTo( GoldHook, g_fHookStartPosX, g_fHookStartPosY, fSpeed, 1);II播放挖金者的動(dòng)作(胳膊來(lái)回動(dòng)的動(dòng)作)dAn imateSpritePlayA ni matio n( GoldMa n, GolderMa nAni matio n3, 0 );10、 金子抓取之后回收到纜繩器之后,系統(tǒng)判斷鉤子的是否往回運(yùn)動(dòng),是的話(huà)判斷鉤子是否回到終點(diǎn),若是則調(diào)用dSpriteDismou nt函數(shù)取消金子與鉤子的綁定,同時(shí)調(diào)用dDeleteSprite函數(shù)刪除該金子精靈,再將金子精靈的總數(shù)減一。在GameRun 函數(shù)后面添加如下代碼:II如果當(dāng)前為鉤子往回歸位,則判斷是否已經(jīng)運(yùn)動(dòng)到終點(diǎn)。到了終點(diǎn),則又開(kāi)始搖II擺、等待else if( 2 = gGetGoldState | 3=g_iGetGoldState )II判斷是否移動(dòng)到終點(diǎn)(判斷的依據(jù)是XY方向的移動(dòng)速度為0,即金子是否II已經(jīng)停止移動(dòng))floatfSpeedX =dGetSpriteLi nearVelocityX( GoldHook);floatfSpeedY =dGetSpriteLi nearVelocityY( GoldHook);II當(dāng)前速度不為0,還在運(yùn)動(dòng)中II浮點(diǎn)數(shù)是否為0,不能直接判斷=!= 0if( fSpeedX 0

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論