海克斯棋开源程序 FutaHex2 编译教程
海克斯棋开源程序 FutaHex2 编译教程
FutaHex2 源码下载地址:github.com/FutaAlice/FutaHex2
Hex棋 也称六贯棋或海克斯棋,规则介绍参考 wiki(中文 / 英文)。
FutaHex2 简介
FutaHex2 是一个基于蒙特卡洛树搜索的海克斯棋博弈程序。作者本人是 全国大学生计算机博弈大赛 2016年海克斯棋项目冠军程序 FUTAHEX 作者。
旧版程序 FUTAHEX 是在校期间的作品,已交由继续参加比赛的后辈管理,基本停止维护。何况本身就是赛前一个月东拼西凑的产物,维护约等于重写。
2.0 版本仅沿用以前的思路进行重构,使用标准库替换了旧版绝大多数代码,移除了原开局库和走法筛选部分待后续整理后加入。
程序分为以下几个模块:
* 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位编译。
搭建开发环境
1)安装 Visual Studio
工程内大量使用了 C++11/14 特性,仅支持 VS2015 及以上版本。截至作者开始写 futahex2 的界面部分时, Qt 官方尚未提供用于 VS2017 的插件,故建议安装 VS2015。
如果仅编译核心库 fhcore 不需要图形界面,也可以选择 VS2017。
若使用其他 Visual Studio 版本,则需自行修改代码和工程配置,不保证能够正常编译。
安装选项参考:
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
安装选项参考:
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 列表应该是空白的。
点击 Add 按钮添加安装完成的 Qt 版本,点击 path 选择 Qt(msvc2015_64) 所在路径并添加。
5)测试开发环境
顺序完成上述步骤后,打开 VS 新建一个 QtGuiApplication ,一路默认选项。
不改任何文件直接编译运行,正常弹出如下图所示的空白 Qt 窗口说明开发环境配置成功。
编译 FutaHex2
1)下载源码
github 地址:github.com/FutaAlice/FutaHex2
从 github 下载代码并拷贝至工作目录。
工作路径全英文无空格确保 Qt 插件能够正常工作。
2)编译运行
使用 VS2015 打开 “FutaHex2/vsproject/FutaHex2_2015.sln”,设置 futahex2 为启动项,选择 Release 模式,编译运行即可。
Linux 环境下编译
用于 Linux 下编译的 cmakelist 尚未整理上传。
本节将在工程更新后同步更新。
待办事项
预计要做,但截止目前尚未完成(可能永远不会填坑)的部分。
优先级从上之下递减。
- 完善文档及注释
- 多线程 MCTS
- 整理用于 Linux 编译的 cmakelist
- 重构开局库和走法筛选部分的代码并加入 2.0 版本
- 用于浅层剪枝搜索的评估函数
- 移植剪枝搜索引擎用于解决简单局面
- 图形界面及功能的完善
TODO List 罗列出来发现还是挺多的,毕业以后空闲时间越来越少,真是怀念上学时候每天翘课打游戏看动画的清闲日子 (=w=)
参与 FutaHex2
看到这个项目的多半是参加计算机博弈大赛的各校队员吧。作为“过来人”我虽然清楚由于比赛性质各校闭门造车的传统,但真的看不惯总有一行代码不会写的人拿着往届大牛学长的祖传代码刷分的行为。
Hex棋,自2016年加入计算机博弈大赛项目,至今不过两届。相比其他传统项目,赶超强队所建立的技术壁垒完全可以在几个月内实现。
这次重构 FutaHex2 并基于 GPLv2 发布,也是希望对开源做一些微小的贡献。希望喜欢这个项目的诸位学霸,能够一起开发维护。
总而言之,欢迎 fork,欢迎提交 PR。
建了个聊天吹水的 QQ 群,欢迎进群讨论机器博弈相关问题。
开源协议
遵守 GPLv2 的任何用途无需征求程序原作者许可 :)
海克斯棋开源程序 FutaHex2 编译教程相关推荐
- 微信小程序抓包与逆向+微信小程序反编译教程+解包教程+解包工具
免责声明 做视频的初衷是为了学习交流,是想让自己在分享过程中学习到更多的东西 本人发布的视频.环境.软件.脚本.文章.资料等,都只用于学习交流安全技术,请不要用于任何非法用途, 否则后果自付 部分技术 ...
- 快速高效的小程序反编译教程
小程序反编译 反编译小程序教程 下载夜神模拟器 安装re文件管理器 和微信 打开re 进入 目录 /data/data/com.tencent.mm/MicroMsg/8d6b326ac474f191 ...
- 最新抓取微信小程序源码教程+附逆向工具WxappUnpacker
正文: 文章目录 前言 一.工具准备(免费) 1 解密工具 2 逆向工具 二.解密小程序 1.确认小程序包位置 2.打开一个小程序 3.解密小程序包 三.逆向小程序 1.检查nodejs 2.安装依赖 ...
- HexyBuddy:海克斯棋程序 Hexy 的逆向工具
HexyBuddy 源码 https://github.com/FutaAlice/HexyBuddy 简介 HexyBuddy 是一个通过读取内存和模拟点击等方式控制后台运行的 Hexy 的程序. ...
- 开源实时音视频技术WebRTC在Windows下的简明编译教程
1.前言 随着音视频技术的不断普及,Google推出的 WebRTC 越来越受到大家的喜欢.现在很多直播产品都是基于WebRTC 进行二次开发做出来的. WebRTC是提供了一整套处理实时音视频的开源 ...
- 微信小程序分包反编译教程
以EMS中国邮政速递物流小程序为例介绍下带分包小程序反编译操作流程 实验环境 前置准备 模拟器内软件安装 获取小程序包 开始解包 导入开发者工具 逆向教程小程序 参考资料 小程序逆向视频专栏 小程序逆 ...
- 微信小程序反编译wxss文件缺失_如何找回微信小程序源码?2020年微信小程序反编译最新教程 小宇子李...
前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...
- 微信小程序反编译wxss文件缺失_如何找回微信小程序源码?2019年微信小程序反编译最新教程...
前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...
- 如何找回微信小程序源码?2020年微信小程序反编译最新教程
前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...
- 绿豆pro前端APP源码v5.1.7编译教程,后端配置全开源安装搭建全图文操作萝卜白菜app通用说明带视频教程_多啦咪
绿豆pro前端APP源码v5.1.7编译教程全图文操作萝卜白菜app通用: 图文一: 打开前端加载项目后,选择图下文件名为app.java文件打开操作修改位置如下: public static Str ...
最新文章
- docker安装gamit_Gamit-Globk完整安装攻略
- Java之品优购课程讲义_day19(6)
- HTML 文件在PC移动端完美自适应布局的技巧
- ARM7寄存器分布图
- java实用教程——组件及事件处理——处理事件
- 关于开发中的常用手段(个人建议)
- 各企业正在纷纷向“云”,背后有着哪些原因?
- springboot Autowired BeanNotOfRequiredTypeException
- 幻影机器人庄园参观路线_市委老干部局机关党员干部一行赴机器人小镇参观考察...
- 2015年4月27日---C语言:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!...
- 守护进程和inetd超级服务器
- java dom4j 写xml文件_Java实现——Dom4j读写XML文件
- 安卓系统怎么样不Root激活XPOSED框架的方法
- 台式计算机鼠标应该插哪里,鼠标插在电脑哪里 鼠标的usb接口没反应如何解决...
- 万字长文,知识图谱构建技术综述
- 中国科学数学模板如何在CTEX和texstudio中顺利运行
- 【董天一】什么是IPFS(三)
- c# 中通快递对接_C#快递鸟物流查询接口API对接调用源码
- python中pass与break区别
- 美颜sdk动态贴纸是什么?
热门文章
- Android Binder机制浅析
- matlab设计理想高斯巴特沃斯低通滤波器_方程推导:二阶有源带通滤波器设计!(下载:教程+原理图+视频+代码)...
- 汇编语言集成编译器android,辰灿汇编语言集成开发环境
- 58集团监控业务实践:将网站运行信息透明化
- 利用selenium模拟登录webqq
- 关于短信猫死机的问题程序要如何解决
- Render to Texture(渲染到纹理)
- 文件粉碎机c语言代码,VB写文件粉碎机
- linux某用户 计划任务,Linux计划任务管理
- 金山云服务器e1型,金山云-文档中心-重装系统