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

正文內(nèi)容

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

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

下一頁面
 

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