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

正文內(nèi)容

基于c畢業(yè)設計-五子棋游戲(編輯修改稿)

2025-07-16 12:32 本頁面
 

【文章內(nèi)容簡介】 l C++是相當新的,實際上微軟只是在發(fā)布 Visual C++ 時去除了一些“bug” 。標準庫提供了標準的輸入/輸出、字符串、容器(如矢量、列表和映射等)、非數(shù)值運算(如排序、搜索和合并等)和對數(shù)值計算的支持。應該說, C/C++包含了相對少的關鍵字,而且很多最有用的函數(shù)都來源于庫,C++標準庫實現(xiàn)容器和算法的部分就是 STL。 STL 是數(shù)據(jù)結構和算法的一個框架,數(shù)據(jù)結構包括矢量、列表和映射等,算法包括這些數(shù)據(jù)結構的查找、拷貝和排序等。1994 年 7 月,ANSI/ISO C++標準委員會投票決定接受 STL 為 C++標準庫的一部分,這個建議是根據(jù) Alex Stepanov、Meng Lee 和 David Musser 這三人的編程和軟件庫研究提出的。STL 的產(chǎn)生是為了滿足通用性的設計目標,而不是為了提高性能。3 軟件架構軟件的總體架構如圖 :山東凱文科技職業(yè)學院3 圖 軟件架構考慮到整個的下棋過程(無論對方是電腦抑或其他網(wǎng)絡玩家)可以分為:己方落子、等待對方落子、對方落子、設置己方棋盤數(shù)據(jù)這一系列過程,因此一人游戲類、二人游戲類和棋盤類之間的關系參考了 AbstractFactory(抽象工廠)模式,以實現(xiàn)對兩個不同模塊進行一般化的控制。 [2] 棋盤類整個架構的核心部分,類名為 CTable。封裝了棋盤的各種可能用到的功能 [3],如保存棋盤數(shù)據(jù)、初始化、判斷勝負等。用戶操作主界面,主界面與 CTable 進行交互來完成對游戲的操作。 游戲模式類用來管理人機對弈/網(wǎng)絡對弈兩種游戲模式,類名為 CGame。CGame 是一個抽象類,經(jīng)由它派生出一人游戲類 COneGame 和網(wǎng)絡游戲類 CTwoGame,如圖 : 圖 CGame 類派生關系一人游戲類 二人游戲類棋盤類主界面用戶抽象類 CGameCOneGame CTwoGame游戲類指針山東凱文科技職業(yè)學院4這樣,CTable 類就可以通過一個 CGame 類的指針[4],在游戲初始化的時候根據(jù)具體游戲模式的要求實例化 COneGame 或 CTwoGame 類的對象;然后利用多態(tài)性[5],使用 CGame 類提供的公有接口就可以完成不同游戲模式下的不同功能了。4 主要算法五子棋游戲中,有相當?shù)钠撬惴ǖ牟糠?。無論是人機對弈,還是網(wǎng)絡對弈,都需要合理算法的支持,本節(jié)中將詳細介紹五子棋中使用的算法。 [13] 判斷勝負五子棋的勝負,在于判斷棋盤上是否有一個點,從這個點開始的右、下、右下、左下四個方向是否有連續(xù)的五個同色棋子出現(xiàn),:圖 判斷勝負方向這個算法也就是 CTable 的 Win 成員函數(shù)。從設計的思想上,需要它接受一個棋子顏色的參數(shù),然后返回一個布爾值,這個值來指示是否勝利,代碼如下:BOOL CTable::Win( int color ) const{ int x, y。 // 判斷橫向 for ( y = 0。 y 15。 y++ ) { for ( x = 0。 x 11。 x++ ) { if ( color == m_data[x][y] amp。amp。color == m_data[x + 1][y] amp。amp。 color == m_data[x + 2][y] amp。amp。color == m_data[x + 3][y] amp。amp。 color == m_data[x + 4][y] )山東凱文科技職業(yè)學院5 { return TRUE。 } } } // 判斷縱向 for ( y = 0。 y 11。 y++ ) { for ( x = 0。 x 15。 x++ ) { if ( color == m_data[x][y] amp。amp。color == m_data[x][y + 1] amp。amp。 color == m_data[x][y + 2] amp。amp。color == m_data[x][y + 3] amp。amp。 color == m_data[x][y + 4] ) { return TRUE。 } } } // 判斷“\”方向 for ( y = 0。 y 11。 y++ ) { for ( x = 0。 x 11。 x++ ) { if ( color == m_data[x][y] amp。amp。color == m_data[x + 1][y + 1] amp。amp。 color == m_data[x + 2][y + 2] amp。amp。color == m_data[x + 3][y + 3] amp。amp。 color == m_data[x + 4][y + 4] ) { return TRUE。 } } }山東凱文科技職業(yè)學院6 // 判斷“/”方向 for ( y = 0。 y 11。 y++ ) { for ( x = 4。 x 15。 x++ ) { if ( color == m_data[x][y] amp。amp。color == m_data[x 1][y + 1] amp。amp。 color == m_data[x 2][y + 2] amp。amp。color == m_data[x 3][y + 3] amp。amp。 color == m_data[x 4][y + 4] ) { return TRUE。 } } } // 不滿足勝利條件 return FALSE。}需要說明的一點是,由于這個算法所遵循的搜索順序是從左到右、自上而下,因此在每次循環(huán)的時候,都有一些坐標無需納入考慮范圍。例如對于橫向判斷而言,由于右邊界所限,因而所有橫坐標大于等于 11 的點,都構不成達到五子連的條件,所以橫坐標的循環(huán)上界也就定為 11,這樣也就提高了搜索的速度。 人機對弈算法人機對弈算法完全按照 CGame 基類定義的接口標準,封裝在了 COneGame 派生類之中。下面將對這個算法進行詳細地介紹。 [14] 獲勝組合獲勝組合是一個三維數(shù)組,它記錄了所有取勝的情況。也就是說,參考于 CTable::Win 中的情況,對于每一個落子坐標,獲勝的組合一共有15 * 11 * 2 + 11 * 11 * 2 = 572 種。而對于每個坐標的獲勝組合,應該設置一個[15][15][572]大小的三維數(shù)組。山東凱文科技職業(yè)學院7在擁有了這些獲勝組合之后,就可以參照每個坐標的 572 種組合給自己的局面和玩家的局面進行打分,也就是根據(jù)當前盤面中某一方所擁有的獲勝組合多少進行權值的估算,給出最有利于自己的一步落子坐標。由于是雙方對弈,所以游戲的雙方都需要一份獲勝組合,也就是:bool m_Computer[15][15][572]。 // 電腦獲勝組合bool m_Player[15][15][572]。 // 玩家獲勝組合在每次游戲初始化(COneGame::Init)的時候,需要將每個坐標下可能的獲勝組合都置為true。此外,還需要設置計算機和玩家在各個獲勝組合中所填入的棋子數(shù):int m_Win[2][572]。在初始化的時候,將每
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1