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

正文內(nèi)容

基于gdi的局域網(wǎng)四國軍棋游戲畢業(yè)設(shè)計-畢業(yè)設(shè)計-資料下載頁

2025-01-19 08:42本頁面

【導(dǎo)讀】福建農(nóng)林大學(xué)金山學(xué)院本科畢業(yè)設(shè)計說明書。專業(yè)年級:2021級計算機(jī)科學(xué)與技術(shù)。指導(dǎo)教師、職稱:講師。使用Socket編程實(shí)現(xiàn)在局域網(wǎng)中的通

  

【正文】 棋盤上、下、左、右和中間部分第一個位置在窗口中的坐標(biāo)。各部分中的上下左右間隔是差不多的,所以亦可據(jù)此得到其他棋盤位置在窗口中的坐標(biāo)。 畫棋子的流程是先找到棋子在棋盤中的位置,判斷屬于棋盤的哪一部分,將其轉(zhuǎn)換為相應(yīng)部分的相對位置,根據(jù)該部分首位置的窗口坐標(biāo),計算出棋子在窗口中的坐標(biāo),對棋子圖片進(jìn)行相應(yīng)的翻轉(zhuǎn),最后畫出棋子 。 如圖 44 所示 福建農(nóng)林大學(xué)金山學(xué)院本科畢業(yè)設(shè)計說明書 15 圖 44 游戲界面模塊流程圖 游戲處理模塊 在游戲界面模塊的介紹中,我們知道棋子在窗口中坐標(biāo)的計算方法,據(jù)此我們就可以完成棋子命中功能。首先獲取到鼠標(biāo)點(diǎn)擊的窗口坐標(biāo),根據(jù)窗口坐標(biāo)判斷出點(diǎn)擊位置是棋盤的上、下、左、右或者中間部分;找到在棋盤哪一部分后,將坐標(biāo)與找到部分上棋子的坐標(biāo)進(jìn)行比較,如果符合,則命中,否則未命中。 棋子命中問題解決后還需解決棋子選中問題,方法是用一個變量保存選中的棋子,當(dāng)鼠標(biāo)點(diǎn)擊時,判斷是否命中棋子,若沒有則將變量清除,若有則判斷命中的是不是自己的棋子 ,如果不是則將變量清除,如果有則判斷是否命中已選中的棋子,如果是則將變量清除,如果不是則將命中的棋子保存到選中變量中。如圖 45所示 福建農(nóng)林大學(xué)金山學(xué)院本科 畢業(yè)設(shè)計說明書 16 圖 45 棋子選中流程圖 還需解決棋子移動問題,移動的前提是已經(jīng)選中棋子并且下一次鼠標(biāo)點(diǎn)擊事件命中新的棋子。如何判斷能否移動到呢?首先判斷選中的位置是在鐵路、公路還是行營上;若在公路,只需搜索其上下左右位置;若在行營,只需搜索其周圍八個位置即可;若在鐵路上,再判斷要到達(dá)的位置是在鐵路、公路、行營還是大本營上;若是公路或大本營,只需搜索選中棋子的上下左右位置;若是行營,只需 搜索選中棋子周圍八個位置即可;若在鐵路上則按選中棋子是不是工兵分成兩種情況,如果是工兵,則用第三章關(guān)鍵算法中的工兵尋路方法判斷是否可以移動到,否則就根據(jù)就搜索可到達(dá)的鐵路位置。如圖 46所示 福建農(nóng)林大學(xué)金山學(xué)院本科畢業(yè)設(shè)計說明書 17 圖 46 棋子能否移動流程圖 網(wǎng)絡(luò)消息處理模塊 此模塊就是處理服務(wù)器與客戶機(jī)之間的通信,服務(wù)器線程收到客戶機(jī)的連接請求后,創(chuàng)建一個對應(yīng)的服務(wù)器接收線程,用來接收客戶機(jī)發(fā)送過來的消息;接收到客戶機(jī)的消息后,進(jìn)行相應(yīng)的處理后,將結(jié)果返回給客戶機(jī)。在這里主要說說主要游戲邏輯在服務(wù)器的實(shí)現(xiàn)。 客戶機(jī)在游戲處理 模塊中判斷出選中的棋子能否移動到命中的位置后,將選中棋子位置和命中的位置發(fā)送的服務(wù)器。服務(wù)器就根據(jù)保存在服務(wù)器的各棋子大小進(jìn)行判斷。首先將接收到得客戶機(jī)的位置,轉(zhuǎn)換成服務(wù)器的位置;如果要到達(dá)的位置不是盟友的話才繼續(xù);接下來如果要到達(dá)的位置上沒有棋子,則直接移動到目標(biāo)位置,并返回消息通知所有客戶機(jī);如果目標(biāo)位置上有棋子,判斷目標(biāo)位置上棋子的值,如果目標(biāo)位置上的棋子為炸彈或者選中棋子為炸彈或者目標(biāo)位置棋子和選中棋子相同,則兩個棋子同掉,如果目標(biāo)位置上的棋子小于選中位置上的棋子,則選中棋子吃掉目標(biāo)棋子,如果目標(biāo)位置上的棋子大于選中位置上的棋子,則選中棋子死掉;如果同掉或死掉的棋子是司令的話,則相應(yīng)玩家的軍旗翻出,如果是軍旗的話,則相應(yīng)玩家判為滅亡。如果所有同盟都福建農(nóng)林大學(xué)金山學(xué)院本科 畢業(yè)設(shè)計說明書 18 滅亡,那么勝負(fù)已分,就可判斷出贏家與輸家。當(dāng)然,所有比較結(jié)果都要通知所有客戶機(jī)。如圖 47所示 圖 47 棋子比較邏輯流程圖 福建農(nóng)林大學(xué)金山學(xué)院本科畢業(yè)設(shè)計說明書 19 5 系 統(tǒng)調(diào)試與測試 遇到的主要問題 消息發(fā)送時經(jīng)常收不到; 線程一直阻塞 ]15[ 著,結(jié)束程序后線程還是存在; 服務(wù)器關(guān)閉后,客戶機(jī)還是 保存著這個不存在的服務(wù)器; 解決問題的方法 關(guān)于消息收不到這個問題,我猜測可能是因?yàn)閮纱蜗l(fā)送的間隔太短,所以才會出現(xiàn)沒有發(fā)送出去的情況。解決方法是在每次發(fā)送消息前 Sleep 一下。果然,這樣子問題就解決了。 線程一直阻塞,可以確定是因?yàn)?recv 和 send 兩個函數(shù)都是阻塞函數(shù),導(dǎo)致了線程被阻塞。這里用的解決方法是使用 select 模型。 Select 模型可以判斷 Socket 是否可讀寫,如果可讀寫的話,再用 recv 或 send 去讀寫消息,這樣從理論上來講, recv 和 send因有數(shù)據(jù)可讀寫,是不會阻塞 住的,這樣問題就解決了。 服務(wù)器關(guān)閉后,客戶機(jī)還是保存著這個不存在的服務(wù)器,這個問題剛開始想了很久,不知道怎么解決,最后發(fā)現(xiàn)原來是那么簡單,只要在服務(wù)器關(guān)閉的時候發(fā)送一條廣播消息,告訴所有客戶機(jī),此服務(wù)器已關(guān)閉,客戶機(jī)再將其從 map 中刪除就可以。 福建農(nóng)林大學(xué)金山學(xué)院本科 畢業(yè)設(shè)計說明書 20 程序運(yùn)行情況 1) 大廳界面,如圖 51 圖 51 大廳界面 2) 游戲界面,如圖 52 圖 52 游戲界面 福建農(nóng)林大學(xué)金山學(xué)院本科畢業(yè)設(shè)計說明書 21 6 結(jié) 論 實(shí)現(xiàn)了一個局域網(wǎng)內(nèi)使用的四國軍棋游戲,能夠創(chuàng)建游戲、加入游戲和協(xié)同游戲,即實(shí)現(xiàn)了局域網(wǎng)內(nèi)聯(lián)機(jī)對戰(zhàn)的功能。采用了 Socket 編程技術(shù)和使 用了 GDI+圖形設(shè)備接口。應(yīng)用了雙緩沖技術(shù),有效解決了屏幕閃爍的問題。應(yīng)用矩陣變換的技術(shù)實(shí)現(xiàn)了不同方位的坐標(biāo)轉(zhuǎn)換。將游戲的仲裁權(quán)交給了服務(wù)器,由服務(wù)器比較棋子大小,一定程度上防止了作弊。 由于知識面以及時間上的原因,程序還是有些不足。比如沒有在大廳桌子的顯示中區(qū)分出不同的服務(wù)器,還有沒有游戲沒有對玩家的操作時間做出限制。這個我打算在接下來的時間里,學(xué)習(xí)相關(guān)只是,繼續(xù)將程序完善。還有模塊間的獨(dú)立性還有待改進(jìn)。 總的來說,程序基本實(shí)現(xiàn)了主要功能。 福建農(nóng)林大學(xué)金山學(xué)院本科 畢業(yè)設(shè)計說明書 22 參考文獻(xiàn) [1] .cs架構(gòu) [Z].2021428:15 [2] 202165. .四國軍棋游戲的設(shè)計與實(shí)現(xiàn) [Z]: 4 1213 [3] Bu. Windows Socket 編程 [Z]. 20210111: 114 [4] .GDI+[Z].2021428:815 [5] Charles Windows 程式開發(fā)設(shè)計指南 [M].余孟學(xué) .網(wǎng)絡(luò)譯文未出版 ,2021: 3640 [6] Z527516197. Udp廣播消息 [Z] .20211022:148 [7] 育龍網(wǎng) .基于 TCP協(xié)議的 socket編 程實(shí)例 [Z]. 20210130:2389 [8] ,百度百科 .雙緩沖技術(shù)繪圖 [Z].20210827:313 [9] 寧正元 .數(shù)據(jù)結(jié)構(gòu)與算法 [M].北京:清華出版社 ,2021:139142 [10] .深度優(yōu)先算法 [Z].2021427: 916 [11] 馬石安 ,魏文平 .面向?qū)ο蟪绦蛟O(shè)計教程 [M].北京:清華出版社 ,2021:141144 [12] [M].方敏 .北京:清華出版社 ,2021:6566 [13] .STL中 map用法詳解 [Z]. 20211231:1107 [14] ,龍 塘之戀 .VC中創(chuàng)建線程的方法 [Z]. 20211105:126 [15] 胡鳴 .Windows網(wǎng)絡(luò)編程技術(shù) [M].北京:科學(xué)出版社 ,2021:122131 福建農(nóng)林大學(xué)金山學(xué)院本科畢業(yè)設(shè)計說明書 23 致謝 在此,需要特別感謝指導(dǎo)老師、答辯老師對程序出現(xiàn)的問題、不足以及如何改進(jìn)提出了寶貴的意見。同時也要感謝新博網(wǎng)絡(luò)的諸位同事給予的幫助。要是沒有諸位的建議和幫助,我定會遇到更多的困難。在此再次表示感謝。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1