海克斯棋开源程序 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 的任何用途无需征求程序原做者许可 :)

相关文章
相关标签/搜索