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

正文內(nèi)容

畢業(yè)設(shè)計(jì)---中國象棋網(wǎng)上對(duì)弈系統(tǒng)-畢業(yè)設(shè)計(jì)-資料下載頁

2025-01-19 04:53本頁面

【導(dǎo)讀】隨著信息技術(shù)的發(fā)展,人民生活水平的不斷提高。聯(lián)網(wǎng)游戲作為一種娛樂手段,正以。其獨(dú)特的魅力吸引著越來越多的玩家。為了滿足廣大象棋愛好者也可以享受到網(wǎng)絡(luò)所帶來。的便利,本設(shè)計(jì)在當(dāng)前局域網(wǎng)條件下實(shí)現(xiàn)了中國象棋的網(wǎng)絡(luò)對(duì)戰(zhàn)。它主要包含以下幾大模塊:網(wǎng)絡(luò)通信模塊,圖像繪制模塊和規(guī)則設(shè)置模塊。模塊實(shí)現(xiàn)棋盤更新以及棋子動(dòng)態(tài)表示等功能;規(guī)則設(shè)置模塊用于約束玩家的棋步。分析,設(shè)計(jì)成一套基于VC++平臺(tái)的棋牌類對(duì)戰(zhàn)系統(tǒng)。

  

【正文】 中,并用 itoa 函數(shù)將其轉(zhuǎn)換成 char 型的 CUpdateAllData 再通過 SendMsg 發(fā)送出去。 UpdateAllData 數(shù)據(jù)定義 :共 7 位,最高位固定為 1,其后依次是 i ,j, InfoArray[i][j], Prei, Prej。其中 InfoArray[i][j]為兩位數(shù),不足兩位十 位加 0(如紅方炮 InfoArray 代碼是 6,此處應(yīng)為 06)。( i, j),( Prei, Prej)表示終點(diǎn)和起始坐標(biāo),如“炮二平五”的代碼可表示為 1770647(紅方炮 ( InfoArray[Prei][Prej]=6) 從坐標(biāo) (7,7)走至 (4,7) )。 表 33 通信代碼一覽 代碼 含義 10000 邀請(qǐng)對(duì)方聯(lián)機(jī)而定義的專用代碼 10001 接受對(duì)方邀請(qǐng)而返回的專用代碼 10002 一方強(qiáng)行退出時(shí)發(fā)消息反饋通知另一方的專用代碼 1000101~ 1891679 著法的代碼范圍 其他 聊天信息 網(wǎng)絡(luò)通信類 — Cm(基于 winsock 類) Listen()函數(shù) 接收 數(shù)據(jù) SendMsg() 函數(shù)發(fā)送數(shù)據(jù) 華北電力大學(xué)科技學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 19 已 經(jīng)給出了發(fā)出邀請(qǐng)和接受邀請(qǐng)的代碼: 10000 和 10001。要與局域網(wǎng)內(nèi)其他機(jī)器通信,必須知道對(duì)方 IP 地址(或主機(jī)名),在窗口中加入一個(gè)編輯框用于接收用戶輸入的 IP地址(或主機(jī)名),除此之外還需要增加一個(gè)編輯框用于獲得與程序綁定的端口,用于傳輸數(shù)據(jù)(本程序默認(rèn)綁定的端口是: 5050)。 當(dāng)甲方向乙方發(fā)出邀請(qǐng)后,乙方收到信息并彈出對(duì)話框詢問用戶是否接受,如選擇接受,乙方將自動(dòng)保存甲方 IP 地址至變量 ClientAddr,同時(shí)返回 10001 給甲方并初始化棋盤等待甲方走棋,甲方收到 10001 將提示用戶對(duì)方已接受,并初 始化棋盤等待甲方走棋。 數(shù)據(jù)更新 在 WM_LBUTTONDOWN 消息響應(yīng)中,對(duì)于正確的行棋,將通過一個(gè) if 語句來判斷是否處于聯(lián)機(jī)狀態(tài)以決定是否發(fā)送著法數(shù)據(jù);成功聯(lián)機(jī) bool 型的變量 Online 將被賦值為true。 UpdateAllData 的值取法: UpdateAllData=1*1000000+i*100000+j*10000+InfoArray[Prei][Prej]*100+Prei*10+Prej; 將 UpdateAllData 用 itoa 轉(zhuǎn)換成 char 型的 CUpdateAllData 通 過 SendMsg 發(fā)送給對(duì)方。接受方根據(jù)對(duì)方發(fā)送數(shù)據(jù)的范圍判斷應(yīng)該執(zhí)行哪步操作(具體參見表 通信代碼一覽),對(duì)于 1000101~ 1891679 范圍的代碼(即著法代碼),通過下面語句與 i ,j, InfoArray[i][j], Prei, Prej 一一對(duì)應(yīng): i=(ibuf/100000)%(ibuf/1000000*10)。 j=(ibuf/10000)%(ibuf/100000*10)。 ijvalue=(ibuf/100)%(ibuf/10000*10)。 Prei=(ibuf/10)%(ibuf/100*10)。 Prej=ibuf%(ibuf/10*10)。 其中 ibuf=UpdateAllData, ijvalue= InfoArray[i][j], 簡單來說就是 UpdateAllData 取值的逆運(yùn)。下面的操作只需更改相關(guān) InfoArray 的值 ( InfoArray[i][j]=ijvalue。InfoArray[Prei][Prej]=0),并調(diào)用 InvalidateRect 函數(shù)來刷新視圖即可。 聊天功能 在平臺(tái)中加入聊天功能可增加雙方對(duì)弈時(shí)的樂趣,而且本身實(shí)現(xiàn)起來并不難。信息收發(fā)和著法數(shù) 據(jù)的收發(fā)較為類似。 首先,在窗口中加入兩個(gè)編輯框分別用來顯示接收的聊天信息和輸入發(fā)送的信息,再添加一個(gè)發(fā)送按鈕,并通過此按鈕完成信息發(fā)送。在該按鈕的消息響應(yīng)中通過 CComm 類的 SendMsg 函數(shù)完成聊天信息的發(fā)送,這里跟棋步通信類似 。接收信息處理起來也比較簡單, 可以在聊天信息前加如特定代碼,接收方驗(yàn)證到特定代碼后直接在編輯框顯示即可。 華北電力大學(xué)科技學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 20 棋子操作 獲取點(diǎn)擊 用戶的操作主要通過點(diǎn)擊鼠標(biāo)的消息響應(yīng)來完成的。 消息,就是指 Windows發(fā)出的一個(gè)通知,告訴應(yīng)用程序某個(gè)事情發(fā)生了。例如,單擊鼠標(biāo)、改變窗 口尺寸、按下鍵盤上的一個(gè)鍵都會(huì)使 Windows發(fā)送一個(gè)消息給應(yīng)用程序。消息本身是作為一個(gè)記錄傳遞給應(yīng)用程序的,這個(gè)記錄中包含了消息的類型以及其他信息。 這里在 Windows消息響應(yīng)中添加鼠標(biāo)左鍵消息 — WM_LBUTTONDOWN。當(dāng)用戶點(diǎn)擊左鍵時(shí),調(diào)用 GetCursorPos()函數(shù)獲得點(diǎn)擊點(diǎn)的坐標(biāo)信息,并將屏幕坐標(biāo)轉(zhuǎn)換至窗口坐標(biāo)(即用屏幕坐標(biāo)減去窗口的左上角坐標(biāo)),再根據(jù)棋盤范圍決定是否響應(yīng)此次點(diǎn)擊(通過 if()語句來判斷 , 條件為點(diǎn)擊點(diǎn)在棋盤內(nèi))。對(duì)于有效的點(diǎn)擊,我們不妨先將其轉(zhuǎn)換成 xArray[i][j]和 yArray[i][j]的形式: 設(shè)窗口左上角坐標(biāo)為 ( a,b) , GetCursorPos()函數(shù)獲得的屏幕坐標(biāo)為 ( x,y) ,以 (a,b)為原點(diǎn)坐標(biāo),則 ( xa,yb) 即為點(diǎn)擊點(diǎn)在窗口中的坐標(biāo),設(shè)棋盤底格位圖在窗口中以坐標(biāo) ( c,d)為左上角輸出,則點(diǎn)擊點(diǎn)在以 ( c,d) 為坐標(biāo)原點(diǎn)的坐標(biāo)系中的坐標(biāo)為 ( xac,ybd) ,設(shè)為( X, Y) 。轉(zhuǎn)換成 Array[i][j]形式只需把 X、 Y分別除以 50( 50是格點(diǎn)間距),即 i=X/50,j=Y/50,這樣再通過判斷 InfoArray[i][j]的值就可以知道用 戶的操作了。需要說明的是,有時(shí)候用戶即 使是 在棋盤范圍內(nèi)點(diǎn)擊,若用戶 點(diǎn)擊點(diǎn)在兩顆棋子之間 ,需要做進(jìn)一步的判斷:( Xi*50) 35時(shí),橫坐標(biāo)點(diǎn)更新為 i+1;( Xi*50) 15時(shí)橫坐標(biāo)點(diǎn)還為 i;其他情況為無效點(diǎn)擊。( Yj*50) 35時(shí),縱坐標(biāo)點(diǎn)更新為 j+1;( Yj*50) 15時(shí)縱坐標(biāo)點(diǎn)還為 j;其他情況為無效點(diǎn)擊。 這樣只有點(diǎn)在以棋子中心為圓心半徑小于 15象素的情況下才視為有效點(diǎn)擊,極大的方便了使用者(靜態(tài)棋子半徑為 23象素)。 華北電力大學(xué)科技學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 21 圖 35 操作響應(yīng) 走 棋判斷 一次完整的操作需要兩組坐標(biāo)信息,這里引入 Prei和 Prej用來保存前次操作坐標(biāo)。這樣著法“炮二平五”對(duì)應(yīng)的操作為點(diǎn)擊 (xArray[7][7], yArray[7][7]), 賦值 Prei=7, Prej=7, 再次點(diǎn)擊 (xArray[4][7], yArray[4][7]),并給 i,j賦值 i=4, j=7, InfoArray信息改變{InfoArray[Prei][ Prej]=0; InfoArray[i][j]=6}。 這里有兩個(gè)比較重要的變量: RedOrBlack— 其值為 0表示紅方出棋,此時(shí)如果點(diǎn)擊黑子,會(huì)忽略操作。值為 1則黑方出棋。 GetChessman— 其值為 0表示未拿起棋子,此時(shí)如果點(diǎn)擊正確的棋子(即 InfoArray[i][j]不等于 0,且黑紅與 RedOrBlack一致), 其值變?yōu)?1,表示已拿起棋子,等待下一步操作。操作是否可行,還需要 通過 Case語句選擇該棋子的規(guī)則來約束。 光標(biāo)變化 用戶選中棋子除了動(dòng)態(tài)顯示,光標(biāo)的改變也是比較人性化的設(shè)計(jì)。 圖 36 光標(biāo)變換 開始 WM_LBUTTONDOWN 消息響應(yīng) 獲得點(diǎn)擊點(diǎn)坐標(biāo)并轉(zhuǎn)換至窗口坐標(biāo) 有效點(diǎn)擊保存坐標(biāo)信息到 Prei, Prej 中 再次點(diǎn)擊有效坐標(biāo)保存在 i,j 中 判斷走的位置是否符合規(guī)則 規(guī)則正確更新 InfoArray 數(shù)組信息 調(diào)用 InvalidateRect(hWnd,NULL,1)更新視圖 華北電力大學(xué)科技學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 22 當(dāng)棋子被選中時(shí),光標(biāo)改變成手形,而放下棋子光標(biāo)恢復(fù)默認(rèn),函數(shù) SetCursor可以幫助我們實(shí)現(xiàn)這個(gè)功能,首先需要從 WINDOWS下的 Cursors文件夾(該文件夾下包含豐富的光標(biāo)資源)復(fù)制出 VC++中將其定義名為“ HAND”的光標(biāo)資源。當(dāng)用戶拿起棋子時(shí),通過下面代碼實(shí)現(xiàn)光標(biāo)改變: SetCapture(hWnd)。 HCURSOR hcursor。 hcursor=LoadCursor(hInst,HAND)。 SetCursor(hcursor)。 當(dāng)操作完畢時(shí),調(diào) 用 ReleaseCapture()恢復(fù)默認(rèn)光標(biāo) 。 華北電力大學(xué)科技學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 23 4 總結(jié)與展望 總結(jié) 本文 順序說明了中國象棋網(wǎng)上對(duì)弈系統(tǒng) 的 設(shè)計(jì)原理與實(shí)現(xiàn)方法,重點(diǎn)講解了 數(shù)據(jù)結(jié)構(gòu)和部分算法 。經(jīng)過一段時(shí)間的測試和除錯(cuò), 本系統(tǒng) 已經(jīng)比較完善,能滿足用戶的一般娛樂需求。 中國象棋在棋牌類游戲中非常經(jīng)典,它對(duì)于如何走棋的判斷、對(duì)蹩腳馬和塞眼象的判斷,這些算法的設(shè)計(jì)比較復(fù)雜。網(wǎng)絡(luò)通信方面 的數(shù)據(jù) 傳輸和識(shí)別 ,視圖的更新和重繪都是本系統(tǒng)設(shè)計(jì)的重點(diǎn)。 在當(dāng)今電腦網(wǎng)絡(luò)密布的世界當(dāng)中,一個(gè)簡單高效的局域網(wǎng)游戲工具是如此的具有實(shí)用性,所以我們應(yīng)當(dāng)重視對(duì)它的相關(guān)研究與開發(fā)。在本次的畢 業(yè)設(shè)計(jì)中,我應(yīng)用了 VC++開發(fā)工具在 WINDOWS平臺(tái)上開發(fā)了一個(gè)基于 WINDOWS平臺(tái)的中國象棋網(wǎng)上對(duì)弈系統(tǒng),在這一重要的領(lǐng)域進(jìn)行了相關(guān)的實(shí)踐,不管是對(duì)我的研究能力,還是實(shí)際動(dòng)手能力,還是資料查閱能力,都起了相當(dāng)大的益處。所以,我決定認(rèn)真總結(jié)這次畢業(yè)設(shè)計(jì)的經(jīng)驗(yàn),以及學(xué)習(xí)到的知識(shí),來更加的充實(shí)自己的頭腦和完善自己的知識(shí)結(jié)構(gòu)。 通過本系統(tǒng)的設(shè)計(jì)使自己對(duì)數(shù)據(jù)結(jié)構(gòu)有了更深入的了解, 充分認(rèn)識(shí)到了 VC++的高效的開發(fā)能力,以及 WINDOWS 平臺(tái)一如既往的易用性。它的那些完善的編程接口,的確大大方便了開發(fā) 人員的工作,當(dāng)然也使得它這個(gè)系統(tǒng)本身的推廣更加的簡單。 展望 本系統(tǒng)基本實(shí)現(xiàn)了中國象棋網(wǎng)上對(duì)弈的基本功能,目前,一套完善的網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)大都基于 C/S(即客戶機(jī) /服務(wù)器)模型,包含客戶端和服務(wù)端軟件。 基于本程序可開發(fā)出一套完整的網(wǎng)絡(luò)象棋對(duì)戰(zhàn)系統(tǒng)。而關(guān)鍵就在于服務(wù)端的開發(fā),利用 Winsock 面向連接協(xié)議的 SOCKET 編程模型可輕易實(shí)現(xiàn)。暫時(shí)將其命名為 ChessServer,在網(wǎng)絡(luò)中選擇一臺(tái)機(jī)器運(yùn)行 ChessServer 作為象棋游戲的服務(wù)器,網(wǎng)內(nèi)機(jī)器運(yùn)行ChessClient(客戶端)并與服務(wù)器連接 ,服務(wù)端根據(jù)客戶選擇或自動(dòng)匹配為客戶尋找對(duì)手,并單獨(dú)創(chuàng)建一個(gè)新的進(jìn)程負(fù)責(zé)雙方信息的轉(zhuǎn)發(fā),對(duì)于客戶資料(用戶名,密碼等)可用數(shù)據(jù)庫來保存,如微軟的 SQL Server 系列。 華北電力大學(xué)科技學(xué)院本科畢業(yè)設(shè)計(jì)(論文) 24 參考文獻(xiàn) [1] 周升鋒 .Visual C++ Windows 程序設(shè)計(jì) [M].西安 :西安交通大學(xué)出版社 ,1996. [2] 蘇羽 ,王嬡嬡 .Visual C++網(wǎng)絡(luò)游戲建模與實(shí)現(xiàn) [M].北京 :北京科海電子出版社 ,2021. [3] 葛垚 .Visual C++ MFC 棋牌類游戲編程實(shí)例 [M].北京 :人民郵電出版社 ,2021. [4] 網(wǎng)冠科技 .Visual C++.NET 小游戲開發(fā)時(shí)尚編程百例 [M].北京 :機(jī)械工業(yè)出版社 ,2021. [5] 陳建春 .Visual C++ 高級(jí)編程技術(shù) 開發(fā)實(shí)例剖析 [M].北京 :電子工業(yè)出版社 ,1999. [6] 涂光平 .Visual C++.NET 基礎(chǔ)教程與上機(jī)指導(dǎo) [M].北京 :清華大學(xué)出版社 ,2021. [7] 伍紅兵 .Visual C++ 編程深入引導(dǎo) [M].北京 :中國水利水電出版社 ,2021. [8] 劉海英 .Visual C++網(wǎng)絡(luò)通信編程 [M].北京 :人民郵電出版社 ,2021. [9] 胡峪 ,劉靜 .VC++高級(jí)編程技巧與實(shí)例 [M].西安 :西安電子科技大學(xué)出版社 ,2021. [10] 源江科技 .VC 編程技巧 280 例 [M].上海 :上??茖W(xué)普及出版社 , [11] 張恒博 .VB 在網(wǎng)絡(luò)中的一種應(yīng)用 —雙人象棋 [J].大連民族學(xué)院學(xué)報(bào) ,2021.(4).. [12] 謝志鵬 .帶大廳的網(wǎng)絡(luò)象棋游戲設(shè)計(jì)和實(shí)現(xiàn) [J].華僑大學(xué)學(xué)報(bào) ,2021.(9). [12] 王華 .局域網(wǎng)常用技術(shù) [M].北京 :機(jī)械工業(yè)出版社 ,. [13] 汪曉平 . 網(wǎng)絡(luò)通信協(xié)議分析及應(yīng)用實(shí)現(xiàn) [M].北京 :人民郵電出版社 , [14] 黃強(qiáng) .WINDOWS 網(wǎng)絡(luò)編程 [M].北京 :人民郵電出版社 , [15] Anthony Ohlund,Windows 網(wǎng)絡(luò)編程 [M].北京 :清華大學(xué)出版社 , [16] James P. Cohoon, Jack W. ++ program design[M].Boston:McGrawHill, 2021. [17] Walte
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1