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

正文內(nèi)容

基于cocos2d-x的斗地主游戲開發(fā)畢業(yè)設(shè)計(jì)-在線瀏覽

2025-01-26 16:09本頁(yè)面
  

【正文】 cene, scene data storage layer and the basic technology of the main important and difficult points of the game design is selecting cards, work munications and artificial intelligence of puter AI, work munication is achieved mainly by SOCKET programming and multithreading (receiving thread) technology。 the design of puter AI is mainly through the priority algorithm of series of playing and following the caeds to achieve artificial intelligence. The game has the advantages of harmonious interface, easy operation, rich entertainment, and also can be ported to multiple platforms. Keywords: Landlords。 crossplatform。從《植物大戰(zhàn)僵尸》到《憤怒的小鳥》,移動(dòng)平臺(tái)游戲的開發(fā)進(jìn)入了新的階段。怎樣將一款游戲發(fā)布到多個(gè)平臺(tái)也是開發(fā)者們一直在探索的問題。 本文所開發(fā)的斗地主游戲正是基于 Cocos2Dx游戲引擎的,利用此引擎開發(fā)出的游戲可以在多個(gè)平臺(tái)運(yùn)行,像主流的 Android、 IOS、 WindowsPhone 等手機(jī)平臺(tái), Windows 等桌面系統(tǒng)。接下來(lái)將逐個(gè)介紹各個(gè)模塊的設(shè)計(jì)和具體實(shí)現(xiàn)過程。而移動(dòng)游戲的開發(fā)方式同樣也有了改變,開發(fā)者們開始嘗試針對(duì)不同平臺(tái)的開發(fā)框架來(lái)進(jìn)行開發(fā)。雖然 Android 平臺(tái)的屏幕及分辨率也是千差萬(wàn)別,但是由于出色的框架使得開發(fā)和移植變得簡(jiǎn)單起來(lái),同時(shí)也不需要過多考慮內(nèi)存的限制??缙脚_(tái)的引擎有基于 HTML5 的跨平臺(tái)特性產(chǎn)生的開發(fā)引擎,也有基于 OpenGL 開發(fā)的游戲引擎,其中 Cocos2Dx 廣泛受到開發(fā)者的關(guān)注,因?yàn)樗粌H具有跨平臺(tái)的特點(diǎn),還具有受 Cocos2D 全球社區(qū)的支持、框架簡(jiǎn)單易學(xué)、十分容易上手等特點(diǎn)。 Cocos2dx 是一個(gè)支持多平臺(tái)的 2D 手機(jī)游戲引擎,使用 C++ 開發(fā),基于OpenGL ES,具體各個(gè)平臺(tái)的支持如下: IOSA, Android, Black Berry, Html5,window phone 等 。 國(guó)內(nèi)外研究現(xiàn)狀 隨著智能設(shè)備平臺(tái)的普及、用戶數(shù)量的增多,智能平臺(tái)的應(yīng)用,尤其是游戲異?;鸨?。但另一方面,平臺(tái)的多樣性也給開發(fā)者帶來(lái)諸多不便。特別是隨著 Android 和 桂林 電子科技大學(xué)畢業(yè)設(shè)計(jì)(論文)報(bào)告用紙 第 3 頁(yè) 共 49 頁(yè) iOS 平臺(tái)的興起,開發(fā)者的游戲跨平臺(tái)的需求更強(qiáng)了,隨即 Cocos2Dx 分支誕生 [1]。因此 Cocos2Dx 迅速成為開發(fā)者的首選。 2020 年年初,英國(guó)設(shè)計(jì)大師 Michael Heald 專門為 Cocos2Dx 設(shè)計(jì)了標(biāo)志 [2]。此外,在 Zygaena 的幫助下,還研發(fā)出綁定 JavaScript 的 Cocos2Dx 版本。相信 Cocos2Dx 將會(huì)更加受到廣大開發(fā)者的歡迎, Cocos2Dx 引擎也可以擴(kuò)大 其影響,成為全平臺(tái)的二維游戲引擎。而 2020 年 6 月, Google Android 方面也發(fā)布了 NDK( Native Develop Kit,原生態(tài)本地開發(fā)包),支持開發(fā)者使用 C/C++ 語(yǔ)言開發(fā) Android 程序。所以,對(duì)于用 Cocos2Dx 開發(fā)的游戲跨平臺(tái)實(shí)現(xiàn)是可行的?,F(xiàn)對(duì)于斗地主的功能進(jìn)行一個(gè)可行性分析: ( 1)用戶登錄注冊(cè)及驗(yàn)證 通過 Cocos2Dx 提供的場(chǎng)景類,在其場(chǎng)景上布景,添加編輯框、菜單及按鈕,然后利用導(dǎo)演類即可運(yùn)行場(chǎng)景;利用菜單響應(yīng)函數(shù)可在用戶單機(jī)注冊(cè)菜單項(xiàng)是切換場(chǎng)景到注冊(cè)界面;驗(yàn)證功能可通過 Cocos2Dx 中支持的游戲存檔類 Defaulter實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),可將其看做類似 于 Android 的輕量級(jí)數(shù)據(jù)庫(kù) Sq Lite 來(lái)使用。 ( 2)自動(dòng)發(fā)牌 先讓服務(wù)器自動(dòng)隨機(jī)生成一副牌,然后分發(fā)給不同的客服端,利用 Cocos2Dx中的計(jì)時(shí)器函數(shù) schedule()來(lái)設(shè)定一個(gè)計(jì)時(shí)器,每格一段時(shí)間調(diào)用其定時(shí)器函數(shù)(繪制一張牌),多次調(diào)用即可實(shí)現(xiàn)自動(dòng)發(fā)牌的效果。 ( 4)出牌選牌 出牌選牌環(huán)節(jié)與玩家叫分模塊類似,只 是需要一些算法來(lái)實(shí)現(xiàn)判斷的牌的大小、類型,提示出牌等等,所以理論上亦是可行的。 ( 6)網(wǎng)絡(luò)通信 斗地主要實(shí)現(xiàn)聯(lián)網(wǎng)打牌可通過 SOCKET 技術(shù)來(lái)實(shí)現(xiàn)服務(wù)器與客服端的通信,再借助多線程技術(shù)創(chuàng)建接受線程即可多接受的數(shù)據(jù)進(jìn)行處理,從而轉(zhuǎn)發(fā)給其他玩家,打到玩家間互相通信的效果。 2 相關(guān)技術(shù)背景 Cocos2dx 簡(jiǎn)介 Cocos2Dx 中“ x”包含兩個(gè)意思 :一方面是 C++ 的文件擴(kuò)展 CXX,“ X”表示該項(xiàng)目是由 C++ 編寫的 ;另一方面意味著交叉,這個(gè)開源項(xiàng)目的目標(biāo)是讓用戶創(chuàng)建跨平臺(tái)的代碼。因?yàn)? Cocos2Dx 具有跨平臺(tái)的特點(diǎn),再加上 Cocos2D 全球社區(qū)的支持, Cocos2D 框架 簡(jiǎn)單易學(xué)、十分容易快速上手。經(jīng)過一段時(shí)間的發(fā)展,眾多開發(fā)者使用 Cocos2Dx 開發(fā)出了多款游戲,包括捕魚達(dá)人、地鐵總動(dòng)員等 [3]。此外,在 Zygaena 的幫助下,還研發(fā)出綁定 JavaScript 的 Cocos2Dx 版本。相信 Cocos2Dx 將會(huì)更加受到廣大開發(fā)者的歡迎, Cocos2Dx 引擎也可以擴(kuò)大其影響,成為全平臺(tái)的二維游戲引擎。 ( 2) 精靈:快速而方便的精靈。 ( 4) 特效:包括波浪、旋轉(zhuǎn)和透鏡等特性。 ( 6) 轉(zhuǎn)換:從一個(gè)場(chǎng)景移動(dòng)到另外一個(gè)不同的場(chǎng)景。 ( 8) 文本渲染:支持文本渲染標(biāo)簽。 ( 10) BSD 許可 : BSD( Berkelyan Software Distribution,伯克利軟件套件)開源協(xié)議給予使用者很大的自由。 ( 11) 基于 OpenGL:支持硬件 加速。 ( 1) 順序容器 vector Vector 是一種順序容器,跟數(shù)組類似,可以將其稱為動(dòng)態(tài)數(shù)據(jù) [4]。 ( 2) 關(guān)聯(lián)容器 map Map 是鍵 — 值對(duì)的集合, map 類型通??梢岳斫鉃殛P(guān)聯(lián)容器:可使用其下標(biāo)來(lái)獲取一個(gè)值,正如內(nèi)置數(shù)組類型一樣。當(dāng)向 map容器里添加元素或訪問元素時(shí),如果元素不存在則會(huì)自動(dòng)添加元素,這樣我們?cè)诮y(tǒng)計(jì)同樣牌值牌的時(shí)候,可以利用 map 容器對(duì)牌的張數(shù)進(jìn)行統(tǒng)計(jì),進(jìn)而找出牌的類型。 桂林 電子科技大學(xué)畢業(yè)設(shè)計(jì)(論文)報(bào)告用紙 第 6 頁(yè) 共 49 頁(yè) SOCKET 及多線程編程 SOCKET 編程 sockets(套接字)編程有三種,流式套接字( SOCK_STREAM),數(shù)據(jù)報(bào)套接字( SOCK_DGRAM),原始套接字( SOCK_RAW) 。 【 實(shí)現(xiàn)步驟 】 ( 1) 服務(wù)器端編程的步驟: ①加載套接字庫(kù),創(chuàng)建套接字 (WSAStartup()/socket()); ②綁定套接字到一個(gè) IP 地址和一個(gè)端口上 (bind()); ③將套接字設(shè)置為監(jiān)聽模式等待連接請(qǐng)求 (listen()); ④請(qǐng)求到來(lái)后,接受連接請(qǐng)求,返回一個(gè)新的對(duì)應(yīng)于此次連接的套接字(accept()); ⑤用返回的套接字和客戶端進(jìn)行通信 (send()/recv()); ⑥返回,等待另一連接請(qǐng)求; ⑦關(guān)閉套接字,關(guān)閉加載的套接字庫(kù) (closesocket()/WSACleanup())。 ( 3) Socket 編程通用步驟(模板): 第 1 步 加載 /釋放 Winsock 庫(kù) : 加載方法 : WSADATA wsa。wsa) != 0) { return。 第 2 步 構(gòu)造 SOCKET: 桂林 電子科技大學(xué)畢業(yè)設(shè)計(jì)(論文)報(bào)告用紙 第 7 頁(yè) 共 49 頁(yè) 服務(wù)端 :構(gòu)造監(jiān)聽 SOCKET,流式 SOCKET. SOCKET Listen_Sock = socket(AF_INET, SOCK_STREAM, 0) 客戶端 :構(gòu)造通訊 SOCKET,流式 SOCKET. SOCKET Client_Sock = socket(AF_INET, SOCK_STREAM, 0) 第 3 步 配置監(jiān)聽地址和端口 : 服務(wù)端 : SOCKADDR_IN serverAddr ZeroMemory((char *)amp。 = AF_INET。 /*本地監(jiān)聽端口 :1234*/ = htonl(INADDR_ANY)。serverAddr,sizeof(serverAddr)) 第 5 步 服務(wù)端 /客戶端連接 : 服務(wù)端 :等待客戶端接入 . SOCKET Command_Sock = accept(Listen_Sock, ...) 客戶端 :請(qǐng)求與服務(wù)端連接 . int ret = connect(Client_Sock, ...) 第 6 步 收 /發(fā)數(shù)據(jù) : 服務(wù)端 :等待客戶端接入 .char buf[1024]. 接收數(shù)據(jù) :recv(Command_Sock,buf, ...) 或 發(fā)送數(shù)據(jù) :send(Command_Sock,buf, ...) 客戶端 :請(qǐng)求與服務(wù)端連接 .char buf[1024]. 發(fā)送數(shù)據(jù) :send(Client_Sock,buf, ...) 或 接收數(shù)據(jù) :recv(Client_Sock,buf, ...) 第 7 步 關(guān)閉 SOCKET: 服務(wù)端 :關(guān)閉 SOCKET. closesocket(Listen_Sock) closesocket(Command_Sock) 客戶端 :關(guān)閉 SOCKET. closesocket(Client_Sock) 桂林 電子科技大學(xué)畢業(yè)設(shè)計(jì)(論文)報(bào)告用紙 第 8 頁(yè) 共 49 頁(yè) 多線程編程 【多線程編程的步驟】 ( 1) 編寫線程函數(shù) 所有線程必須從一個(gè)指定的函 數(shù)開始執(zhí)行,該函數(shù)稱為線程函數(shù),它必須具有下列原型: DWORD WINAPI YourThreadFunc(LPVOID lpvThreadParm)。象 WinMain 函數(shù)一樣,這個(gè)函數(shù)并不由操作系統(tǒng)調(diào)用, 操作系統(tǒng)調(diào)用包含在 中的非 C運(yùn)行時(shí)的一個(gè)內(nèi)部函數(shù),如 StartOfThread,然后由 StartOfThread 函數(shù)建立起一個(gè)異常處理框架后,調(diào)用我們的函數(shù) [6]。 Sleep(10000)。 Sleep(20200)。 HANDLECreateThread(LPSECURITY_ATTRIBUTES lpsa, DWORD cbstack, LPTHREAD_START_ROUTINE lpStartAddr, LPVOID lpvThreadParm, DWORDfdw Create, LPDWORDlpID Thread)。如果想讓對(duì)象為缺省安全屬性的話,可以傳一個(gè) NULL,如果想讓任一個(gè)子進(jìn)程都可繼承一個(gè)該線程對(duì)象句柄,必須指定一個(gè) SECURITY_ATTRIBUTES 結(jié)構(gòu),其中bInheritHandle 成員初始化為 TRUE。 參數(shù) lpStartAddr 用來(lái)表示新線程開始執(zhí)行時(shí)代碼所在函數(shù)的地址,即為線程函數(shù)。如果該參數(shù)為 0,線程就會(huì)立即開始執(zhí)行,如果該參數(shù)為 CREATE_SUSPENDED,則系統(tǒng)產(chǎn)生線程后,初始化 CPU,登記 CONTEXT結(jié)構(gòu)的成員,準(zhǔn)備好執(zhí)行該線程函數(shù)中的第一條指令,但并不馬上執(zhí)行,而是掛起該線程。 此外,還可以使用 _beginthread 等函數(shù)來(lái)創(chuàng)建線程。 handle1=(HANDLE)_beginthread(Function1,0,NULL)。 VOIDExitThread(UINTfuExitCode )。調(diào)用 TerminateThread 函數(shù)亦可終止線程。 該函數(shù)用來(lái)結(jié)束由 hThread 參數(shù)指定的線程, 并把 dwExitCode 設(shè)成該線程的退出碼。 3 開發(fā)環(huán)境的配置 開發(fā)環(huán)境的配置 所謂“工欲善其事,必先利其器”。目前, Cocos2Dx 以上版本支持 Win3 Android、iOS 三個(gè)平臺(tái)的開發(fā),接下來(lái)將分別介紹在這三個(gè)環(huán)境下的開發(fā)環(huán)境搭建。 一般情況下,使用 Cocos2Dx 的開發(fā)流程是 :首先在 VS 環(huán)境中進(jìn)行開發(fā)調(diào)試,之后分別在另外兩個(gè)平臺(tái)的開發(fā)環(huán)境中編譯生成相應(yīng)的軟件包。 Windows 下的開發(fā)環(huán)境配置 搭建 Windows 下的 Cocos2Dx 開發(fā)環(huán)境,首先需要安裝 VS, VS 是微軟公司推出的集成開發(fā)環(huán)境,是目前 Windows 平臺(tái)上最流行的開發(fā)環(huán)境。 ( 1) 首先,從微軟
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1