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

正文內容

網絡中國象棋設計-本科畢業(yè)論(編輯修改稿)

2024-07-13 03:15 本頁面
 

【文章內容簡介】 主要問題和關鍵技術 主要問題 這個課題的最終目標就是完成一個具有網絡對戰(zhàn)功能的中國象棋游戲軟件,并要求其界面要美觀友好,交互性強,操作簡單。為了完成這一任務,需要解決以下主要問題: 第一,要了解中國象棋的規(guī)則,知道怎么下象棋,象棋的每種棋子走法,怎么判斷輸贏,知道了這些才會知道該去做什么以及該怎么去做; 第二,數據要存儲為哪種格式,怎么交換數據,怎么通過網絡傳遞數據,這是整個設計的基礎; 第三,怎么 進行交互,兩個人怎么通過網絡可以協(xié)調的玩游戲; 電子科技大學學士學位論文 4 第四,悔棋、認輸、言和、交換、棋譜、復盤等功能要如何處理,如何處理它們之間的關系,這些都需要清晰的數據結構和程序邏輯; 第五,人機對戰(zhàn)要如何實現,機器 AI(人工智能)要怎么做,如何協(xié)調它與網絡對戰(zhàn)之間的關系等。 關鍵技術 ( 1)編程語言采用 C++語言。一方面 C++語言是自己熟悉的編程語言,另一方面 C++語言也適合這個課題,因其面向對象的思想和封裝的特點正是本課題所需要的。 ( 2)圖形界面采用 Qt 編寫。 Qt 是一個跨平臺的圖形界面開發(fā)庫,支持Windows、 Linux、 Mac OS 等許多的操作系統(tǒng)。 Qt以 GPL、 LGPL和商業(yè)協(xié)議三種協(xié)議同時授權,正是由于這種開放性, Qt 不斷發(fā)展壯大,功能越來越多,支持的操作系統(tǒng)也越來越多,特別是加大了對嵌入式平臺的支持,現在已經支持 Windows CE、 Symbian、 Maemo 5 等平臺,并且在將在今年發(fā)布的 Qt 5 中添加對 IOS 和Android 平臺的預覽支持 [4]。 ( 3)網絡通信采用 TCP 協(xié)議。因為要實現網絡對戰(zhàn)功能,所以必須要通過網絡傳遞和交換數據。對于本課題而言,傳送的數據量少,并對可靠性有要求,因而選擇 TCP 協(xié)議比較合適。 ( 4)通信采用網絡連接的通信方式。鑒于網絡對戰(zhàn)只需兩方進行通信,故雙方直接進行通信,一方建立服務器,另一方進行連接即可,不需要額外的資源。 開發(fā)平臺和工具 ( 1)操作系統(tǒng): Windows 7, 32 位。 ( 2)編譯器: Microsoft Visual Studio 2021。 ( 3)開發(fā)工具: Qt Creator 。 ( 4)運行環(huán)境: Windows XP 以及更高版本 Windows。 第二章 需求分析 5 第二章 需求分析 . 總體功能劃分 系統(tǒng)的功能劃分如圖 21 所示。 圖 21 系統(tǒng)功能劃分 系統(tǒng)提示功能 這個功能用于在界面上顯示一些系統(tǒng)提示信息,用于提示用戶。這些提示信息包括一下幾個方面。 ( 1) 剛進入游戲時系統(tǒng)的歡迎信息; ( 2) 認輸、悔棋、言和、交換等提示信息; ( 3) 贏、輸、和的提示信息; ( 4) 網絡連接狀態(tài)的提示信息; ( 5) 聊天信息發(fā)送失敗的提示信息。 這些提示信息可以方便用戶了解當前的一些狀況,使用戶可以容易地判斷和處理相關問題。 電子科技大學學士學位論文 6 網絡連接功能 有了網絡連接功能,才能進行網絡對戰(zhàn)。 對戰(zhàn)雙方可以通過網絡進行連接,這是實現網絡對戰(zhàn)的基礎。當用戶想要進行網絡對戰(zhàn)時,只要一方建立服務 器,另一方進行連接,由此雙方之間可以進行通信,交換數據。詳細的功能描述如下所示: ( 1) 一方進入游戲,選擇服務器模式,輸入可用的端口號,然后點擊確定,就會在這個輸入的端口號上監(jiān)聽連接,等待客戶端的連接。此時應該把自己的 IP 地址和端口號告之另一方,好讓對方進行連接。 ( 2) 另一方進入游戲,選擇客戶端模式,然后輸入服務器的 IP 地址和端口號,然后點擊確定,雙方建立連接。 ( 3) 建立連接后,雙方都點擊開始,就開始游戲了。 ( 4) 如果連接失敗或者連接中斷,就關閉程序并重啟,檢測 IP 地址和端口號是否有誤,再次進行連接。 聊天功能 因為 能進行網絡對戰(zhàn),雙方可以通過網絡下中國象棋,如果不能進行交流,相互傳遞信息,遇到了問題或其它一些情況就無法告訴對方。所以,聊天功能也是十分重要的。因為上面已經說了是網絡連接的通信,聊天信息可以直接發(fā)送給對方而不用經過中間服務器的中轉。另外,當只有選擇網絡對戰(zhàn)時才有聊天功能。因為復盤和人機對戰(zhàn)都是在本地進行,只有自己一個人,自己不需和自己聊天,也就不需要聊天功能了。關于聊天功能的詳細描述如下所示: ( 1) 一方在聊天框里輸入要發(fā)送的信息,然后點擊發(fā)送。如果網絡連接正常,另一方應該收到聊天信息并顯示在聊天框里面。 ( 2) 對于 另一方來說,同樣的道理。 ( 3) 如果網絡連接有問題,在點擊發(fā)送后,系統(tǒng)會提示發(fā)送聊天信息失敗。 ( 4) 因為中國象棋分紅黑雙方,故在此設定紅方發(fā)送的聊天信息字體顏色是紅色,相對的,黑方發(fā)送的聊天信息的字體顏色是黑色,這樣便能很好的區(qū)分是誰發(fā)的聊天信息了。另外,在顯示聊天信息的時候,在最前面加上當前時間,這樣便知道是什么時候收到的信息。 第二章 需求分析 7 游戲控制 對于中國象棋來說,一些功能是眾所周知也是必須的,比如悔棋、認輸、言和等。對于本系統(tǒng)來說,有新建、開始、悔棋、認輸、言和、交換、保存、檢測、退出。下面就詳細說明一下這些功 能。 新建。當在一盤棋結束的時候或者在下棋的過程中,一方可以請求新建棋局的請求,只要另一方同意,即可開始新一盤棋局。具體描述如下: ( 1) 一方請求新建棋局,另一方同意,則開始新棋局。 ( 2) 一方請求新建棋局,另一方拒絕,則維持當前狀態(tài)不變。 開始。當剛進入游戲或者新建棋局時,需要雙方都要點擊開始,一盤棋局才會開始。具體描述如下: ( 1) 剛進入游戲時,需要用戶點擊開始,以表明自己已經準備就緒。當雙方都準備就緒時才能開始下棋。 ( 2) 新建棋局時,道理同上,需要用戶點擊開始,以表明自己已經準備就緒。當雙方都準備就緒時才能開始下棋 。 悔棋。俗話說“落子無悔”,但在這里還是提供了悔棋的功能,方便用戶的學習和交流。關于悔棋功能的具體描述如下: ( 1) 一方申請悔棋,另一方同意,則悔棋成功,棋子回到原位。 ( 2) 一方申請悔棋,另一方不同意,則悔棋失敗,維持當前狀態(tài)不變。 認輸。當用戶棋子無路可走或者已經明顯是輸的情況下可以認輸,結束棋局,然后可以新建重新開始。認輸不需經過對方同意,只要一方認輸,即可結束棋局。 言和。當雙方誰也無法獲得勝利的時候可以言和。具體描述如下: ( 1) 一方申請言和,另一方同意,則言和成功,雙方和棋。 ( 2) 一方申請言和,另一方不 同意,則言和失敗,維持當前狀態(tài)不變。 交換。按照中國象棋的規(guī)則,紅方先走,黑方后走。而交換功能可以讓上方交換紅黑,自由地選擇先走或者后走。交換只能發(fā)生在雙方都開始之前,若棋局已經開始就不能交換了。具體描述如下: ( 1) 一方申請交換,另一方同意,則雙方交換紅黑成功。 ( 2) 一方申請交換,另一方不同意,則雙方交換紅黑失敗。 電子科技大學學士學位論文 8 檢測。檢測網絡連接是否正常,是否能和對方通信。當對一段時間內無動作時,可以點擊檢測,看網絡是否通暢。若檢測請求發(fā)送失敗或者對方無響應都表明網絡連接出現問題。 保存。把當前的棋局保存為棋譜,以 供閱讀(文本文件棋譜)和復盤(二進制文件棋譜)。關于棋譜的介紹請看后面的章節(jié) 。 棋譜 棋譜介紹 中國象棋棋譜,就是把一盤棋中走的每一步棋記錄下來保存。 由于棋盤有 9 條縱線,對于紅方來說用漢字“一”到“九”表示,對于黑方來說用阿拉伯數字“ 1”至“ 9”表示,以此來區(qū)分紅方和黑方。棋譜中的每一步都有四個字組成,詳細情況如下: ( 1) 第一個字一般是棋子的名字,如“炮”、“馬”等。 ( 2) 第二個字一般是棋子所在的縱線,紅方用漢字表示,黑方用阿拉伯數字表示。 ( 3) 第三個字是“平”、“進”和“退”中的一個,表示 棋子的移動方向。 ( 4) 第四個字視情況而定。棋子若是平移或是走斜線,則這個字就是棋子落點所在的縱線。棋子若是沿直線進或退,則這個字就是進或退的步數。 ( 5) 上面說前兩個字的時候都加以一般兩字,說明還有特殊情況。比如紅方兩個炮都在縱線五上,此時用“炮五”就無法明確到底的哪個棋子要移動,按照標準,此時應該用“前炮”或者“后炮”表示。對于一種棋子有兩個的棋子來說,都可以用“前”和“后”加以區(qū)分,但對于兵或卒來說,各有 5 個棋子,“前”和“后”就無法表示了,此時可以用“前”、“中前”、“中”,“中后”和“后”表示,若只一個字就再補上兵或卒所在的縱線即可。 文本文件棋譜 文本棋譜就是按照上面所說的記錄方法,把一盤棋的每一步都以文本字符的形式保存在文件中。文本形式的棋譜文件可以使用戶很方便的閱讀。 第二章 需求分析 9 二進制文件棋譜 文本文件棋譜雖然方便了人的閱讀,但電腦識別起來就比較困難。因此把每一步所走的信息以二進制數據的形式保存在二進制文件中,就可以方便電腦識別,以實現復盤功能,復盤功能請見章節(jié) 。 復盤 復盤功能就是用程序打開棋譜文件,就能在界面上一步步展示出所記錄的棋子走法,就相當于回放整個對弈過程。 人機對戰(zhàn) 此處人機對戰(zhàn)就是指人和電腦可以下象棋。 怎么讓去電腦 “思考 ”該怎么走,這是一個難題。電子科技大學學士學位論文 10 第三章 概要設計 中國象棋的模塊設計 根據系統(tǒng)的功能需求和實際情況,系統(tǒng)的模塊劃分如圖 31 所示。 圖 31 網絡中國象棋模塊劃分 其中左下角的界面模塊還可以劃分為 5 個小模塊,如圖 32 所示。 圖 32 界面模塊子模塊劃分 第三章 概要設計 11 其實,除了圖 31 所示的那些模塊外,還有一個象棋信息模塊,它負責維護下棋類型、棋子顏色、 IP 地址和端口號這些信息,供各個模塊使用。 下面先簡要說一下各模塊的功能: ( 1) 數據模 塊( ChessData),存儲并維護棋子的狀態(tài)和位置信息。 ( 2) 規(guī)則模塊( ChessRule),判斷是否合乎中國象棋規(guī)則。 ( 3) 界面模塊( ChineseChess),整個所看到的界面。 ①棋盤模塊( ChessWidget),負責繪制棋盤和棋子。 ②聊天模塊( ChatWidget),負責輸入和顯示聊天信息。 ③功能按鈕模塊( PushButtonWidget),顯示開始、悔棋等功能按鈕。 ④顯示棋譜模塊( ManualWIdget),負責顯示棋譜。 ⑤提示信息模塊( TipsWidget),負責顯示系統(tǒng)提示信息。 ( 4) 棋譜模塊( ChessManual),負責記錄、打開、保存棋譜。 ( 5) 音效模塊( ChessSound),負責播放音效。 ( 6) 調度中心模塊( ChessManage),這是核心模塊,是整個程序的邏輯控制和處理中心,游戲控制的功能在此實現。 ( 7) 信息轉發(fā)模塊( ChessDispatch),信息中轉站,統(tǒng)一各方的接口,使調度中心模塊只需寫一套接口就可以與各方通信。 ( 8) 復盤模塊( ChessReplay),負責復盤。 ( 9) 服務器模塊( ChessServer),建立服務器。 ( 10) 客戶端模塊( ChessClient),建立客戶端。 ( 11) 計算機接口模 塊( ChessComputer),負責連接信息轉發(fā)模塊和計算機模塊,處理一些簡單的請求。 ( 12) 計算機模塊( Computer),通過計算得出電腦該怎么走棋。 圖 31 中各模塊之間關系用數字順序標注,下面簡要說明各個模塊之間的關系。 ( 1) 數據模塊和調度中心模塊之間的關系:調度中心模塊負責修改數據模塊中的數據。如圖 33 所示。 圖 33 數據模塊和調度中心模塊關系圖 電子科技大學學士學位論文 12 ( 2) 調度中心模塊和規(guī)則模塊之間的關系:調度中心模塊向規(guī)則模塊發(fā)送一條走棋信息,將會從規(guī)則模塊得到這步走棋是否合乎規(guī)則的判斷結果。如圖 34 所示。 圖 34 調度中心模塊和規(guī)則模塊關系圖 ( 3) 規(guī)則模塊和數據模塊之間的關系:規(guī)則模塊在判斷規(guī)則的時候需要從數據模塊獲取數據。如圖 35 所示。 圖 35 規(guī)則模塊和數據模塊關系圖 ( 4) 界面模塊和數據模塊之間的關系:界面模塊中的棋盤模塊需要從數據模塊中獲取數據來繪制棋盤和棋子。如圖 36 所示。 圖 36 界面模塊和數據模塊關系圖 ( 5) 界面模塊和調度中心模塊之間的關系:界面模塊中的棋盤模塊和功能按鈕模塊把得到的鼠標按鍵信息發(fā)送給調度中心模塊;界面模塊中的聊天模塊把用戶輸入的聊天信息發(fā)送給調度中心模塊;調度中心模塊把從外面接收 到的聊天信息發(fā)送給界面模塊中聊天模塊;調度中心把接收到的提示信息發(fā)送給界面模塊中的提示信息模塊;調度中心模塊把接收到的一些操作信息發(fā)送給界面模塊中的功能按鈕模塊,讓其彈出相應的對話框。如圖 37 所示。 第三章 概要設計 13 ( 6) 界面模塊和棋譜模塊之間的關系:界面模塊中的顯示棋譜模塊
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1