1、什么是ODK?
ODK的全称是Othello Development Kit,这是一套用来开发能够连接至GGS(the Generic Game Server
)的黑白棋的开发包。GGS是互联网上一台提供各种棋类游戏比赛的平台,ODK使用的只是其中的黑白棋部分
。连接GGS有很多种客户端,Windows平台上比较著名的是Lion。
如果你已经有了一个黑白棋程序,通过ODK可以在15分钟内将你的程序连接至GGS,同世界上很多程序和
用户进行对战。
2、如何使用ODK?
ODK大量使用了C++中的STL库,如字符串类、向量类、图类等。因此C++编译器是使用ODK的必要条件。理
论上任何C++编译器都可以使用,不过我只用Borland C++ Builder 6和Borland C++ Command Line Compiler
5.5试验过。如我自己写的mk.bat内容如下。
rem -------------
bcc32 main GetMove GGSMessage GGSObjects ggsstream ODKStream OsMessage OsObjects sockbuf
del *.obj
del *.tds
del *.bak
rem -------------
使用VC的朋友注意,选择“Project/Settings...”菜单,翻到“Link”页,将ws2_32.lib加入到你的工
程里,否则不能链接成功。另外,需要开启RTTI,翻到“C/C++”页,选择“category”到“C++ Language”
,选中“Enable Run-Time Type Information (RTTI)”。
您可以先编译一次以确认程序可以正常编译,然后还有一些地方需要修改,很快,您就可以连接到GGS上
了。
3、如何将自己的程序连接到GGS上?
这里需要对ODK中的两个文件进行修改。
1)main.cpp文件中
if (err = gs.Connect("external.nj.nec.com",5000)) {
这里的服务器改成opal.cs.ualberta.ca,ODK中原来那个可能也行,但Lion登陆的是opal.cs.ualberta.ca,
而Lion是不可缺少的,所以还是改了为好。
if (err = gs.Login("greedy","password")) {
这里的第一个参数改成你的用户名(最大8个字符),第二个参数改成你的密码。注:我没试过在用户名不存
在时是否能登陆,如果不行,可以用Lion申请一个。
2)ODKStream.cpp文件中
if (pmsg->sFrom=="n2") {
这里的“n2”要改成你的控制用户名。下面将解释这个控制用户名。
3)上述步骤完成后,再编译一下,如果通过编译,可运行一下看看效果,正常情况下应该能够连接上GGS
,并显示最新消息。
4、如何让你的程序和其他用户对战?
1)首先,您需要在GGS上拥有两个用户,是否注册好像无所谓。其中一个用于上述程序中,以程序登陆;
另一个用Lion登陆,这个就是控制用户名,用Lion登陆后,您应该可以在用户列表里看到您的程序用户名。
然后您应该和您的程序用户名对话(直接在用户名上点击一下就可以了),这样您的程序就会根据您的指令
来行事了。比如你输入“ta 8 ant”,稍等一会儿,您的程序就应该和ant开始下棋了。而输入“quit”后,
稍等一会儿,您就会看到你的程序退出了。(注:ant是GGS上一个常任程序,棋力不强,但也不弱。一般来
说刚刚接触GGS的用户都喜欢和它对战。顺便说一下,我的程序在GGS里的用户名是NowCan,如果您看到,也
可以和我的程序对战一局。)当然,现在您还没有把自己的走棋函数加入,而是用的ODK中的例子,所以勿庸
置疑,你的程序肯定下不赢ant。
2)将自己的智能模块加入ODK。这很容易,只要替换GetMove.cpp中的GetMove()函数即可。具体方法可以
参考ODK中的代码。替换这个函数后,你的程序就可以连接至GGS了。然后再和ant下一局看看。
3)有一个需要注意的地方,GGS虽然未注册也可进行比赛,但不能计成绩。而上面很多用户--特别是程
序用户--不接受不计成绩的比赛。因此,对某些用户的挑战可能对方不会接受,这个也没有办法,只能注
册。
5、ODK还有很多其他的细节,可以参考ODK附带的文档。