1. 程式人生 > >[文件和原始碼分享] 智慧人機博弈五子棋遊戲

[文件和原始碼分享] 智慧人機博弈五子棋遊戲

 

五子棋是雙人博弈棋類益智遊戲,由圍棋演變而來,屬純策略型。棋盤通常15*15,即15行,15列,共225個交叉點,即棋子落點;棋子由黑白兩色組成,黑棋123顆,白棋122顆。遊戲規則為黑先白後,誰先五子連成一條直線誰贏,其中直線可以是橫的、縱的、45度、135度。

本次Java程式設計我的目的是現實人機對戰,即遊戲者一方是人,另一方計算機。這就要求程式不僅要具備五子棋的基本介面,還要程式設計指導計算機與人進行對弈。為了使程式儘可能智慧,我採用了貪心策略、傳統搜尋演算法、極大極小博弈樹演算法,對應遊戲玩家的3個等級:簡單、中等、困難。

Java語言是面向物件的語言。我在進行五子棋遊戲程式設計是總共傳建立了11個自定義的類。在編寫程式的過程中,我有一個明顯的體驗就是面向物件程式設計就是一項有關物件設計和物件介面技術,很多關鍵的技術就是如何設計自定義的物件。

下面我先概括給出我的所有類的作用:mainFrame類:主框架類,我應用程式的入口;chessPositon類:主控類,這個類是我程式的核心類,負責控制雙方的下棋,以及呼叫其他的類完成當前棋局的顯示繪製;chessPanel類:面板類,呼叫其他底層類完成當前棋局的顯示繪製;chessBoard類:棋盤繪製類,負責棋盤的繪製;chessImage類:檔案類,包含各種資源(背景圖片、背景音樂)以及靜態全域性變數(public static Type);chessButton類:元件類,定義各種元件,包括按鈕、單選按鈕、文字框等;chessMusic類:音樂類,負責呼叫Java類庫完成背景音樂、下棋音樂、取勝音樂等的播放;chessPiece類:棋局類,定義棋局二維陣列資料結構並完成相關操作;chessList類:棧類,完成悔棋等操作;chessOneStep類:棋子類,定義每步座標以及下在該處獲得的估價值;myCompare類:排序類,完成chessOneStep類的自定義排序;

詳細的開發文件和程式原始碼我都分享在了個人部落格上了,感興趣的可以去看看:

https://www.write-bug.com/article/100.html