freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

森林伏兵——基于ios平臺(tái)的人機(jī)對戰(zhàn)棋類游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(文件)

2025-07-10 16:00 上一頁面

下一頁面
 

【正文】 39 未來工作展望 39謝 辭 40參考文獻(xiàn) 41附錄A 外文翻譯—原文部分 42附錄B 外文翻譯—譯文部分 46附錄C 軟件使用說明書 50附錄D 主要源代碼 5419華東交通大學(xué)畢業(yè)設(shè)計(jì)1華東交通大學(xué)畢業(yè)設(shè)計(jì)1 緒 論 研究的背景及意義 森林伏兵,俗名“動(dòng)物棋”,源自于生活中的題材,將之改造成手機(jī)游戲,主要面向兒童市場。iOS是由蘋果公司開發(fā)的手持設(shè)備操作系統(tǒng)。截止至2011年11月,根據(jù)Canalys的數(shù)據(jù)顯示,iOS已經(jīng)占據(jù)了全球智能手機(jī)系統(tǒng)市場份額的30%,在美國的市場占有率為43%。7月14日,APP Store中可供下載的應(yīng)用已達(dá)800個(gè),下載量達(dá)到1千萬次。“水果忍者”、“神廟逃亡”、“憤怒的小鳥”等游戲的巨大成功,揭示出一個(gè)成功手機(jī)游戲的幾個(gè)共同特點(diǎn):操作簡單、特效和UI精美、源自生活。 國內(nèi)外研究現(xiàn)狀該游戲無論在國內(nèi)還是國外市場,均未面世,不存在產(chǎn)權(quán)糾紛問題。諾依曼證明了博弈論的基本原理,從而宣告了博弈論的正式誕生。福布斯今天博弈論已發(fā)展成一門較完善的學(xué)科。機(jī)器博弈的研究對人工智能的發(fā)展有著積極的推動(dòng)作用,也是如今人們能方便借鑒并開發(fā)各類人機(jī)游戲的重要基礎(chǔ)。 2)用戶界面繪制。 6)界面設(shè)計(jì)。 (2)游戲初始化模塊完成游戲的的初始布局、數(shù)據(jù)的初始化工作。(4)附加功能模塊游戲暫停與恢復(fù)、聲音靜止與播放及動(dòng)作特效設(shè)計(jì)。 功能需求描述(1)界面構(gòu)架模塊包括主菜單、轉(zhuǎn)盤、幫助、注冊與登陸、反饋、游戲中心、輸局、贏局、平局、選項(xiàng)菜單、更換背景音樂及戰(zhàn)績各個(gè)界面的設(shè)計(jì)與架構(gòu)。轉(zhuǎn)盤界面如圖21所示,棋盤最初狀態(tài)如圖22所示。圖23 吃棋特殊規(guī)則:“2大象”可以殺掉“9老鼠”,“9老鼠”也可以殺掉“2大象”,如圖24所示。 音效:開啟和關(guān)閉音效,切換背景音樂。戰(zhàn)績內(nèi)容包括玩家的累計(jì)總分和機(jī)器的累計(jì)總分。靜音與恢復(fù):有音效和背景音樂時(shí),顯示為靜音按鈕,點(diǎn)擊之后,顯示為恢復(fù)按鈕,音效與背景音樂都暫停播放。(6)網(wǎng)絡(luò)模塊數(shù)據(jù)同步:如果玩家通過昵稱登陸游戲,進(jìn)入游戲之前,先將戰(zhàn)績從服務(wù)器加載到客戶端;退出游戲時(shí),將新的數(shù)據(jù)上傳到服務(wù)器。 其它需求界面:更加人性化。 圖31 森林伏兵處理流程圖 計(jì)算機(jī)走棋與玩家走棋邏輯將在詳細(xì)設(shè)計(jì)中給出。 內(nèi)部接口將動(dòng)作封裝在一個(gè)函數(shù)中,需要用到此功能時(shí)調(diào)用相應(yīng)接口。 4 數(shù)據(jù)庫設(shè)計(jì) 概念結(jié)構(gòu)設(shè)計(jì) 設(shè)計(jì)思路 設(shè)計(jì)兩張表,一張保存注冊信息,另一張保存對應(yīng)玩家的游戲成績,一個(gè)玩家只對應(yīng)一張戰(zhàn)績表,一張戰(zhàn)績表對應(yīng)多個(gè)玩家。登陸系統(tǒng)時(shí),也返回一個(gè)相應(yīng)的Cookie,作為登陸的標(biāo)記。如果是登陸事件,那么就用當(dāng)前的時(shí)間與一個(gè)固定字符串相連生成一個(gè)Cookie,插入到玩家表中,并將這個(gè)Cookie返回給客戶端。當(dāng)玩家要退出游戲時(shí),將新的Record記錄通過網(wǎng)絡(luò)請求發(fā)送給服務(wù)器,服務(wù)器接收到相應(yīng)數(shù)據(jù)時(shí),對表進(jìn)行刷新。教學(xué):指導(dǎo)玩家游戲規(guī)則。界面中還提供了靜音、暫停等按鈕。選項(xiàng):此界面為了彌補(bǔ)游戲中心界面空間不足,但又需要更多功能擴(kuò)展而設(shè)計(jì)。圖51 工作流圖 界面設(shè)計(jì)成果 主界面游戲主界面如圖52所示。 圖55 關(guān)于與反饋界面(4)啟動(dòng)游戲界面游戲的轉(zhuǎn)盤界面如圖56所示。圖59 切換背景音樂界面(8)贏棋游戲的贏棋界面如圖510所示。初始化系統(tǒng)中用到的各種數(shù)組和變量。 附加功能模塊通過條件控制語句來實(shí)現(xiàn)暫停與恢復(fù)按鈕的切換、靜音與恢復(fù)的切換以及移動(dòng)特效選擇。圖61 初始化游戲程序流程圖 界面初始化模塊關(guān)鍵函數(shù)說明(1)完成界面基本布局bool GameCenter::init()(2)初始化游戲void GameCenter::initGame() 玩家走棋模塊設(shè)計(jì) 玩家走棋模塊算法描述 算法描述如下:1) 判斷玩家是否完成動(dòng)作,是則繼續(xù),否則退出函數(shù);2) 判斷是否輪到玩家操作,是則繼續(xù),否則退出函數(shù);3) 判斷點(diǎn)擊的落點(diǎn)是否在棋盤上,是則繼續(xù),否則退出函數(shù);4) 判斷點(diǎn)擊的落點(diǎn)是否有棋子,是則繼續(xù),否則退出函數(shù);5) 求出點(diǎn)擊的是什么棋子;6) 如果目標(biāo)位置沒有棋子,判斷之前有沒有點(diǎn)擊處于這個(gè)結(jié)點(diǎn)相鄰位置的已方棋子,如果有,則將之運(yùn)動(dòng)到此處,并退出函數(shù);7) 如果此結(jié)點(diǎn)有未翻開的棋子,點(diǎn)擊它將其翻開,并退出函數(shù);8) 如果此結(jié)點(diǎn)有敵方棋子,判斷之前有沒有點(diǎn)擊處于這個(gè)棋子旁邊的已方棋子;9) 如果有,判斷之前點(diǎn)擊的已方棋子能不能將當(dāng)前棋子殺死,能就將之殺死,并退出函數(shù);10) 如果點(diǎn)擊的是己方棋子,將這個(gè)棋子設(shè)定為當(dāng)前棋子,并退出函數(shù)。 計(jì)算機(jī)走棋模塊程序流程圖(1)計(jì)算機(jī)走棋模塊程序流程圖計(jì)算機(jī)走棋模塊程序流程圖如圖63所示。圖65 代價(jià)計(jì)算程序流程圖(3) 獲得與A的距離為2的且能殺死A的B棋子設(shè)X為當(dāng)前棋子的起始位置,Y為目的位置,Dist[X][Y]=1表示建一條從X到Y(jié)的邊。具體內(nèi)容如下: chessValue[]={0,900,800,700,600,500,400,300,200,100,1000,900,800,700,600,500,400,300,200,100,1000}。具體內(nèi)容如下:static const int positionValue[11][26]={{0,12,12,13,12,12,12,27,11,27,12,13,11,26,11,13,12,27,11,27,12 ,12,12,13,12,12},//獵人{(lán) 0,11,11,12,11,11,11,26,10,26,11,12,10,25,10,12,11,26,10,26,11,11,11,12,11,11},{0,10,10,11,10,10,10,25,9,25,10 ,11,9,24,9,11 ,10,25,9,25,10 ,10,10,11,10,10},{0,9,9,10,9,9 ,9,24,8,24,9 ,10,8,23,8,10 ,9,24,8,24,9 ,9,9,10,9,9},{ 0,8,8,9,8,8 ,8,23,7,23,8 ,9,7,22,7,9 ,8,23,7,23,8 ,8,8,9,8,8},{0,7,7,8,7,7,7,22,6,22,7 ,8,6,21,6,8 ,7,22,6,22,7 ,7,7,8,7,7},{ 0,6,6,7,6,6 ,6,21,5,21,6 ,7,5,20,5,7 ,6,21,5,21,6 ,6,6,7,6,6},{ 0,5,5,6,5,5 ,5,19,4,19,5 ,6,4,18,4,6 ,5,19,4,19,5 ,5,5,6,5,5},{ 0,4,4,5,4,4 ,4,17,3,17,4 ,5,3,16,3,5,4,17,3,17,4 ,4,4,5,4,4},{ 0,4,4,5,4,4 ,4,16,3,16,4 ,5,3,15,3,5 ,4,16,3,16,4 ,4,4,5,4,4}}。2)走棋特效中,數(shù)字為2~8的棋子,行走時(shí)用跳動(dòng)特效,其它為移動(dòng)特效。 附加功能模塊程序流程圖(1)暫停與恢復(fù)暫停與恢復(fù)程序流程圖如圖68所示。 定時(shí)模塊程序流程圖定時(shí)模塊程序流程圖如圖611所示。棋中結(jié)點(diǎn)1119為安全結(jié)點(diǎn),棋局結(jié)構(gòu)如圖71所示。該算法自然語言描述如下所示:函數(shù):getOrder/初始化棋盤的隨機(jī)函數(shù) 以當(dāng)前的系統(tǒng)時(shí)間為種子; 清空數(shù)組a[],表示所有編號(hào)都未出現(xiàn); 如果20個(gè)棋子編號(hào)未全部出現(xiàn),繼續(xù)產(chǎn)生數(shù)字: 產(chǎn)生1~20之間的數(shù)字x; 如果x已經(jīng)保存,不用繼續(xù)保存; 否則: 保存未產(chǎn)生過的編號(hào)x; 用order[i]保存第i個(gè)產(chǎn)生的之前未產(chǎn)生的編號(hào)x; 玩家走棋模塊當(dāng)計(jì)算機(jī)走棋時(shí),玩家不能夠觸摸棋子。如果以上情況都不屬于,則將計(jì)算機(jī)所有合法走棋方案進(jìn)行估價(jià),通過排序算法,估價(jià)最高的方案作為本次走棋方案。因?yàn)榭紤]自己一翻開,對方就將子吃掉的可能性,所以此圖為有向圖。該算法自然語言描述如下所示:函數(shù):cmp//排序規(guī)則 按照合法操作的估價(jià)值從大到小排序;函數(shù):sort(moveList+1, moveList+1+nMoves,cmp) 結(jié)束判定返回1表示玩家勝,返回2表示玩家輸,返回0表示游戲未結(jié)束。movingOver:動(dòng)作完成標(biāo)志,movingOver=true表示動(dòng)作已經(jīng)結(jié)束,movingOver=false表示動(dòng)作還沒有結(jié)束。 存圖用大小為26*9的數(shù)組存圖,不但節(jié)約了空間也節(jié)約了定點(diǎn)時(shí)間 。 走棋特效與音效控制將行棋特效和音效控制分別封裝成兩個(gè)函數(shù),獲得行棋方案后,自動(dòng)執(zhí)行相應(yīng)特效,容易修改。 測試策略(1)邊開發(fā)邊測試(2)單元測試(3)黑盒測試 測試進(jìn)度安排單元測試在開發(fā)過程中完成,集成測試兩天完成,黑盒測試兩天完成。3)數(shù)字小的棋子可以殺死數(shù)字大的棋子,同時(shí)數(shù)字為10的數(shù)字遇任何棋子都同歸于盡,數(shù)字相同的棋子也同歸。 關(guān)鍵測試點(diǎn)(1)游戲規(guī)則測試1)棋子最多只能走一步。由于考慮到開發(fā)周期較短,故采用黑盒測試中等價(jià)類的方法來完成。class CDLFunctionAllNeed { bool safePlace(int i)//判斷是不是營 bool allDieInTheSameTime(int x,int y)//是否同歸于盡 bool xDefeatY(int x,int y)//x是否能干掉y string numberToString(int n)//數(shù)字轉(zhuǎn)為字符串, void getOrder(int *order)//洗棋的隨機(jī)函數(shù),有等待更改}。該算法自然語言描述如下所示:函數(shù):miniteTime//倒計(jì)時(shí) 獲得玩家的時(shí)間標(biāo)簽timeComputer; 獲得計(jì)算機(jī)的時(shí)間標(biāo)簽timeComputerBack; 如果時(shí)間已到或者動(dòng)作已經(jīng)結(jié)束: 標(biāo)志動(dòng)作還未結(jié)束; 如果當(dāng)前是玩家在走棋: 標(biāo)志計(jì)算機(jī)在走棋; 否則: 標(biāo)志玩家在走棋; 初始化timeNumbe時(shí)間; 關(guān)閉計(jì)時(shí)函數(shù); 如果當(dāng)前玩家在走棋: 調(diào)用玩家走棋函數(shù); 否則: 調(diào)用計(jì)算機(jī)走棋函數(shù); 獲得number; 如果是玩家在下棋: 刷新玩家時(shí)間標(biāo)簽; 否則: 刷新計(jì)算機(jī)時(shí)間標(biāo)簽; timeNumber減1 代碼優(yōu)化分析 棋子表示優(yōu)化用1~20的數(shù)字分別保存20個(gè)棋子,并用模運(yùn)算獲得某個(gè)棋子的大小,用sideOfchess[]標(biāo)志某一個(gè)棋子屬于哪一方,實(shí)現(xiàn)了O(1)的時(shí)間判斷。該算法自然語言描述如下所示:函數(shù):moveAchessPlayAction//移動(dòng)動(dòng)畫 得到棋面的數(shù)字編號(hào)x; 如果x屬于2~8間的數(shù)字: 跳躍到目標(biāo)結(jié)點(diǎn); 否則: 平移到目標(biāo)結(jié)點(diǎn); 定時(shí)模塊當(dāng)某一方走棋時(shí),定時(shí)器控制走棋方的計(jì)時(shí)標(biāo)簽從10開始倒計(jì)時(shí),走棋結(jié)束后已方時(shí)間標(biāo)簽清空。該算法自然語言描述如下所示:函數(shù):getTheShortestRoteFromOpenToUnopen//求翻開棋子到未翻開棋子的最短路滿懷 初始化dist[][]函數(shù): 如果結(jié)點(diǎn)i等于j:dist[i][j]等于0; 否則dist[i][j]等于無窮大; 枚舉編號(hào)為1~25的棋子: 當(dāng)前結(jié)點(diǎn)為i。棋子的距離大于3時(shí)為最佳。該算法自然語言描述如下所示:函數(shù):ccTouchBegan//玩家走棋函數(shù) 如果游戲已經(jīng)暫停,退出函數(shù); 如果操作結(jié)束,退出函數(shù); 獲得點(diǎn)擊的位置pos; 如果沒有觸摸在棋盤結(jié)點(diǎn)上,退出函數(shù); 獲得在當(dāng)前點(diǎn)的棋子nChess; 如果pos結(jié)點(diǎn)上沒有棋子: 如果之前沒有點(diǎn)擊某個(gè)已方棋子,退出函數(shù); 獲得之前點(diǎn)擊的棋子所在結(jié)點(diǎn)為posOfChessGoing; 如果pos和posOfChessGoing不相鄰,退出函數(shù); 將之前點(diǎn)擊的棋子chessGoing運(yùn)動(dòng)到posOfChessGoing結(jié)點(diǎn); 退出函數(shù); 如果當(dāng)前位置的棋子還未翻開,點(diǎn)擊它翻開,退出函數(shù); 如果未分出雙方分別屬于哪一種棋子: 系統(tǒng)給出提示,退出函數(shù); 如果點(diǎn)擊的是別人翻開的棋子: 獲取此棋子thisChess; 如果之前未點(diǎn)擊棋子,退出函數(shù); 獲得之前點(diǎn)擊的棋子所在結(jié)點(diǎn)為posOfChessGoing; 如果pos和posOfChessGoing不相鄰,退出函數(shù); 如果對方處于安全位置:
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1