海克斯棋開源程序 FutaHex2 編譯教程

海克斯棋開源程序 FutaHex2 編譯教程

preview

FutaHex2 源碼下載地址:github.com/FutaAlice/FutaHex2html

Hex棋 也稱六貫棋或海克斯棋,規則介紹參考 wiki(中文 / 英文)。linux


FutaHex2 簡介

FutaHex2 是一個基於蒙特卡洛樹搜索的海克斯棋博弈程序。做者本人是 全國大學生計算機博弈大賽 2016年海克斯棋項目冠軍程序 FUTAHEX 做者。git

舊版程序 FUTAHEX 是在校期間的做品,已交由繼續參加比賽的後輩管理,基本中止維護。況且自己就是賽前一個月東拼西湊的產物,維護約等於重寫。github

2.0 版本僅沿用之前的思路進行重構,使用標準庫替換了舊版絕大多數代碼,移除了原開局庫和走法篩選部分待後續整理後加入。windows

程序分爲如下幾個模塊:多線程

  • fhcore:核心庫,包含棋盤描述、搜索引擎、日誌等功能,無特殊依賴項。
  • futahex2:圖形界面,依賴 fhcore 和 Qt 庫。
  • test:fhcore 的測試工程。

核心代碼使用了 C++11/14 新特性,不支持 Visual Studio 2013 及如下版本的編譯器,不支持 g++ 4.x 及如下版本的編譯器。函數

Windows 環境下編譯

配置要求

—— 最低要求 建議配置
操做系統 Win7 Win7 / Win10
內存 8GB 16GB
VS 版本 VS2015 VS2015
Qt 庫 Qt 5.x Qt 5.8

注:程序編譯連接期對計算機內存無要求,但運行期 MCTS 過程會展開大量節點,對於 11 * 11 或更大尺寸棋盤須要至少 3.5GB 以上的空閒內存。32位有內存限制,建議使用64位編譯visual-studio

搭建開發環境

1)安裝 Visual Studio

工程內大量使用了 C++11/14 特性,僅支持 VS2015 及以上版本。截至做者開始寫 futahex2 的界面部分時, Qt 官方還沒有提供用於 VS2017 的插件,故建議安裝 VS2015測試

若是僅編譯核心庫 fhcore 不須要圖形界面,也能夠選擇 VS2017。動畫

若使用其餘 Visual Studio 版本,則需自行修改代碼和工程配置,不保證可以正常編譯。

安裝選項參考:
vs_install

2)安裝 Qt

用於圖形界面,講道理 Qt5.x 都是能夠的。

注意要安裝 msvc_64 版本。mingw版本不能在 VS 工程中使用,32位 Qt不能連接64位庫,運行時有 3GB 內存限制。

筆者用的 5.8,那就推薦 Qt5.8 算了。國內訪問 Qt 官網比較慢,掛個度盤連接方便下載。

qt_msvc2015_5.8.0.exe

官網地址:download.qt.io/archive/qt/

百度網盤:pan.baidu.com/s/1w3j_mQtiisorqTPaSYNKxQ

安裝選項參考:
qt_install

3)安裝 Qt VS tools

用於在 VS 工程中使用 Qt庫,在安裝完成 VS 和 Qt 以後安裝。

qt_vs_tools_msvc2015_2.1.1.vsix

官網地址:download.qt.io/archive/vsaddin/

百度網盤:pan.baidu.com/s/1WbTk2xrnoKesNMZgzarJrg

4)配置 Qt 路徑

所有安裝完成後打開 Visual Studio ,會發現菜單欄上多了一項「Qt VS Tools」。

從菜單欄 Qt VS Tools -> Qt Options,打開 Qt 配置,此時 Qt Versions 列表應該是空白的。
vs_qt_configure_1

點擊 Add 按鈕添加安裝完成的 Qt 版本,點擊 path 選擇 Qt(msvc2015_64) 所在路徑並添加。
vs_qt_configure_1

5)測試開發環境

順序完成上述步驟後,打開 VS 新建一個 QtGuiApplication ,一路默認選項。

environment_test_1

不改任何文件直接編譯運行,正常彈出以下圖所示的空白 Qt 窗口說明開發環境配置成功。

environment_test_2

編譯 FutaHex2

1)下載源碼

github 地址:github.com/FutaAlice/FutaHex2

從 github 下載代碼並拷貝至工做目錄。
工做路徑全英文無空格確保 Qt 插件可以正常工做。

2)編譯運行

使用 VS2015 打開 「FutaHex2/vsproject/FutaHex2_2015.sln」,設置 futahex2 爲啓動項,選擇 Release 模式,編譯運行便可。

compile_done

Linux 環境下編譯

用於 Linux 下編譯的 cmakelist 還沒有整理上傳。
本節將在工程更新後同步更新。

待辦事項

預計要作,但截止目前還沒有完成(可能永遠不會填坑)的部分。
優先級從上之下遞減。

  • 完善文檔及註釋
  • 多線程 MCTS
  • 整理用於 Linux 編譯的 cmakelist
  • 重構開局庫和走法篩選部分的代碼並加入 2.0 版本
  • 用於淺層剪枝搜索的評估函數
  • 移植剪枝搜索引擎用於解決簡單局面
  • 圖形界面及功能的完善

TODO List 羅列出來發現仍是挺多的,畢業之後空閒時間愈來愈少,真是懷念上學時候天天翹課打遊戲看動畫的悠閒日子 (=w=)

參與 FutaHex2

看到這個項目的多半是參加計算機博弈大賽的各校隊員吧。做爲「過來人」我雖然清楚因爲比賽性質各校閉門造車的傳統,但真的看不慣總有一行代碼不會寫的人拿着往屆大牛學長的祖傳代碼刷分的行爲。

Hex棋,自2016年加入計算機博弈大賽項目,至今不過兩屆。相比其餘傳統項目,趕超強隊所創建的技術壁壘徹底能夠在幾個月內實現。

此次重構 FutaHex2 並基於 GPLv2 發佈,也是但願對開源作一些微小的貢獻。但願喜歡這個項目的諸位學霸,可以一塊兒開發維護。

總而言之,歡迎 fork,歡迎提交 PR。

建了個聊天吹水的 QQ 羣,歡迎進羣討論機器博弈相關問題。

qq_group

開源協議

遵照 GPLv2 的任何用途無需徵求程序原做者許可 :)

相關文章
相關標籤/搜索