1、1GNU Go 中文文档1 介绍GNU Go 3.8是围棋对弈程序,其开发中的版本位于http:/www.gnu.org/software/gnugo/devel.html 可供下载研究。如果有兴趣支持本项目,可联系 gnugognu.org。1.1 关于 GNU Go和本手册挑战电脑围棋的目的不是打败电脑而是对计算机编程。在电脑象棋领域,实力较强的电脑程序已经有能力参与最高级别的比赛,甚至挑战像卡斯帕罗夫这样的棋手。目前尚没有相当于顶级棋手实力的电脑围棋程序。确切地说,已有的电脑围棋程序的实力已经足可作为一个对手,写出一个真正强大的程序前景乐观。特别是看到 MC方法的成功和新近电脑围棋的进展
2、。直到如今,围棋程序始终是只以目标二进制码方式发布的。这些程序中的算法都是保密的。除了作者没人能够对此进行检查和褒贬。结果任何一个想投身电脑围棋的人都必须一切从头开始。这也许就是围棋程序至今未能达到一个更高水平的原因。与大多数围棋程序不同,GNU Go 是自由软件。它的算法和源码都是随文档公开的,任何人都可以免费地用作研究和扩展。希望这种自由可以给 GNU Go带来更强的竞争优势。本文档是 GNU Go的手册。无疑这里会有不准确的地方,最终的文档包含在源码及其注释中。本手册开始的三章是面向普通用户的。第三章是用户指南。本书的其他部分是面向编程者,或对 GNU Go的内核好奇的人。第四章是引擎的
3、总览。第五章介绍深入 GNU Go引擎并探知其为何走出某一手棋的各种工具。第六到第七章是 GNU Go API的程序员参考手册。余下的几章更详细地深入 GNU Go内部的各个方面。1.2 版权除以下注明的以外,1999、2000、2001、2002、2003、2004、2005、2006、2007 和2008版权属于自由软件组织。所有文件都在 GNU General Public License下(参见 A.1 GNU GENERAL PUBLIC LICENSE),“gmp.c“、”gmp.h“、”gtp.c“、”gtp.h“除外。文件“gtp.c”和“gtp.h”版权归属自由软件组织。为推
4、广 GTP协议这两个文件在较GPL更宽松的许可下,可无限制自由使用(参见 A.7 The Go Text Protocol License)。文件“gmp.c”和“gmp.h”由其作者 William Shubert发布到公共域上,可无限制自由使用。文档文件(包括本手册)依据 GNU自由文档许可(GNU FDL,参见附录许可全文,1.3或更新版本)发布。文件“regression/games/golois/*sgf”版权属于 Tristan Cazenave授权包含。“regression/games/handtalk/”中的 SGF文件版权属于 Jessie Annala授权包含。“regr
5、ession/games/mertin13x13/”中的 SGF文件版权属于 Stefan Mertin授权包含。其余的 SGF文件版权属于 FSF或公共域。1.3 作者2GNU Go由 Daniel Bump、Gunnar Farneback 和 Arend Bayer维护。GNU Go 作者(按贡献顺序排列)是 Man Li、Wayne Iba、Daniel Bump、David Denholm、Gunnar Farnebck、Nils Lohner、Jerome Dumonteil、Tommy Thorn、Nicklas Ekstrand、Inge Wallin、Thomas Trabe
6、r、Douglas Ridgway、Teun Burgers、Tanguy Urvoy、Thien-Thi Nguyen、Heikki Levanto、Mark Vytlacil、Adriaan van Kessel、Wolfgang Manner、Jens Yllman、Don Dailey、Mns Ullerstam、Arend Bayer、Trevor Morris、Evan Berggren Daniel、Fernando Portela、Paul Pogonyshev、S.P. Lee、Stephane Nicolet 和 Martin Holters、Grzegorz Leszcz
7、ynski 和 Lee Fisher。1.4 致谢应当感谢 Arthur Britto、David Doshay、Tim Hunt、Matthias Krings、Piotr Lakomy、Paul Leonard、Jean-Louis Martineau、Andreas Roever 和 Pierce Wetter的相关支持。感谢所有遇到 bug(并报告)的人!感谢 Gary Boos、Peter Gucwa、Martijn van der Kooij、Michael Margolis、Trevor Morris、Mns Ullerstam、Don Wagner 和 Yin Zheng在 V
8、isual C+方面提供的帮助。感谢 Alan Crossman、Stephan Somogyi、Pierce Wetter 和 Mathias Wagner在 Macintosh提供的帮助。感谢 Marco Scheurer和 Shigeru Mabuchi帮助发现了很多问题。感谢 Jessie Annala在手谈程序上的帮助。特别感谢 Ebba Berggren创建了标志,在 Tanguy Urvoy的设计基础上并得到了 Alan Crossman的建议。 旧的 GNU Go标志来自 Jamal Hannah的字体,见:http:/www.gnu.org/graphics/atypingg
9、nu.html。这两个标志可以在”doc/newlogo.*”和”doc/oldlogo.*”找到。还要感谢 Stuart Cracraft、Richard Stallman 和 Man Lung Li使本程序成为 GNU的一部分,William Shubert 写了 Cgoban和 gmp.c,Rene Grothmann 写了 Jago,Erik van Riper和合作者写了 NNGS。1.5 GNU Go任务表 你可以帮助使 GNU Go成为最好的围棋程序。这是一个为所有有兴趣帮助 GNU Go的人列出的任务表。如果你想在这个项目上投入工作,应先联系并在这个特性如何工作达成共识!版权说
10、明:自由软件组织拥有 GNU Go的版权,因此在你的代码被 GNU Go的官方发布中被接受之前,自由软件组织会要求你签署一个版权协议。当然你也可以在不签署版权协议的情况下开发一个变体版本。在同时发布源码的前提下,你也可以依据 GPL发布你的变体版本(参见 A.1 GNU GENERAL PUBLIC LICENSE)。但如果你希望你的变动加入到发布的版本上,就需要签署版权协议。要获取更多的信息和版权协议文本请联系 GNU Go维护者 Daniel Bump (bumpsporadic.stanford.edu)和 Gunnar Farnebck(gunnarlysator.liu.se)。以下
11、是你可以参与的任务列表。其中的一些任务已经开始,但这并不妨碍你的加入。更多的讨论请与开发团队或已经参与任务的人联系。1.5.1 总体如果可能,报告发现的问题和修订。发现问题后,查明其原因并提出修改方法,发出一个补丁。如果你发现一个有趣的问题但不知道如何修补,也请告知。附带 sgf 文件(如3果可能)和附带相关信息,如 GNU Go版本号。在发生终止错误或段保护故障时可能需要知道你使用的操作系统和编译器以确定问题是否与平台相关。1.5.2 小项目这些项目是战术性的,即它们关注引擎的一些特性或基础结构。其中一些是相当小的,一个有经验的 GNU Go编程者可能在一天内就可以完成。对于新的项目成员来说
12、这也可能是很有用的开端。另一些较大并需要对引擎内部更深入的了解。这些问题按大致的复杂程度列出。在 patterns/mkpat.c中增加更多的测试,保证主图和限制图的一致性。从棋谱中分离并生成独立文件。这任务自 3.1.16就已经开始了。在 worms.c的其他地方已经使用了棋谱,存储提子、逃跑、叫吃和征子。实现着手列表象棋串那样存储棋块的关键着手和眼位。后手眼已经完成一半。存出了着手但没有存储攻防代码(LOSE、KO_A、KO_B 和 WIN)。使 cache系统在 64位系统上不浪费内存。棋块数据分为两个数组保存:dragon和 dragon2。每块活棋在数组 dragon2中只有一个入口
13、,而数组 dragon保存棋盘上每个点的数据。使用数组 dragon2相同结构完成眼、一眼、死棋、活棋数据的转换。在 eyes.db和 optics.c支持劫争。用“clock.c”中的自动分级代码将时间操作集成到 play_gtp.c中;或者,将它们用更好的代码替换。将其基于更坚固的系统识别理论和/或控制理论并无坏处。写代码片断按定式库走棋,并检查引擎在数据库的所有位置都生成了定式手。这也会使得“-nojosekidb”选项运行时会更有趣。1.5.3 长期项目这些项目是战略性的。它们可以帮助提高程序的对弈水平和/或加强特定的一些方面。扩展回归测试包。参见 doc目录下的 texinfo手册了
14、解如何去做。测试包在解决普通的死活问题时特别有用。现在已经有效地覆盖了二路棋形、L 形和三角形,但举个例子说对于梳形、小曲尺形等等都没做任何事情。其他需要测试包的地方有 fuseki、tesuji 和 endgame。调整模式数据库这是经常性的修正。调整它们是一种艺术。大多数模式不需要辅助工具,所以不需要任何编程工作。希望再多几个上段棋手学会这项技术。扩展和调整定式数据库一个半自动做这项工作方法会非常有用。目前基于 sgf文件的方式采用已有工具维护变得很困难。对杀仍然需要改进(正在进行)。GNU Go没有确切生成做模样或侵消/打入对方模样的着法。这种着法生成可以使用在owl死活识别或连接识别第
15、 5点中相同的代码实现。进一步改进的组合模块现在的组合模块只识别提掉对手棋群的组合。更有用的组合例如识别叫吃棋块或打入对方地域。如果能识别战略着法和更间接攻击(威胁之威胁)则会更加强大。可能可以用AND-OR树(DAG?)表示攻击组合,使其可以用二叉树搜索算法搜索(“combination.c”;的修补正在进行)。加速战术识别GNU Go在战术识别中已经相当准确,但并不总是很快。主要问题是试验了太多的无用4手,和无需考虑的怪招。可以使着法生成的启发更为精炼来提升,也可以优化 alpha-beta识别中的标准树搜索算法。提高棋块安全识别的启发这可能要考虑眼/后手眼、角上的模样、边上的模样、中间的
16、模样、与临近活棋的接近程度、对方块棋等。能够准确的判定一手棋如何影响棋盘上所有棋群的安全特别有趣。1.5.4 思想 有许多思想来自邮件列表。一些是现实的,一些只是海市蜃楼。在此列出以示鼓励。一个好的 GUIGoThic已经做了一个开端,是基于 QT工具包的 goban widget。这已经连接到了 GNU Go在 gnu.org上的开发网站。其他的还有基于 GTK但仅是开始。一个图形模式编辑器这将使得非程序员可以很方便的提升 GNU Go的实力。也可以被程序员用作除错工具。这个项目是以 GUI为前提。这里的挑战是需要一个不仅可以方便地创建模式,还可以方便地浏览和维护数据库的工具。保证引擎线程安
17、全并在 SMP计算机上使用多 CPU。使引擎使用松散地连接在 internet或群组的许多计算机。在对手的用时中计算。全局的 alpha-beta识别。这将会非常慢只能计算 2到 3步,但这可以发现致命的错误并提升 GNU Go的着法生成。战略模块战略模块识别高级目标并转给引擎的其他部分。应当识别是否进入厚势、是否保守行棋或是否冒险(例如形势落后时)。也能够识别可攻击或防守的弱区域。这样的模块也许没有必要用 C编写,也许 PROLOG、LISP 或其他 AI语言更好。一个使得 GNU Go以不同风格行棋的参数这样的风格可能是“取势”、“攻击”、“欺招”等。这就可以为人类对手提供不同的对手或告知
18、 GNU Go在比赛中如何对付特定的电脑对手。形象化表示攻击使得可以有一个可以检索的攻击图形化表示,察看不同攻击的相互影响。基于组合对局理论的终盘模块要使其真正有用应当能够处理较早的终盘位置。自动的定式调整手工的定式调整非常困难。我应该鼓励有兴趣用 GNU Go做机器学习试验的人们在定式上做工作。这可能是最有可能获得重要价值和快速提高的领域。分类更精确的劫争创建各种劫争的样式并以代码实现操作。2 安装从 ftp.gnu.org或其镜象站点上可以获取 GNU Go的最新版本(参见http:/www.gnu.org/order/ftp.html镜象列表)。可以在http:/www.gnu.org/
19、software/gnugo/阅读最新版本和其他信息。2.1 GNU/Linux and Unix5Untar源码,更换到 gnugo-3.6目录。执行:./configure OPTIONSmake下一节将解释几个配置选项。除非你对 GNU Go的性能不满意或想做一些试验,你不需要设置选项。如:./configure -enable-level=9 -enable-cosmic-gnugo将生成的目标程序默认级别为 9,试验选项“cosmic”被使能。运行./configure -help可以取得选项列表。更多的信息在下一节介绍(参见 2.2配置选项)。运行配置和制作结束后,得到一个名为”i
20、nterface/gnugo”文件,以 root身份键入:make install将 gnugo安装到”/usr/local/bin”。使用 GNU Go有多种方法。你可以从命令行键入:gnugo但更好的方式是在 X-Windows下运行 CGoban 1,或在 Java环境下运行 Jago或使用其他提供图形界面的客户端程序。你可以从 http:/ Cgoban 1的最新版本,早期的版本 1.12可在 http:/www.igoweb.org/wms/comp/cgoban/index.html获取。Cgoban版本号必须在 1.9.1以上否则无法运行。CGoban 2 无法运行。参见 3.2
21、通过 Cgoban运行 GNU Go获取如何在 Cgoban下运行 GNU Go的方法,或参见3.3其他客户端获取如何在 Jago下运行 GNU Go的方法。2.2 配置选项配置时,特别是对 GNU Go的性能不满意的时候,可以考虑三个选项。2.2.1 缓存GNU Go默认在 RAM中开辟 8M缓存供内部使用,缓存用来存储局面分析时的中间结果。增加缓存经常可在一定程度提高速度,如果你的系统内存充裕,可考虑增加缓存数量。但缓存太大的话就会发生页面交换,导致硬盘动作而降低性能。如果硬盘看起来超负荷工作,则标明缓存可能太大了。在 GNU/Linux系统中。可以用程序 “top” 检测页面交换动作,用
22、”f” 命令切换交换显示。在编译时运行以下命令之一即可重定义缓存:./configure -enable-cache-size=n将缓存设定为 n M,例如:./configure -enable-cache-size=32创建缓存为 32 M。如果省略则默认为 8 MB。重新配置 GNU Go后必须用 make 和 make install重新编译安装。带选项”-cache-size n”运行 gnugo可重定义编译时刻的默认值,n 是所需要的缓存数量,或在选项后表示所需级别。下章会详细介绍参数的设定。 2.2.2 默认级别GNU Go可以按不同级别对弈,最多可分 10级。 在 10级时 G
23、NU Go更为精确但用时大约比 8级平均多 1.6倍。 可以在运行时刻用选项”-level” 设定级别,如果没有设定,则采用默认级别。用配置选项”-enable-level=n” 可设定默认级别。例如:6./configure -enable-level=9将默认级别设定为 9。如果省略这个参数,编译器设定默认级别为 10。建议除非太慢都使用 10级。如果决定需要修改默认值,可重新执行配置和编译。 2.2.3 DFA 配置选项GNU Go采用两种不同的方式实现模式匹配,DFA (Discrete Finite-state Automata,离散有限状态自动机)在 GNU Go 3.0 时为实验
24、项目,现在已经成为标准。可以用配置选项./configure -disable-dfa 禁止。该选项使得调试困难,但速度明显比原来的匹配器快(参见 10DFA模式匹配)。 2.2.4 其他选项引擎中所有新项目一般都以实验选项测试,在编译时刻或运行时刻可以打开或关闭。一些“实验”选项,如打入代码和对杀代码已经不再是实验性的了,默认是打开的。除非对实验选项感兴趣,否则可跳过本节。 而且一些实验选项在稳定版中去掉了,例如 owl扩展代码会导致崩溃,所以 3.6中选项-enable-experimental-owl-ext 被禁止了。需要澄清“默认”一词,因为这里实际有两套默认参数: “config.
25、h” 定义的运行时刻参数和 “configure” 定义的编译时刻参数(编辑 “configure.in” 并运行autoconf 创建)。例如在”config.h” 中:/* Center oriented influence. Disabled by default. */#define COSMIC_GNUGO 0/* Break-in module. Enabled by default. */#define USE_BREAK_IN 1这意味着默认禁止实验性的 cosmic选项,该选项使 GNU GO致力于在中心行棋(使得引擎变弱),但使用打入模块。这些参数在 GNU GO不带参数运
26、行时使用,可被运行时刻参数取代: gnugo -cosmic-gnugo -without-break-in也可以这样配置 GNU Go :./configure -enable-cosmic-gnugo -disable-experimental-break-in然后重新编译 GNU Go。这就改变了”config.h” 的默认配置,在运行时刻就不必再向 GNU Go传递运行时刻参数打开 cosmic选项,禁止打入代码了。 如果想找出那些实验性选项编译进了 GNU Go二进制代码中,可以运行 gnugo -options 。以下是 GNU Go实验性选项列表: experimental-br
27、eak-in. 实验性的打入代码(参见 13.10打入)。打入代码在 10级默认有效,9 级禁止,所以可能不需要配置,如果不需要打入代码就在 9级对弈。 cosmic-gnugo. 一种注重中央的实验性棋风,对标准的 GNU Go胜率较高,但对其他对手变弱。 large-scale. 试图大规模捕杀。原理参见http:/lists.gnu.org/archive/html/gnugo-devel/2003-07/msg00209.html 该选项会使引擎变慢。 metamachine. 使能,运行复制一个新的 gnugo 进程作为“专家”的实验性选项。需要与运行时刻参数”metamachine
28、” 同时使用。其他参数不是实验性的,可以像配置选项或运行时刻选项一样修改。 chinese-rules 使用中国规则数子法 resignation-allowed 允许 GNU Go认输,默认打开。2.3 在微软平台下编译 GNU Go7GNU Go是在 Unix变体下开发的,GNU Go 很容易在这些平台上构造和安装。GNU Go 3.6支持在 MS-DOS、Windows 3.x、Windows NT/2000 和 Windows 95/98构造。在微软平台下构造 GNU Go有两种方法:1.第一种方法是安装一个基于 GCC在微软平台上移植版本的类 Unix环境。这一方法被GNU Go开发
29、者完全支持并工作得很好。针对微软平台有几个高质量的免费类 Unix环境。 这种方法的一个好处是可以很容易地参与 Gnu Go的开发。这些 unix环境以”diff”和”patch”程序提供生成和应用补丁。 Unix环境另一个好处是同样可以构件开发版本(这种版本可能比最新的稳定版本更强)。对 VC的支持文件并不总能有效工作,而开发版本经常会失去同步,所以 VC不能无错地构造。2.第二种方法是使用象 Visual C这样专门面向微软平台的开发工具。GNU Go 2.6 和以后版本支持 Visual C。现在在发布中提供工程文件以支持 Visual C。 这节余下的提供在微软平台上编译 GNU go
30、的具体方法。2.3.1 Win 95/98、MS-DOS 和 Win 3.x下使用 DJGPP在这些平台上可以使用 DJGPP,GNU Go 安装在 Windows 95/98长文件名的 DOS窗口测试成功。GNU Go 可以使用 GCC的 DJGPP移植版本按标准 Unix构造和安装程序编译。一些 DJGPP的 URL:DJGPP主页:http:/ simtel上的 ftp:ftp:/ ftp:/ 一旦你有一个 DJGPP工作环境,并下载了 gnugo源码如 gnugo-3.6.tar.gz,你可以按如下方式构造可执行文件:tar zxvf gnugo-3.6.tar.gzcd gnugo-
31、3.6./configuremake作为选项你可以下载 DJGPP的 glib得到 snprintf的工作版本。2.3.2 Windows NT/95/98下使用 Cygwin在这些平台上可以安装 Cygwin环境。最近的 Cygwin版本带有安装程序,安装非常容易。其主页 http:/ Go 在 Cygwin环境下用标准的Unix构造过程编译。安装 cygwin并取得”gnugo-3.6.tar.gz”后,键入:tar zxvf gnugo-3.6.tar.gzcd gnugo-3.6./configuremake生成的可执行文件不能独立运行:它需要 cygwin1.dll和 Cygwin环
32、境。cygwin1.dll包含了 Unix的仿真层。Cygwin主页:http:/ glib获取 snprintf的工作版本。Glib 不在 cygwin内。2.3.3 Windows NT/95/98下使用 MinGW32Cygwin环境还带有 MinGW32。这生成一个可执行文件仅依赖于微软的 DLL。这可执行文件与 Visual C的可执行文件相当,比 Cygwin可执行文件更容易发布。在 cygwin上构造一个适应 win32平台的可执行文件键入:8tar zxvf gnugo-3.6.tar.gzcd gnugo-3.6env CC=“gcc -mno-cygwin” ./confi
33、guremake生成的可执行代码用 cygwin安装程序中的 upx压缩可以大大减小尺寸。2.3.4 Windows NT/95/98使用 Visual C和工程文件假设你不想改变配置选项。如果需要则要编辑”config.vc”。注意 configure运行时,该文件被”config.vcin”的内容覆盖,因此你也可以编辑”config.vcin”,以下指令并不需要运行 configure。1.打开 VC+ 6 workspace 文件 gnugo.dsw。2.将 gnugo工程设为活动工程(右击并选择“Set as Active Project”),在主菜单选择“Build”,再选“Buil
34、d gnugo.exe”,即可构造所有运行时间子工程。注意:a)构造也可以从命令行启动:msdev gnugo.dsw /make “gnugo - Win32 Release“b)默认的配置为“Debug”,要构造优化版本在主菜单上选择“Build”,再选“Set active Configuration”并点击“gnugo - Win32 Release”。参见 Visual Studio help获得更多的项目配置信息。c)在构造的第一个独立子工程(utils)中复制 config.vc到根目录的 config.h。如果你想修改 config.h,要把所有更改都写到 config.vc。
35、特别地,如果你想修改默认级别或默认的缓冲尺寸,你必须编辑此文件,具体的效果参见 2.1GNU/Linux and Unix。d)本工程用 VC 6.0版本构造和测试。没有在 VC的早期版本上经过测试,几乎不能够工作。2.3.5 Windows NT/95/98下运行 GNU GoGNU Go不带自己的图形用户接口。可以使用 Java客户端程序 jago。运行 Jago需要 Java运行时环境(JRE)。可以从 http:/ Java开发工具包(JDK)中的运行时部分,包括 Java虚拟机、Java 平台核类和支持文件。IE 5.0随带的 Java虚拟机也能工作。 Jago: http:/www
36、.rene-grothmann.de/jago/ 1.用 gnugo -quiet -mode gmp启动 GNU Go2.从 cygwin或 DOS窗口运行 gnugo -help 获取选项列表 3.作为选项定义-level 使对局更快 Jago对于 Cygwin和 MinGW32执行文件都很快。DJGPP 执行文件也能工作,但同在对局结束和数子时同 jago有些配合问题。2.4 Macintosh如果你有 Mac OS X,你可以用源自 GCC的 Apple编译器编译 GNU Go。建议加上-no-cpp-precom的 CFLAGS标志。3 使用 GNU Go3.1 获取文档在“doc/
37、”目录下运行 make gnugo.ps可打印出生成的操作手册打印件。该手册包含了 GNU Go大量的算法信息。在其他支持 info文档的平台,可(以根身份)从“doc/”目录执行”make install”9安装操作手册。Info 文档可以方便地在 Emacs中执行指令 Control-h i阅读。“doc/”中的文档包括一个 man页“gnugo.6”、info 文件“gnugo.info”、“gnugo.info-1”,等以及可生成 info文件的 Texinfo文件。Texinfo 文件包含本用户指南和向开发者提供的 GNU Go算法的扩展信息。如果需要一份 Texinfo打印件,可以
38、在“doc/”目录中 make gnugo.dvi或 make gnugo.ps。 (make gnugo.pdf 仅当用 epstopdf之类程序将 doc/下所有.eps 文件转换为.pdf 文件后才可用)。可用指令制作 makeinfo -html gnugo.texi一个 HTML版本,可用 texi2html -split_chapter gnugo.texi生成更好的 HTML文档。你可以从http:/www.mathematik.uni-kl.de/obachman/Texi2html/ 获取 texi2html工具(版本1.61或更新)(参见 http:/texinfo.org
39、/texi2html/ 。)可从任何终端或上执行 gnugo -help或 man gnugo,或从 Texinfo文档中获取用户文档。开发者文档为 Texinfo文档,在源码中注解。如果你有兴趣在开发本程序中提供帮助请联系 gnugognu.org。3.2 通过 Cgoban运行 GNU GoWilliam Shubert写了两个不同的程序,都叫做 CGoban,本文档中 CGoban指旧版本CGoban 1.x,现在有版本 1.12或更高的。CGoban是一个特别好的运行 GNU Go的方法。Cgoban 在 X-Windows下提供良好的图形界面。启动 Cgoban。当 Cgoban控制
40、面板出现后,选择“Go Modem”,你可以得到 Go Modem安装,选择对弈一方(或双方)为“Program”,在框中填入 gnugo的路径。点击 OK后得到对局设置窗口,选择“Rules Set”为 Japanese(否则让子无法工作),按你需要设置棋盘尺寸和让子。如果你想下贴子棋,你需要忍受的是 GMP不提供贴子的交换。由于这个缺点,除非你在命令行上设置了贴子,否则 GNU Go只能去猜。分先贴子是 5.5,让子棋是 0.5。如果这不是你需要的,你可以在 Go Modem协议设置窗口的命令行上加上”-komi”选项,你只能在下次对局设置窗口出现时重新设置贴子。 准备好对弈后点击 OK。
41、在 Go Modem协议设置窗口,当你设置 GNU Go的路径时,可以给出命令行选项,如”-quiet”屏蔽大多数信息。由于占用了标准 I/O,其他信息都送到了 stderr,无论它们是否是真的错误信息。这会在你启动 Cgoban的窗口上显示。3.3 其他客户端除 CGoban (参见 3.2通过 Cgoban运行 GNU Go)外,还有许多可以运行 GNU Go的客户端程序。这里列出已知的自由软件。另外在http:/www.gnu.org/software/gnugo/free_go_software.html 中还维护了一个围棋程序的大列表。 qGo (http:/ ) 是一个全功能的客户
42、端程序、支持服务器端对弈、SGF 查看/编辑和 GNU Go客户端,采用 C+编程,运行环境GNU/Linux、Windows 和 Mac OS X。可选择一方对弈。GPL 和 QPL许可。 glGo (http:/ ) Peter Strempel编写的 C+客户端程序,可以与 GNU Go对弈或在 IGS上对弈。在 GPL下提供源码。 ccGo (http:/ccdw.org/cjj/prog/ccgo/ ) 是 GPL下客户端,用 C+编制,可以与GNU Go对弈或在 IGS上对弈。10 RubyGo (http:/rubygo.rubyforge.org/ ) 是 GPL下客户端,由
43、J.-F. Menon用脚本语言 Ruby为 IGS编写。RubyGo 可以使用 GTP与 GNU对弈。 Dingoui (http:/ )是一个自由的 GTK下 GMP客户端,可以运行 GNU Go。 Jago (http:/www.rene-grothmann.de/jago/ ) 是 GPL下 Java客户端,在Microsoft Windows和 X-Window下都能运行。 Sente Software的 FreeGoban (http:/www.sente.ch/software/goban/freegoban.html ) 是颇受欢迎的 GNU Go (可能还有其他程序)的用户接
44、口。GPL 许可。 Mac GNU Go (http:/www1.u-netsurf.ne.jp/future/HTML/macgnugo.htm )是一个GNU Go 3.2的前端,有英文版和日文版。GPL 许可。 Quickiego (http:/ )是一个 GNU Go 2.6的 Mac接口。 Markus Enzenberger编写的 Gogui (http:/ ) 是一个 Java工具,支持 gtp (http:/www.lysator.liu.se/gunnar/gtp) 引擎如 GNU Go。源码在 CVS (http:/ GPL 许可。Gogui 不支持gmp或服务器端对弈,但
45、可能对 GNU Go或其他引擎的程序员很有用。 gGo是一个 Java程序最初名为 qGo for Java。尽管程序的公开源码不再维护了,但仍很有用,可在 sourceforge(http:/ ) 或(ftp:/ )找到。GGo 可作为客户端或 sgf编辑器,支持 GTP,可以进行服务器对弈也可与 GNU Go对弈。GPL 许可。 Quarry (http:/home.gna.org/quarry/ ) 是支持 GTP的 GPL客户端。运行于GNU/Linux下,需要 GTK+ 2.x和 librsvg 2.5支持。支持 GNU Go和其他引擎。不仅可以下围棋,还可以下其他一些棋盘游戏。 G
46、oben (http:/www.waz.easynet.co.uk/software.html )是一个使用 Wayne Myers 的 GTK 库的 GTP前端。GPL 许可。3.4 ASCII接口即使你没有安装 Cgoban你也可以以其默认的 ASCII接口启动 GNU Go。简单在命令行输入 gnugo,GNU Go 会画出一个棋盘。键入 help可以得到一个选项列表。对局结束两次pass,GNU Go 就会提示你数子。你和 GNU Go必须对死子达成一致。你可以同意更替要取走的死子状态,结束后 GNU Go会报告结果。你可以在对局的任何时候使用 save filename指令保存棋局。
47、你可以用指令 gnugo -l filename -mode ascii从该指令生成的 SGF文件重装棋局。在使用 Cgoban对局中不允许重装棋局。你可以用 Cgoban存储一个文件,再在 ascii方式下重装。3.5 Emacs 的 GNU Go模式GNU Go可以在 Emacs中运行,并且可以用光标键或鼠标落子。Emacs 版本 21以上支持图形化棋盘显示。用 M-x load-file命令装入”interface/gnugo.el”,如果使用图形化棋盘再装入”interface/gnugo-xpms.el”。 细节:Emacs 使用控制键和换档键,换档键在 PC键盘上是 Alt键。控制键和换档键分别用“C-”和“M-”表示,M-x 表示按住 Alt键再按 x,在 Emacs 中这提示输入下调命令。输入 load-file并回车,接着输入到达“interface/gnugo.el” 的路径,再次按回车并重复该过程装入“interface/gnugo=xpms.el”11如果想要“interface/gnugo.el”和“interface/gnugo-xpms.el”这两个在运行Emacs是自动装入,可将它们复制到”site-lisp”目录(一般是“/usr/share/emacs/site-lisp”)并在“.emacs”文件中加入以下两行:(au