版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、“猴子選大王”實驗報告游戲截圖圖一:開始游戲圖二:猴子隊列就緒圖三:游戲中,按空格鍵淘汰猴子圖四:選出大王,即最后剩下的一只圖五:重新開始一局功能描述本游戲源自典故猴子稱大王!1、 游戲運行,初試界面出現(xiàn)空格開始的提示。2、 玩家按空格開始游戲,6只猴子排成一列。3、 游戲開始后,用戶每按一次空格鍵,隨機從猴子隊列中產(chǎn)生一個被淘汰的猴子4、 被淘汰的猴子會出局,加入屏幕下方的淘汰者猴子隊列中。5、 站在被淘汰猴子后方的選手依次往前移,填補空白6、 用戶繼續(xù)按空格淘汰猴子,值到剩下唯一的猴子,就是大 王!這樣,一局游戲完成。7、 一局游戲完成后,屏幕重新出現(xiàn)“空格開始”的標(biāo)志,用戶按空格可以繼續(xù)
2、游戲,如此往復(fù)。流程圖數(shù)據(jù)結(jié)構(gòu)1. g_iMonkeys6 用一個int類型的數(shù)組來保存猴子精靈編號2. g_flocation6用一個浮點型數(shù)組存儲猴子位置(因為6只猴子站成一排,y坐標(biāo)值是相同的,因此該數(shù)組保存6只猴子的x坐標(biāo)值)。其中g(shù)_Monkeysi對應(yīng)的位置g_fLocation3. g_iNumMokeys當(dāng)前備選猴子數(shù)量,即截圖中上層隊列的猴子數(shù)4. g_iNumLoseMonkeys淘汰的猴子數(shù)量,即下層隊列中的猴子數(shù)5. g_iChooseMonkey本輪淘汰的猴子編號6. g_iMoveMonkey淘汰猴子后,后面需要移動的猴子數(shù)7. g_fDelayTime猴子向前移動
3、的延遲時間算法描述有六只猴子,存儲在g_Monkeys數(shù)組中,對應(yīng)的位置則在g_fLocation中,對應(yīng)關(guān)系為g_Monkeysi àg_fLocationi;游戲狀態(tài)g_iGameState分為三種狀態(tài)0,1,2 ,其中0表示游戲結(jié)束狀態(tài),1表示游戲初始化,2則表示游戲運行狀態(tài);0 à 1的轉(zhuǎn)換為“空格開始”;1 à 2的轉(zhuǎn)換自然發(fā)生,即游戲初始化函數(shù)后會自動將游戲狀態(tài)從1置為22 表示游戲運行狀態(tài),在該狀態(tài),敲擊空格可以選出淘汰的猴子2 à 0的轉(zhuǎn)換為當(dāng)猴子的備選隊列中只剩下一只猴子的時候發(fā)生,該猴子便是大王了猴子精靈的初始化1、 創(chuàng)建猴子精靈的對
4、象,并保存CSprite數(shù)組中,依次設(shè)置每只精靈的坐標(biāo)。2、 將參選大王的猴子數(shù)設(shè)為6,每只猴子移動的時間間隔設(shè)為1.0秒。3、 淘汰的猴子數(shù)目設(shè)為0。4、 隱藏“空格開始”精靈5、 當(dāng)有猴子需要移動時且經(jīng)過1秒的移動時間后,移動猴子,且將待移動的猴子數(shù)減1dOnKeyDown(const intiKey, const boolbAltPress, const boolbShiftPress, const boolbCtrlPress )游戲開始和控制按鈕1、 游戲還未開始,即游戲狀態(tài)為0,如果空格按被下,則將游戲狀態(tài)改為1,此時對程序的數(shù)據(jù)進行初始化。循環(huán)一次之后,游戲的轉(zhuǎn)太變?yōu)?,此時游戲
5、開始運行。2、 如果按下空格時,剩下的猴子數(shù)大于1,游戲狀態(tài)為2且備選隊列中沒有需要向前移動的猴子時,則隨機選中1個猴子淘汰,并將被淘汰的猴子移動到屏幕下方淘汰者隊列。3、移動完成后,將淘汰猴子的數(shù)量標(biāo)志g_iNumLoseMonkeys加1,備選猴子數(shù)keys減1,同時計算出需要移動的猴子數(shù)量,并將猴子精靈數(shù)組中的猴子均向前移動一位,同位置數(shù)組相對應(yīng);源代碼在Main.cpp文件中/-/-#include "CommonAPI.h"#include<stdio.h>#include<time.h>float g_fDelayTime;int g_i
6、Monkeys6 = 1,2,3,4,5,6;int g_iNumMokeys=6;int g_iNumLoseMonkeys=0;int g_iMoveMonkey = 0;int g_iChooseMonkey;int g_flocation6;int g_iGameState=0;/ 主函數(shù)入口/int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)/ 初始化游戲引擎if( !dInitGameEngine( hInstance, lpCmdLine )
7、 )return 0;/ 游戲初始化代碼dSetWindowTitle("猴子選大王");char* szName;int i;float x,y;for(i=0;i<6;i+)szName = dMakeSpriteName("monkey",g_iMonkeysi);x = -40+i*16;y = -3;dSetSpritePosition(szName,x,y);g_flocationi = x;/ 引擎主循環(huán),處理屏幕圖像刷新等工作while( dEngineMainLoop() )/ 獲取兩次調(diào)用之間的時間差,傳遞給游戲邏輯處理floa
8、tfTimeDelta=dGetTimeDelta();if(g_iMoveMonkey > 0)g_fDelayTime -= fTimeDelta;if(g_fDelayTime<0)g_fDelayTime = 1;char *szName = dMakeSpriteName("monkey",g_iMonkeysg_iChooseMonkey);dSetSpritePosition(szName, g_flocationg_iChooseMonkey,-3);g_iChooseMonkey+;g_iMoveMonkey-;else if(g_iNumMo
9、keys > 1 && g_iGameState != 0)g_iGameState = 1;else if(g_iGameState != 0)g_iGameState = 0;dSetSpriteVisible("start",true);/ 關(guān)閉游戲引擎dShutdownGameEngine();return 0;/=/ 引擎捕捉鼠標(biāo)移動消息后,將調(diào)用到本函數(shù)void dOnMouseMove( const float fMouseX, const float fMouseY )/ 可以在此添加游戲需要的響應(yīng)函數(shù)/=/ 引擎捕捉鼠標(biāo)點擊消息后,將
10、調(diào)用到本函數(shù)void dOnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )/ 可以在此添加游戲需要的響應(yīng)函數(shù)/=/ 引擎捕捉鍵盤按下消息后,將調(diào)用到本函數(shù)/ iAltPress iShiftPress iCtrlPress 分別為判斷Shift,Alt,Ctrl當(dāng)前是否也處于按下狀態(tài)。比如可以判斷Ctrl+E組合鍵void dOnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iC
11、trlPress )if(iKey = KEY_SPACE && g_iGameState = 0)/srand ( (unsigned) time (NULL) );g_iGameState = 1;for(int i=0;i<6;i+)g_iMonkeysi = i+1;char *szName = dMakeSpriteName("monkey",g_iMonkeysi);dSetSpritePosition(szName,g_flocationi,-3);g_iNumMokeys=6;g_iNumLoseMonkeys=0;dSetSprite
12、Visible("start",false);else if(g_iNumMokeys>1 && iKey = KEY_SPACE && g_iGameState = 1)g_iGameState = 2;g_iChooseMonkey = dRandomRange(0,g_iNumMokeys-1);char *szName = dMakeSpriteName("monkey",g_iMonkeysg_iChooseMonkey);dSetSpritePosition(szName,g_iNumLoseMonkey
13、s*16-40,24);/將后面的monkey移上來g_iMonkeysg_iChooseMonkey = -1;for(int i=g_iChooseMonkey+1;i<g_iNumMokeys;i+)int t = g_iMonkeysi-1;g_iMonkeysi-1 = g_iMonkeysi;g_iMonkeysi = t;g_iNumLoseMonkeys+;g_iNumMokeys-;g_iMoveMonkey = g_iNumMokeys - g_iChooseMonkey;g_fDelayTime = 1;/=/ 引擎捕捉鍵盤彈起消息后,將調(diào)用到本函數(shù)void dOnKeyUp( const int iKey )/ 可以在此添加游戲需要的響應(yīng)函數(shù)/=/ 引擎捕捉到精靈與精靈碰
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度服裝設(shè)計委托創(chuàng)作合同
- 感恩課程課件教學(xué)課件
- 2024年度互聯(lián)網(wǎng)金融與投資合同
- 2024年城市供水供電管網(wǎng)改造工程合同
- 2024年度電子商務(wù)平臺服務(wù)外包合同
- 2024年度智能家居產(chǎn)品購銷合同
- 2024年屋產(chǎn)交易合同:個人賣家與買家之間的協(xié)議
- 2024年度光伏發(fā)電項目建設(shè)與運營合同
- 大學(xué)民法課件教學(xué)課件
- 公司中秋節(jié)員工的慰問信(18篇)
- 高考數(shù)學(xué)小題狂練:每題都附有詳細解析
- 浮動碼頭施工方案
- Poka-Yoke防錯技術(shù)(完整版)
- 保安交接班記錄表(2)
- 神明—EZflame火焰檢測系統(tǒng)
- 個人簡歷求職簡歷課件.ppt
- 2018年江蘇高考滿分作文:在母語的屋檐下
- 新青島版五四制2021-2022四年級科學(xué)上冊實驗指導(dǎo)
- 小學(xué)四年級音樂課程標(biāo)準(zhǔn)
- 雙向細目表和單元測試卷及組卷說明
- 離子色譜法測定空氣中二氧化硫
評論
0/150
提交評論