




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單機版五子棋UML設(shè)計鄭州大學信息工程學院姓名學號易曉沛(組長)20137670344吳家貝20137670340崔云開20137670407楊照方20137670343李慶仁2013767孫迎春20137670332陳仟仟201376703041.需求分析1.1項目背景五子棋是一種兩人對弈的純策略型漢族棋類益智游戲,棋具與圍棋通用,由中國漢族人發(fā)明,起源于中國上古時代的傳統(tǒng)黑白棋種之一。主要流行于華人和漢字文化圈的國家以及歐美一些地區(qū)。規(guī)則為雙方交替落子,直到有一方下出五子連續(xù),五子連珠為贏。容易上手,老少皆宜,而且趣味橫生,引人入勝;不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)
2、性。1.2項目技術(shù)支撐使用UML語言進行需求分析設(shè)計;在Visual Studio 2010集成開發(fā)環(huán)境下用C+語言及.NET架構(gòu)編寫軟件。1.2.1 UML簡介Unified Modeling Language (UML)又稱統(tǒng)一建模語言或標準建模語言,是始于1997年一個OMG標準,它是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為軟件開發(fā)的所有階段提供模型化和可視化支持,包括由需求分析到規(guī)格,到構(gòu)造和配置。 面向?qū)ο蟮姆治雠c設(shè)計(OOA&D,OOAD)方法的發(fā)展在80年代末至90年代中出現(xiàn)了一個高潮,UML是這個高潮的產(chǎn)物。它不僅統(tǒng)一了Booch、Rumbaugh和Jacobson
3、的表示方法,而且對其作了進一步的發(fā)展,并最終統(tǒng)一為大眾所接受的標準建模語言。Grady Booch的描述對象集合和它們之間的關(guān)系的方法。James Rumbaugh的對象建模技術(shù)(OMT)。Ivar Jacobson的包括用例方法的方式。還有其他一些想法也對UML起到了作用,UML是Booch, Rumbaugh, Jacobson。UML已經(jīng)被對象管理組織(OMG)接受為標準,這個組織還制定了通用對象請求代理體系結(jié)構(gòu)(CORBA),是分布式對象編程行業(yè)的領(lǐng)頭羊。計算機輔助軟件工程(CASE)產(chǎn)品的供應(yīng)商也支持UML,并且它基本上已經(jīng)被所有的軟件開發(fā)產(chǎn)品制造商所認可,這其中包括IBM和微軟(用
4、于它的VB環(huán)境)。UML規(guī)范用來描述建模的概念有,類(對象的)、對象、關(guān)聯(lián)、職責、行為、接口、用例、包、順序、協(xié)作,以及狀態(tài)。 C+簡介C+是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,面向?qū)ο蟮木幊陶Z言。它在繼承C強大功能的同時去掉了一些它們的復(fù)雜特性。C+綜合了VB簡單的可視化操作、高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。1 C+是面向?qū)ο蟮木幊陶Z言。它使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應(yīng)用程序,MICROSOFT .NET提供了一系列的工具和服務(wù)來最大程度地開發(fā)利用計算與通訊領(lǐng)域
5、。2系統(tǒng)概要分析2.1 基本設(shè)計概念本軟件采用面向?qū)ο蟮脑O(shè)計方案,通過把對弈接口組件化,來實現(xiàn)界面設(shè)計與算法設(shè)計的完全分離。 游戲程序界面對弈接口組件搜索算法引擎估值算法核心游戲界面只與對弈接口進行相互通訊,與使用的博弈算法無關(guān)。搜索算法引擎通過遞歸調(diào)用估值算法核心來找出最佳落子點。對弈接口組件將具體的博弈算法封裝成可以與界面交互的接口。圖1 總體處理流程圖 2.1.1類模塊結(jié)構(gòu)表1 類模塊列表類標識符類名功能TGobangForm五子棋主程序窗體類它是程序界面設(shè)計部分的實現(xiàn),它主要負責界面的繪制,而真正的人機對弈操作委托GobangAI來完成。TGobangAI五子棋對弈接口類它定義了完成人
6、機對弈的操作接口,這樣主窗體類可以通過這些操作接口來完成人機對弈的過程。而實際這些操作的實現(xiàn)是通過橋接的方式委托搜索引擎SearchEngine來完成的。TBestMove最佳走法的線程類它是通過委托TGobangAI實例中的SearchEngine對象的GetBestMove操作來找出當前電腦的最佳走法。而它本身卻是在TGobangAI中被實例化并被調(diào)用的。TSearchEngine搜索引擎類在它當中定義了搜索算法所需要的數(shù)據(jù)結(jié)構(gòu)和操作,而搜索算法中的核心操作是委托估值核心Evaluator來完成的。TEvaluator估值核心類在它當中定義了估值核心所需要的數(shù)據(jù)結(jié)構(gòu)和操作,并實現(xiàn)了估值核心
7、。表2 各個類中的屬性和操作列表屬性操作標識符所屬類功能BoardTGobangAI返回指定位置落子狀態(tài),委托SearchEngine實現(xiàn)MoveTGobangAI返回所指定的步數(shù)的走法,委托SearchEngine實現(xiàn)ScoreTGobangAI返回所指定步數(shù)的走法得分,委托SearchEngine實現(xiàn)CurMoveTGobangAI返回當前走法索引,委托SearchEngine實現(xiàn)StoneColorTGobangAI設(shè)定或返回電腦的棋色LevelTGobangAI設(shè)定或返回電腦的棋力水平值IsStartTGobangAI返回游戲是否開始AddStoneTGobangAI玩家下子,如果玩家
8、未贏,則緊跟著電腦下子GiveUpTGobangAI玩家認輸GoBackTGobangAI玩家悔棋,棋局退回到玩家下最后一顆子之前的狀態(tài)StartTGobangAI開始游戲,開局后,棋色和棋力屬性將不能再改變StopTGobangAI結(jié)束游戲,游戲結(jié)束后,棋色和棋力屬性可以改變BoardTSearchEngine返回或設(shè)定指定位置落子狀態(tài),委托Evaluator實現(xiàn)MoveTSearchEngine返回所指定的步數(shù)的走法ScoreTSearchEngine返回所指定的步數(shù)的走法得分CurMoveTSearchEngine返回當前走法索引WinnerTSearchEngine返回獲勝者IsGam
9、eOverTSearchEngine返回游戲是否結(jié)束GetBestMoveTSearchEngine返回最佳走法BoardTEvaluator返回或設(shè)定指定位置落子狀態(tài)IsDrawTEvaluator返回是否平局GetScoreTEvaluator返回棋局估值上面所列出的屬性和操作僅為public的屬性和操作,private的變量、屬性和操作這里沒有給出定義,它們將在接口設(shè)計和系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計中進行討論。另外TGobangAI是一個組件類,其中定義了三個比較特殊的事件屬性,通過這三個事件,可以使界面設(shè)計更加靈活方便,這三個事件的功能在下表中給出:表3 TGobangAI組件中的事件定義列表事件
10、描述OnGameStart游戲開始事件OnChange游戲中棋盤狀態(tài)改變所觸發(fā)的事件OnGameOver游戲結(jié)束事件2.1.2 功能需求與程序的關(guān)系TGobangFormTGobangAITSearchEngineTEvaluator界面界面算法接口算法2.1.3 尚未解決的問題因為博弈算法中搜索引擎的改進是影響整個游戲智能化程度的關(guān)鍵,但是搜索算法有很多,現(xiàn)在還不能確定哪種搜索算法更適合于本游戲,這些算法的測試將在詳細設(shè)計和編碼調(diào)試時再進行。2.2 接口設(shè)計2.2.1 用戶接口用戶的所有操作全部通過鼠標或者熱鍵來完成。開始游戲、悔棋、認輸和結(jié)束游戲這些操作通過點擊按鈕、右鍵菜單或使用熱鍵來完
11、成。棋色和水平選擇通過點擊單選框或右鍵菜單來完成。游戲中棋子狀態(tài)將直接反映在棋盤上,其他反饋信息(比如棋盤當前局面、走棋時間、棋譜等信息)將在單獨的反饋信息欄中顯示。2.2.2 外部接口本程序與其他比賽程序通過裁判程序(有比賽裁判委員會給出)來進行相互通訊,棋盤上落子通過鼠標事件的觸發(fā)來完成,裁判程序?qū)⒛M這一鼠標事件。裁判程序?qū)ζ灞P狀態(tài)的獲取將直接根據(jù)棋盤顏色變化來檢測。2.2.3 內(nèi)部接口TGobangAI組件定義了界面和算法的接口,TGobangAI中聚合了TSearchEngine類的實例FSearchEngine,而TSearchEngine中聚合了TEvaluator的實例FEva
12、luator。通過這種設(shè)計,提高了系統(tǒng)的松散耦合性。2.3.流程圖2.3.1主模塊圖 五子棋界面及畫圖函數(shù)模塊主控模塊先后手模塊塊人機對戰(zhàn)模塊勝負判斷模塊 2.3.2 界面及圖形模塊界面及圖形模塊歡迎界面設(shè)計函數(shù)模式選擇界面游戲進行界面結(jié)束界面棋子函數(shù)2.4 UML設(shè)計2.4.1系統(tǒng)用例圖2.4.2動態(tài)交互圖2.4.3靜態(tài)類圖2.4.4包圖2.4.5流程圖3.詳細設(shè)計3.1基本操作3.1.1界面以及落子處理1.使用二維數(shù)組Chessboard15,15儲存棋盤的狀態(tài),以0表示沒有放子的位置,以1表示放黑子的位置,以2表示放白子的位置;2.以鼠標的狀態(tài)提示當前持子的一方;3.將棋盤作為圖片的形式
13、貼處在程序界面上;4.加載棋子資源(黑、白棋子),當鼠標在棋盤上點擊的時候產(chǎn)生事件,處理鼠標的位置產(chǎn)生對應(yīng)的棋盤坐標位置;5判斷落子出是否可以落子:不可以則不做任何處理,不改變鼠標的狀態(tài);可以落子,則打印對應(yīng)的棋子圖像,記錄棋盤位置,并將位置傳遞給判定函數(shù);6.交換持子方,重復(fù)落子過程,直到判定函數(shù)產(chǎn)生勝出結(jié)果;圖2系統(tǒng)界面3.2五子棋判勝本功能模塊主要對游戲的勝負進行判定.1.由玩家輸入棋子所在位置,由系統(tǒng)判定勝負,若勝,則游戲結(jié)束;否則,游戲繼續(xù).2對勝負判定需先確定一個中心棋子位置.3由一個中心棋子可以引出四條線形成五子連一線.4判定過程中注意越界現(xiàn)象.概要設(shè)計1五子棋的判勝條件即為5個
14、相同的棋子連在一條線上.2以一個棋子為中心,有4條線可以形成五子連線.如圖所示:(描紅的為中心棋子)3中心棋子即為最后一步所下棋子.4以1線為例,從中心棋子出發(fā)(設(shè)為白子),先向左進行判斷,若棋子為白子,則計數(shù)器加1(初始值為1),否則(為黑子或無子),則返回中心棋子,向右進行判斷,進行相同操作. 51線判定結(jié)束后,若計數(shù)器為5,則判白子勝,否則,計數(shù)器歸1,再從2,3,4線按順序進行判定.6棋盤的每個坐標有3個狀態(tài),分別為無子(標記為0),白子(標記為1),黑子(標記為2),對棋盤點進行判斷時,只需判定其所在狀態(tài)即可。7若棋盤下滿,仍未有五子連線,則判和。 1線判定2線判定3線判定4線判定是
15、否勝利?是否勝利?是否勝利?是否勝利?確定中心棋子(黑或白)棋盤下滿判和黑(白)子勝!圖3 五子棋判勝流程圖4.軟件實現(xiàn)與測試軟件測試就是利用測試工具按照測試方案和流程對產(chǎn)品進行功能和性能測試,甚至根據(jù)需要編寫不同的測試工具,設(shè)計和維護測試系統(tǒng),對測試方案可能出現(xiàn)的問題進行分析和評估。執(zhí)行測試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品適合需求。軟件測試的目的:(1)測試并不僅僅是為了找出錯誤。通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,可以幫助項目管理者發(fā)現(xiàn)當前軟件開發(fā)過程中的缺陷,以便及時改進;(2)這種分析也能幫助測試人員設(shè)計出有針對性的測試方法,改善測試的效率和有效性;(3)沒有發(fā)現(xiàn)錯誤的測試也是有價值的,完整的測試是評定軟件質(zhì)量的一種方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加工包工合同范例
- 兌店鋪合同范例
- 人力中介司機合同范例
- 全款付款購房合同范例
- 高等教育普及化背景下高職學生學習動機影響因素研究
- mcn公司簽約合同范例
- 青海橡膠圍堰施工方案
- 二手人防車位買賣合同范例
- 內(nèi)貿(mào)合同范例
- 2025年其它新型計算機外圍設(shè)備項目發(fā)展計劃
- 2018NFPA10便攜式滅火器標準
- 橋梁樁基工程培訓課件
- 裝修完成情況報告范文
- 2024-2024年上海市高考英語試題及答案
- 考試五類職業(yè)適應(yīng)性測試試題庫及答案
- 【完整版】2020-2025年中國大語文培訓行業(yè)發(fā)展戰(zhàn)略制定與實施研究報告
- 專題11 電磁感應(yīng)-2024物理高考真題及??碱}分類匯編
- 《中國各民族的語言》課件
- 2024年中考數(shù)學壓軸題預(yù)測《圓的綜合壓軸題》及答案解析
- 廣東省汕頭市龍湖區(qū)汕頭市龍湖實驗中學2024-2025學年八年級上學期11月期中語文試題
- 南京信息工程大學《流體力學(Ⅰ)》2022-2023學年第一學期期末試卷
評論
0/150
提交評論