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

正文內(nèi)容

vc簡易五子棋游戲的實(shí)現(xiàn)(doc畢業(yè)設(shè)計(jì)論文)(編輯修改稿)

2025-07-25 08:20 本頁面
 

【文章內(nèi)容簡介】 另一玩家與對手(真實(shí)的人)按五子棋規(guī)則下棋。玩家可以提出悔棋請求,而計(jì)算機(jī)必須無條件同意。網(wǎng)絡(luò)對戰(zhàn)功能網(wǎng)絡(luò)聯(lián)機(jī)對戰(zhàn)是本程序的又一重頭戲。身處異地的兩個(gè)不同玩家在建立了網(wǎng)絡(luò)連接的前提下,使用本程序透過此功能,可以實(shí)現(xiàn)五子棋對弈。其中的任一玩家都可以提出“和棋”(或“悔棋”)請求,不過須經(jīng)對手同意后,方可“和棋”(或“悔棋”)。另外玩家也可以提出“認(rèn)輸”請求,而無需對手同意。兩玩家在下棋的同時(shí),還可以交談聊天。二、一般性描述系統(tǒng)User Case圖用例圖(User Case)定義了系統(tǒng)的功能需求,它完全是從系統(tǒng)的外部觀看系統(tǒng)功能,并不描述系統(tǒng)內(nèi)部的具體實(shí)現(xiàn)。在用例圖中,角色代表觸發(fā)系統(tǒng)功能的用戶或其他系統(tǒng),用例代表具體的功能描述。① 初始頁面用例圖,: 初始界面用例圖② 人機(jī)對戰(zhàn)用例圖,: 人機(jī)對戰(zhàn)用例圖③ 網(wǎng)絡(luò)聯(lián)機(jī)對戰(zhàn)用例圖,: 網(wǎng)絡(luò)聯(lián)機(jī)對戰(zhàn)用例圖用例流程分析在用例建模的過程中,一般用活動圖(activity diagram)來闡明用例實(shí)現(xiàn)的工作流程,用例工作流程說明了實(shí)現(xiàn)用例所必須完成的工作。① 人機(jī)對戰(zhàn)用例活動圖():其展示的是在玩家和計(jì)算機(jī)對弈這一過程中所產(chǎn)生的一系列動作。 人機(jī)對戰(zhàn)活動圖② 網(wǎng)絡(luò)對戰(zhàn)活動圖:清楚地表達(dá)了在網(wǎng)絡(luò)對戰(zhàn)模式下,處于網(wǎng)絡(luò)中的兩玩家,從建立或加入游戲開始直至退出系統(tǒng),所經(jīng)歷的一系列動作。 網(wǎng)絡(luò)對戰(zhàn)活動圖三、目標(biāo)系統(tǒng)其它需求界面需求:考慮到游戲的娛樂性,要求界面美觀、和諧、人性化等。運(yùn)行環(huán)境:Intel174。 Pentium174。 4及以上處理器,128M以上內(nèi)存,2G以上硬盤;Microsoft174。 Windows? XP以上操作系統(tǒng);800*600或以上的屏幕分辨率。第三節(jié) 本章小結(jié)本章主要討論了此五子棋游戲程序所要實(shí)現(xiàn)的功能,并對其進(jìn)行了詳細(xì)描述。 第二章 軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)就是根據(jù)軟件需求分析階段產(chǎn)生的數(shù)據(jù)域和功能域之需求,采用某種設(shè)計(jì)方法進(jìn)行概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),生成所要構(gòu)造的實(shí)體過程,是軟件工程的技術(shù)核心。經(jīng)過前面章節(jié)的討論和分析,我們對“小小五子棋”游戲軟件要“做什么”已經(jīng)有了具體和明確的概念,現(xiàn)在就應(yīng)該著手解決“如何做”的問題。第一節(jié) 概要設(shè)計(jì)概括地說,概要設(shè)計(jì)進(jìn)行數(shù)據(jù)設(shè)計(jì)/數(shù)據(jù)庫設(shè)計(jì)和系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)。其只是描繪出軟件的總體框架,根據(jù)功能、性能需求和數(shù)據(jù)需求導(dǎo)出軟件的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)。一、設(shè)計(jì)指導(dǎo)思想① 模塊化模塊是構(gòu)成程序的基本構(gòu)件,模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來就構(gòu)成了一個(gè)整體,可以完成指定的功能,以滿助于用戶需求。采用模塊化原理可以使軟件結(jié)構(gòu)清晰,降低了系統(tǒng)的復(fù)雜性,使系統(tǒng)容易設(shè)計(jì)、容易修改,而且其推動了系統(tǒng)各部分的并行開發(fā),提高了軟件的生產(chǎn)效率。本小小五子棋游戲程序的設(shè)計(jì)正是采用了模塊化原理,通過把系統(tǒng)劃分為不同的模塊,使得整個(gè)設(shè)計(jì)開發(fā)過程顯得相對容易。② 抽象化在對軟件系統(tǒng)進(jìn)行模塊設(shè)計(jì)時(shí),可以有不同的抽象層次,系統(tǒng)設(shè)計(jì)過程中的每一步都是對軟件問題解法的又一次更高級抽象??尚行匝芯渴菍φ麄€(gè)系統(tǒng)的抽象,需求分析則是對此五子棋游戲程序所要實(shí)現(xiàn)功能的抽象。③ 信息隱蔽信息隱蔽指的是,每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對于其他的模塊來說是隱蔽的。在此五子棋程序設(shè)計(jì)中,模塊A所包含的信息絕不允許其他不需要此模塊A信息的模塊訪問使用。④ 另外,為了進(jìn)一步提高系統(tǒng)開發(fā)質(zhì)量,在設(shè)計(jì)開發(fā)過程中還特地遵循如下原則:較強(qiáng)的可玩性:開發(fā)任意一款游戲,都必須考慮其可玩性。在本程序的人機(jī)對戰(zhàn)模塊中,為了提高其可玩性,就必須尋求高效優(yōu)秀的算法,以提高程序的智能化水平。娛樂性:娛樂玩家身心,是每一款游戲的根本目標(biāo)。因此,設(shè)計(jì)過程中必須考慮優(yōu)美、和諧、人性化的界面設(shè)計(jì)。另外,要盡可能地?cái)U(kuò)展其他功能,比如此程序中玩家在對弈的同時(shí),不僅可以享受自己喜歡的音樂,如果他們處于網(wǎng)絡(luò)對戰(zhàn)模式下,還可以聊天交流。源程序可讀性原則:為了方便其他的設(shè)計(jì)以及對程序的二次開發(fā),以及維護(hù)人員能夠方便的讀懂代碼和修改代碼,軟件升級等工作,需要對代碼進(jìn)行規(guī)范化書寫以及注釋。優(yōu)化原則:為了達(dá)到優(yōu)化的目的,合理地運(yùn)用窗口、菜單以及對象等的繼承,自定義用戶的對象、事件、函數(shù),減少不必要的重復(fù)代碼,使程序簡單明了,也方便將來的維護(hù)。二、小小五子棋游戲軟件結(jié)構(gòu)圖使用上節(jié)所提到的模塊化等設(shè)計(jì)思想,把游戲劃分為初始登陸模塊、游戲界面模塊、人機(jī)對戰(zhàn)模塊、網(wǎng)絡(luò)對戰(zhàn)模塊、網(wǎng)絡(luò)聊天模塊,一一對其分項(xiàng)設(shè)計(jì)開發(fā)。下面是整個(gè)程序的結(jié)構(gòu)圖。 程序結(jié)構(gòu)圖三、數(shù)據(jù)設(shè)計(jì)程序?qū)⒉捎妹嫦驅(qū)ο蟮乃枷耄苯永肕FC生成基于對話框的文檔視圖,只需添加必要的類就可以實(shí)現(xiàn)整個(gè)五子棋游戲功能。通過需求分析對問題域的理解和分析,我們抽象出本程序中所需的類。 小小五子棋程序中的類明細(xì)表類 名說 明CChessboard棋盤類,整個(gè)架構(gòu)的核心部分,封裝了棋盤各種可能的功能CGame游戲模式抽象類,用于管理單機(jī)游戲類和網(wǎng)絡(luò)游戲類CSingleGame單機(jī)游戲類,封裝了人機(jī)對戰(zhàn)的所有算法和功能COnlineGame網(wǎng)絡(luò)游戲類,封裝網(wǎng)絡(luò)對戰(zhàn)的相關(guān)功能CLogDLG初始界面類,為進(jìn)入游戲提供接口,完成游戲初始化CGoBangSocket套接字類,負(fù)責(zé)網(wǎng)絡(luò)的連接以及網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送接收CGoBangDlg程序的主窗口類CBlackDlg為先手(黑棋)建立游戲提供接口CWhiteDlg為后手(白棋)加入游戲提供接口CMyStatusBar狀態(tài)欄類CxShadeButton個(gè)性化的Button類,可以美化按鈕對于各個(gè)類的說明理解,將在后續(xù)章節(jié)中一一介紹。第二節(jié) 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)通過以上對小小五子棋游戲軟件的分析和設(shè)計(jì),確定了其基本的軟件結(jié)構(gòu),并抽象出其中的類,接下來所要做的事情就是進(jìn)行詳細(xì)設(shè)計(jì)。詳細(xì)設(shè)計(jì)就是根據(jù)概要設(shè)計(jì)所提供的結(jié)果,對每一個(gè)模塊進(jìn)行細(xì)化,確定算法及其詳細(xì)數(shù)據(jù)。一、初始登陸界面設(shè)計(jì)初始登陸界面是使用MFC的對話框,并在其上添加控件,用于實(shí)現(xiàn)登陸界面與程序之間的交互。另外,加入背景圖片,以美化界面。: 初始登陸界面設(shè)計(jì)圖按以上設(shè)計(jì)圖設(shè)計(jì)好整個(gè)登陸界面的布局,在利用ClassWizard生成CLogDlg類,并添加OnInitDialog()、OnPaint()等函數(shù),用于實(shí)現(xiàn)初始登陸界面。: 系統(tǒng)初始登陸界面二、程序主窗口設(shè)計(jì)當(dāng)玩家從初始登陸界面確定進(jìn)入游戲后,即進(jìn)入了程序的主窗口。同樣地,這一窗口是利用MFC生成的Dialog,把它分為棋盤顯示區(qū)、聊天及其內(nèi)容顯示區(qū)、戰(zhàn)況顯示區(qū)、頭像顯示區(qū)、菜單、狀態(tài)欄等部分。 程序主窗口布局設(shè)計(jì)圖因?yàn)槌绦蚴腔趯υ捒蛟O(shè)計(jì)的,因此主對話框?qū)?yīng)的類CGoBangDlg是自動生成的,只需添加適當(dāng)變量,并在函數(shù)OnInitDialog()、OnPaint()中添加適當(dāng)代碼,以實(shí)現(xiàn)主對話框的顯示。需要說明的是,為了提高界面的美化程度,引入繼承了CButton類的特殊按鈕類CxShadeButton類,并把和棋、悔棋、認(rèn)輸?shù)裙δ馨粹o定義為CxShadeButton變量,調(diào)用相關(guān)的函數(shù),提高按鈕的美感,是整個(gè)界面更和諧。另外,定義狀態(tài)欄的類為CMyStatusBar。三、人機(jī)對戰(zhàn)模塊設(shè)計(jì)人機(jī)對戰(zhàn)模塊是此程序的重點(diǎn)部分,亦是難點(diǎn)部分,它要求計(jì)算機(jī)模擬現(xiàn)實(shí)人與真實(shí)的玩家進(jìn)行對弈。我認(rèn)為在設(shè)計(jì)過程中,既要考慮如何提高計(jì)算機(jī)的智能程度(即讓計(jì)算機(jī)多贏),又要適時(shí)適當(dāng)?shù)刈屨鎸?shí)玩家能夠贏棋,以免使其失去繼續(xù)玩下去的興趣。因此,設(shè)計(jì)合適合理的算法及決策策略就顯得格外重要了?!岸肆愫汀⑷畔?、非偶然”博弈“二人零和、全信息、非偶然”博弈是眾多博弈形式中最簡單的一種,其含義是:① 對壘雙方A、B輪流采取行動,博弈的結(jié)果只有三種情況:A方勝,B方敗;B方勝,A方??;雙方戰(zhàn)成平局。② 在對壘過程中,任何一方都了解當(dāng)前的格局及過去的歷史。③ 任何一方在采取行動前都要根據(jù)當(dāng)前的實(shí)際情況,進(jìn)行得失分析,選取對自己最為有利而對對方最為不利的對策,不存在“碰運(yùn)氣”的偶然因素。即雙方都是很理智地決定自己的行動。本程序中所涉及的五子棋游戲就是一種“二人零和、全信息、非偶然”的博弈游戲。策略型人工智能策略型人工智能可以說是所有AI中比較復(fù)雜的一種,最常見的運(yùn)用策略型AI的游戲就是棋盤類游戲,本論文中所討論的五子棋游戲就是運(yùn)用策略型AI的典范。對于這類游戲,對弈時(shí)計(jì)算機(jī)必須根據(jù)當(dāng)前棋局分析判斷所有可以走的棋步和可能的獲勝情況,并計(jì)算玩家的可走棋步和致勝幾率,最后選擇最佳的走棋步法。小小五子棋程序中的計(jì)算機(jī)決策方式(1)、計(jì)算所有的獲勝組合在此五子棋游戲中,要求計(jì)算機(jī)知道所有的獲勝組合,因?yàn)檫@是進(jìn)行勝負(fù)判斷等決策的依據(jù)。下面就來計(jì)算在一個(gè)標(biāo)準(zhǔn)的1515的五子棋盤中所有獲勝的組合數(shù),: 計(jì)算棋盤獲勝組合數(shù)、紅、藍(lán)三種不同的顏色描述了在橫“—”、豎“|”、反斜“/”三個(gè)方向的獲勝組合計(jì)算方法,對于正斜“\”方向與反斜“/”方向相同。需要特別說明的是,在下棋過程中只有黑白兩種棋色。① 橫“—”向獲勝組合數(shù):如黑棋示,11種/行,共15行,所以水平方法的獲勝組合總數(shù)為:11種/行15行=165種。② 豎“|”向獲勝組合數(shù):如紅棋示,11種/列,共15列,所有垂直方向的獲勝組合總數(shù)為:11種/列15列=165種。③ 反斜“/”向獲勝組合數(shù):如藍(lán)棋示,11+(10+9+8+7+6+5+4+3+2+1)2=121種。④ 正斜“\”向獲勝組合數(shù):與反斜“/”向相同,121種。所以,在1515的五子棋盤中所有獲勝的組合數(shù)為:165+165+121+121=572種。(2)、建立與使用獲勝表前面已經(jīng)計(jì)算出在一個(gè)標(biāo)準(zhǔn)的1515的五子棋盤中應(yīng)有572種獲勝組合,那么接下來要做的事情就是設(shè)計(jì)建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),使其與當(dāng)前棋局相關(guān)聯(lián)起來。對此我們在類CSingleGame(人機(jī)對戰(zhàn)模式對應(yīng)的類,在后續(xù)章節(jié)詳細(xì)介紹)中添加如下數(shù)組: bool m_Computer[15][15][572]。 // 電腦獲勝組合,其每一顆棋子是否在各個(gè)獲勝組合中 bool m_Player[15][15][572]。 // 玩家獲勝組合,其每一顆棋子是否在各個(gè)獲勝組合中 int m_Win[2][572]。 // 各個(gè)獲勝組合中填入的棋子數(shù)BOOL數(shù)組m_Computer和m_Player是用來代表某一個(gè)位置上的棋子是否在某一個(gè)獲勝組合中,: m_Computer(m_Player)數(shù)組示例,假若圖中排列的獲勝組合為572種中的第293種,因此在初始化時(shí),m_Computer或m_Player數(shù)組中的元素設(shè)置為:m_Computer[5][8][293] = TRUE。m_Computer[6][7][ 293] = TRUE。m_Computer[7][6][ 293] = TRUE。m_Computer[8][5][ 293] = TRUE。m_Computer[9][4][ 293] = TRUE。//其余的初始為FALSE.初始化時(shí),數(shù)組m_Player與m_Computer的值相同,但如果游戲過程中玩家占據(jù)了位置(7,6),那么數(shù)組m_Computer[7][6][ 293]就設(shè)置為FALSE。數(shù)組m_Win[2][572]用來記錄玩家或計(jì)算機(jī)在各個(gè)獲勝組合中所填入的棋子數(shù)目,其中m_Win[0][572]表示玩家,m_Win[1][572]對應(yīng)于計(jì)算機(jī)。若m_Win[1][293] = 4,就說明計(jì)算機(jī)已在第293種組合中填入了4顆棋子,只需再填入一顆計(jì)算機(jī)就能取得勝利。(3)、空點(diǎn)評分與攻守策略在采用策略型AI的棋類游戲中,估價(jià)函數(shù)是一個(gè)很重要的概念。不同的算法和設(shè)計(jì)思想,所采用的估價(jià)方法也不一樣,有的采用通過給整個(gè)棋局打分,以尋求下一棋步的最佳走法。在此程序中,采用的是給當(dāng)前棋局的每一個(gè)空點(diǎn)打分,選擇其中分?jǐn)?shù)最高的空點(diǎn)作為下一棋步。評分方法為:遍歷該空點(diǎn)所在的每一種獲勝組合,根據(jù)這個(gè)組合中已經(jīng)擁有的己方棋子數(shù)0到4分別加不同分?jǐn)?shù),最后將這些所有的獲勝組合所得出的分?jǐn)?shù)相加就是該空點(diǎn)的分?jǐn)?shù)。 空點(diǎn)評分示例下面就對以上所述評分方法簡要舉例說明。,當(dāng)前棋局只有(7,7)位置上著棋,并且只考慮第7列上各點(diǎn)在豎直方向的獲勝組合,水平方向和斜向可以依此類推。另外,還要假設(shè)各點(diǎn)所在的獲勝組合中已填入的棋子數(shù)為0(加5分)。所以基于以上的方法和假設(shè)。圖中空點(diǎn)(7,0)與棋子所達(dá)成的組合數(shù)只有一種,因此只有5分,而空點(diǎn)(7,6)與其他棋子所達(dá)成連線的組合數(shù)為7,因此得分為57=35分。運(yùn)用以上的評分方法,計(jì)算機(jī)在走步時(shí),都會根據(jù)當(dāng)前棋局計(jì)算每個(gè)空點(diǎn)的得分,把棋子著落在分?jǐn)?shù)最高的位置上,這就是進(jìn)攻策略。同樣地,為了進(jìn)行防守,計(jì)算機(jī)也必須知道當(dāng)前玩家的狀態(tài),并計(jì)算玩家目前所有空點(diǎn)的分?jǐn)?shù)。一般地,分?jǐn)?shù)最高的空點(diǎn)也就是玩家下一步的棋步。如果玩家最佳攻擊位置上的分?jǐn)?shù)大于計(jì)算機(jī)最佳攻擊位置上的分?jǐn)?shù),那么計(jì)算機(jī)就把下一步棋子落在玩家的最佳攻擊位置上,以防止玩家攻擊,從而進(jìn)行防守;否則,便將棋子下于自己的最佳攻擊位置進(jìn)行進(jìn)攻。具體設(shè)計(jì)與實(shí)現(xiàn)(1)、人機(jī)對戰(zhàn)總體設(shè)計(jì)思路: 人機(jī)對戰(zhàn)模塊總統(tǒng)設(shè)計(jì)思路從上圖可以看出,人機(jī)對戰(zhàn)就是玩家和計(jì)算機(jī)輪流落子對弈的過程,因此可以把整個(gè)對弈過程分為計(jì)算機(jī)下棋和玩家下棋,其中計(jì)算機(jī)下棋就是這個(gè)五子棋游戲的主要AI部分。(2)、CGame類與CSingleGame類、COnlineGame類的關(guān)系通過分析可知,不管是人機(jī)對戰(zhàn)還是網(wǎng)絡(luò)對戰(zhàn)的整個(gè)下棋過程,一般都包括己方落子、等待對方落子、對方落子、更新棋盤數(shù)據(jù)這一系列過程。因此,利用面向?qū)ο蟪绦蛟O(shè)計(jì)的相關(guān)方法原理,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1