fuego源码分析1-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1235595
  • 博文数量: 76
  • 博客积分: 1959
  • 博客等级: 上尉
  • 技术积分: 2689
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-19 12:07
个人简介

樽中酒不空

文章分类

全部博文(76)

文章存档

2020年(4)

2019年(1)

2017年(2)

2016年(2)

2015年(7)

2014年(11)

2013年(13)

2012年(18)

2011年(2)

2010年(16)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: c/c

2012-04-28 12:25:26


在开源的围棋项目中,fuego应该是棋力最强的了。
使用很简单,这里主要分析一下代码。
代码是c 的,可以在gcc下编译,用vc2010稍稍修改一下也可以。这不是主要的,关键这么小的项目,也引入了boost,向手机上移植,一是稍麻烦一点,当然fuego已经成功移植到iphone上了。另外就是代码体积也庞大了一些。计划去掉boost,用标准c/c 修改成更通用一些。
fuego结构如下:
gtp是个通信协议,外挂一个界面,或双机对弈时使用。
smartgame是monte carlo utc核心算法
go是围棋相关功能,比如棋盘布局,棋子链表。
gouct是围棋算法,调用smartgame。
fuegomain是与外界的接口,通过gtpengine传入命令,传出结果。
用到boost的地方主要在gtpengine和smartgame。
gtpengine很简单,就是stream的通话。
这样,重点就在smartgame上。

主要代码流程:
main()
{.....
 sginit();
 goinit();
fuegomainengine engine(g_fixedboardsize, g_programpath, g_nohandicap);
.....
gtpinputstream in(cin);
gtpoutputstream out(cout);
engine.mainloop(in, out);
}
很明显,fuegomainengine是主要处理模块。
再:
class fuegomainengine
    : public gogtpengine
{
...
gouctcommands m_uctcommands;
}
明显看出,fuegomainengine接收命令,进行处理,再返回结果。

传入传出的命令遵守gtp协议。
到此,程序流程已经很清楚了,下一步开始分析命令,然后再进入算法。
看代码应该类似斯诺克,先轻轻一碰球,把握整体,再一一把球打进袋。用成语来解释,就是庖丁解牛。
阅读(4831) | 评论(0) | 转发(0) |
0

上一篇:vs2010下qt编程

下一篇:gnugo 3.8 内存问题

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图