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

正文內(nèi)容

基于cocos2d-x的斗地主游戲開發(fā)畢業(yè)論文(已修改)

2025-07-09 17:14 本頁面
 

【正文】 桂林電子科技大學畢業(yè)設計(論文)報告用紙基于Cocos2dx的斗地主游戲開發(fā)畢業(yè)論文引言 11 緒論 2 課題研究意義 2 國內(nèi)外研究現(xiàn)狀 2 可行性分析 32 相關技術背景 4 Cocos2dx簡介 4 數(shù)據(jù)結構及算法 5 SOCKET及多線程編程 6 SOCKET編程 6 多線程編程 83 開發(fā)環(huán)境的配置 9 開發(fā)環(huán)境的配置 9 Windows下的開發(fā)環(huán)境配置 10 Android下的開發(fā)環(huán)境配置 134 總體設計 16 軟件的構建 16 模塊的構建 17 功能的構建 18 軟件的框架 205 軟件設計與實現(xiàn)(詳細設計) 21 數(shù)據(jù)結構及算法的設計 21 數(shù)據(jù)庫的設計 22 模塊的設計與實現(xiàn) 23 用戶登錄注冊及驗證模塊 23 網(wǎng)絡通信模塊 24 自動發(fā)牌模塊 26 玩家叫分模塊 27 出牌選牌模塊 28 人工智能模塊 29 重玩模塊 316 軟件測試 32 測試環(huán)境 32 測試準則 32 功能測試 32 登錄驗證功能的測試 32 自動發(fā)牌功能的測試 33桂林電子科技大學畢業(yè)設計(論文)報告用紙 叫分功能的測試 34 托管功能的測試 35 提示功能的測試 35 重選功能的測試 36 電腦智力的測試 377 總結 38謝 辭 39參考文獻 40附 錄 41第 50 頁 共 49 頁桂林電子科技大學畢業(yè)設計(論文)報告用紙引言隨著智能設備平臺的普及、用戶數(shù)量的增多,智能平臺的應用,尤其是游戲異?;鸨?。從《植物大戰(zhàn)僵尸》到《憤怒的小鳥》,移動平臺游戲的開發(fā)進入了新的階段。但另一方面,平臺的多樣性也給開發(fā)者帶來諸多不便。怎樣將一款游戲發(fā)布到多個平臺也是開發(fā)者們一直在探索的問題。特別是隨著 Android 和 iOS 平臺的興起,開發(fā)者的游戲跨平臺的需求更強了,隨即 Cocos2Dx誕生[1]。本文所開發(fā)的斗地主游戲正是基于Cocos2Dx游戲引擎的,利用此引擎開發(fā)出的游戲可以在多個平臺運行,像主流的Android、IOS、WindowsPhone等手機平臺,Windows等桌面系統(tǒng)。應用Cocos2Dx的一些特性,結合C++的提供的STL模板庫,開發(fā)一款界面友好、跨平臺的斗地主游戲。接下來將逐個介紹各個模塊的設計和具體實現(xiàn)過程。1 緒論 課題研究意義隨著蘋果 iOS 系統(tǒng)和 iPhone、iPad 等一系列產(chǎn)品的發(fā)布,隨著 Android 系統(tǒng)和相應設備的誕生,移動平臺的種類得到了豐富,并從單一的手機發(fā)展到平板電腦等多種手持設備上。而移動游戲的開發(fā)方式同樣也有了改變,開發(fā)者們開始嘗試針對不同平臺的開發(fā)框架來進行開發(fā)。智能平臺的硬件及性能的提高并沒有帶來游戲品質(zhì)的提高,于是開發(fā)者們也探索著進行只針對單一平臺的開發(fā),他們利用平臺特性(多點觸屏,重力感應等)開發(fā)出了很多不錯的游戲。雖然 Android 平臺的屏幕及分辨率也是千差萬別,但是由于出色的框架使得開發(fā)和移植變得簡單起來,同時也不需要過多考慮內(nèi)存的限制。但是問題依然存在,對于不同的智能平臺(Android、iOS 等操作系統(tǒng))依然需要編寫不同的代碼來進行開發(fā),如何跨平臺這個問題擺在了開發(fā)者面前 ??缙脚_的引擎有基于 HTML5 的跨平臺特性產(chǎn)生的開發(fā)引擎,也有基于 OpenGL 開發(fā)的游戲引擎,其中 Cocos2Dx 廣泛受到開發(fā)者的關注,因為它不僅具有跨平臺的特點,還具有受 Cocos2D 全球社區(qū)的支持、框架簡單易學、十分容易上手等特點。經(jīng)過一段時間的發(fā)展,開發(fā)者使用 Cocos2Dx 開發(fā)出了多款成功的游戲,包括捕魚達人、地鐵總動員等佳作[1]。Cocos2dx 是一個支持多平臺的 2D 手機游戲引擎,使用 C++ 開發(fā),基于OpenGL ES,具體各個平臺的支持如下:IOSA,Android,Black Berry,Html5,window phone等。cocos2dx引擎在國內(nèi)手機游戲開發(fā)使用的份額接近70%,而國外使用份額則是接近25%,在蘋果APP排行榜top10里面,有7個都是用cocos2dx引擎開發(fā)的。 國內(nèi)外研究現(xiàn)狀隨著智能設備平臺的普及、用戶數(shù)量的增多,智能平臺的應用,尤其是游戲異常火爆。從《植物大戰(zhàn)僵尸》到《憤怒的小鳥》,移動平臺游戲的開發(fā)進入了新的階段。但另一方面,平臺的多樣性也給開發(fā)者帶來諸多不便。怎樣將一款游戲發(fā)布到多個平臺也是開發(fā)者們一直在探索的問題。特別是隨著 Android 和 iOS 平臺的興起,開發(fā)者的游戲跨平臺的需求更強了,隨即 Cocos2Dx 分支誕生[1]。因為 Cocos2Dx 具有跨平臺的特點,再加上 Cocos2D全球社區(qū)的支持,Cocos2D 框架簡單易學、十分容易快速上手。因此 Cocos2Dx 迅速成為開發(fā)者的首選。經(jīng)過一段時間的發(fā)展,眾多開發(fā)者使用 Cocos2Dx 開發(fā)出了多款游戲,包括捕魚達人、地鐵總動員等。2012 年年初,英國設計大師 Michael Heald 專門為 Cocos2Dx 設計了標志[2]。2012 年年初,Cocos2Dx 團隊再次開發(fā)出兩個分支,分別是支持 Windows Phone 的 XNA 版和支持 HTML5 的 HTML5 版(后者還得到了 Google公司的贊助)。此外,在 Zygaena 的幫助下,還研發(fā)出綁定 JavaScript 的 Cocos2Dx 版本。隨著 Cocos2D 及其分支的發(fā)展,其會有更多跨平臺特性,從而可以支持更多的平臺,這會提高開發(fā)者的開發(fā)效率。相信 Cocos2Dx 將會更加受到廣大開發(fā)者的歡迎,Cocos2Dx 引擎也可以擴大其影響,成為全平臺的二維游戲引擎。 可行性分析 Cocos2D是針對IOS設計的一款游戲引擎,隨著引擎的發(fā)展,其分支Cocos2dx 是一個支持多平臺的 2D 手機游戲引擎,使用 C++ 開發(fā)。而 2009 年 6 月,Google Android 方面也發(fā)布了 NDK(Native Develop Kit,原生態(tài)本地開發(fā)包),支持開發(fā)者使用 C/C++ 語言開發(fā) Android 程序??梢奿os及Android均支持C++語言在其平臺上進行游戲開發(fā),C++開發(fā)的軟件運行在Windows系統(tǒng)下更是無可爭議。所以,對于用Cocos2Dx開發(fā)的游戲跨平臺實現(xiàn)是可行的。對于斗地主游戲本身,在市場上的開發(fā)已經(jīng)相當成熟,像市面上比較流行的斗地主、JJ斗地主、博雅斗地主等?,F(xiàn)對于斗地主的功能進行一個可行性分析:(1)用戶登錄注冊及驗證通過Cocos2Dx提供的場景類,在其場景上布景,添加編輯框、菜單及按鈕,然后利用導演類即可運行場景;利用菜單響應函數(shù)可在用戶單機注冊菜單項是切換場景到注冊界面;驗證功能可通過Cocos2Dx中支持的游戲存檔類Defaulter實現(xiàn)數(shù)據(jù)的存儲,可將其看做類似于Android的輕量級數(shù)據(jù)庫Sq Lite來使用。據(jù)分析此功能可實現(xiàn)。 (2)自動發(fā)牌先讓服務器自動隨機生成一副牌,然后分發(fā)給不同的客服端,利用Cocos2Dx中的計時器函數(shù)schedule()來設定一個計時器,每格一段時間調(diào)用其定時器函數(shù)(繪制一張牌),多次調(diào)用即可實現(xiàn)自動發(fā)牌的效果。(3)玩家叫分叫分功能可通過設計一組叫分菜單項,每次玩家叫分時根據(jù)上家所叫分數(shù)禁用相應菜單項,叫分結束后刪除叫分菜單,通過C/S通信可實現(xiàn)玩家的正常叫分。(4)出牌選牌出牌選牌環(huán)節(jié)與玩家叫分模塊類似,只是需要一些算法來實現(xiàn)判斷的牌的大小、類型,提示出牌等等,所以理論上亦是可行的。(5)再玩一局當有一個玩家出完所有的牌時游戲結束,此時只要再次運行打牌所在的場景,讓服務器重選發(fā)送牌數(shù)據(jù),即可實現(xiàn)再玩一局的功能。(6)網(wǎng)絡通信斗地主要實現(xiàn)聯(lián)網(wǎng)打牌可通過SOCKET技術來實現(xiàn)服務器與客服端的通信,再借助多線程技術創(chuàng)建接受線程即可多接受的數(shù)據(jù)進行處理,從而轉發(fā)給其他玩家,打到玩家間互相通信的效果。(7) 人工智能首先,電腦本身是不會出牌的,但是我們可給電腦玩家設計出一套出牌及跟牌的優(yōu)先級,再結合地主與農(nóng)民身份的區(qū)別做一些特殊處理,即可實現(xiàn)簡單的人工智能。2 相關技術背景 Cocos2dx簡介 Cocos2Dx中“x”包含兩個意思 :一方面是 C++ 的文件擴展 CXX,“X”表示該項目是由 C++ 編寫的 ;另一方面意味著交叉,這個開源項目的目標是讓用戶創(chuàng)建跨平臺的代碼。Cocos2Dx 是用 C++ 重寫的 Cocos2D 框架,因為Android 和 iOS 均支持 C++。因為 Cocos2Dx 具有跨平臺的特點,再加上 Cocos2D全球社區(qū)的支持,Cocos2D 框架簡單易學、十分容易快速上手。因此 Cocos2Dx 迅速成為開發(fā)者的首選。經(jīng)過一段時間的發(fā)展,眾多開發(fā)者使用 Cocos2Dx 開發(fā)出了多款游戲,包括捕魚達人、地鐵總動員等[3]。 2012 年年初,Cocos2Dx 團隊再次開發(fā)出兩個分支,分別是支持 Windows Phone 的 XNA 版和支持 HTML5 的 HTML5 版(后者還得到了 Google公司的贊助)。此外,在 Zygaena 的幫助下,還研發(fā)出綁定 JavaScript 的 Cocos2Dx 版本。隨著 Cocos2D 及其分支的發(fā)展,其會有更多跨平臺特性,從而可以支持更多的平臺,這會提高開發(fā)者的開發(fā)效率。相信 Cocos2Dx 將會更加受到廣大開發(fā)者的歡迎,Cocos2Dx 引擎也可以擴大其影響,成為全平臺的二維游戲引擎。 Cocos2Dx 繼承了 Cocos2D 的全部特點,包括如下內(nèi)容:(1)流程控制:非常容易地管理不同場景之間的流程控制。(2)精靈:快速而方便的精靈。(3)動作:可組合精靈的動作(如移動、旋轉和縮放等),使精靈動起來。(4)特效:包括波浪、旋轉和透鏡等特性。(5)平面地圖:支持平面地圖和 45 度角地圖。(6)轉換:從一個場景移動到另外一個不同的場景。(7)菜單:創(chuàng)建內(nèi)部菜單,包括主菜單和游戲菜單。(8)文本渲染:支持文本渲染標簽。(9)文檔:包括編程指南、API 參考、視頻教學和很多簡單的測試例子。(10)BSD 許可 :BSD(Berkelyan Software Distribution,伯克利軟件套件)開源協(xié)議給予使用者很大的自由。使用者可以自由使用、修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再次發(fā)布。(11)基于 OpenGL:支持硬件加速。 數(shù)據(jù)結構及算法對于一款像斗地主這樣的紙牌游戲,需要對牌進行一些判定及分類,那么一種好的數(shù)據(jù)結構來存儲這些牌數(shù)據(jù)是至關重要的。(1)順序容器vectorVector是一種順序容器,跟數(shù)組類似,可以將其稱為動態(tài)數(shù)據(jù)[4]。選這種容器來存儲牌數(shù)據(jù)有很多好處,我們可以利用其自帶的一些方法來實現(xiàn)對數(shù)據(jù)的增刪查改,如push_back(),erase()等。(2)關聯(lián)容器mapMap是鍵—值對的集合,map類型通??梢岳斫鉃殛P聯(lián)容器:可使用其下標來獲取一個值,正如內(nèi)置數(shù)組類型一樣。而關聯(lián)的本質(zhì)在于元素的值與某個特定的鍵相關聯(lián),而非通過元素在數(shù)組中的位置來獲取[4]。當向map容器里添加元素或訪問元素時,如果元素不存在則會自動添加元素,這樣我們在統(tǒng)計同樣牌值牌的時候,可以利用map容器對牌的張數(shù)進行統(tǒng)計,進而找出牌的類型。在設計一些判斷牌的類型,找出牌的類型算法時,我們可以借助容器一些泛型算法對數(shù)據(jù)進行一些增刪查改,像map容器可以對數(shù)據(jù)進行分類、統(tǒng)計信息等。 SOCKET及多線程編程 SOCKET編程sockets(套接字)編程有三種,流式套接字(SOCK_STREAM),數(shù)據(jù)報套接字(SOCK_DGRAM),原始套接字(SOCK_RAW)?;赥CP的socket編程是采用的流式套接字[5]?!緦崿F(xiàn)步驟】(1)服務器端編程的步驟:①加載套接字庫,創(chuàng)建套接字(WSAStartup()/socket());②綁定套接字到一個IP地址和一個端口上(bind());③將套接字設置為監(jiān)聽模式等待連接請求(listen());④請求到來后,接受連接請求,返回一個新的對應于此次連接的套接字(accept());⑤用返回的套接字和客戶端進行通信(send()/recv());⑥返回,等待另一連接請求;⑦關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。(2)客戶端編程的步驟:①加載套接字庫,創(chuàng)建套接字(WSAStartup()/socket());②向服務器發(fā)出連接請求(connect());③和服務器端進行通信(send()/recv());④關閉套接字,關閉加載的套接字庫(closesocket()/WSACleanup())。(3)Socket編程通用步驟(模板):第1步 加載/釋放Winsock庫:加載方法:WSADATA wsa。/*初始化socket資源*/if (WSAStartup(MAKEWORD(1,1),amp。wsa) != 0){ return。 //代表失敗}釋放方法:WSACleanup()。第2步 構造SOCKET:服務端:構造監(jiān)聽SOCKET,流式SOCKET. SOCKET Listen_Sock = socket(AF_INET, SOCK_STREAM, 0)客戶端:構造通訊SOCKET,流式SOCKET.SOCKET Client_Sock = socket(AF_INET, SOCK_STREAM, 0)第3步 配置監(jiān)聽地址和端口:服務端: SOCKADDR_IN serverAddrZeroMemory((char *)amp。serv
點擊復制文檔內(nèi)容
職業(yè)教育相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1