Renju 方案(draft)
Renju,这是一个程序驱动的连珠竞技平台.
目录
1.规则
2.竞技程序格式
3.竞技程序插件
4.代码
1.规则(讨论)
a.棋盘:19×19
b.无禁手
c.无交换
d.第一子不必落天元
e.每场比赛进行两次,每次比赛中棋手(程序)轮流执黑.只有两次全胜方可判胜;两次全负则判负.
f.若其中一竞赛程序落子于非有效位置(比如说棋盘外或此位置已落子),则此程序判负.
g.(未定)每一步棋限时5000 ms
h.(未定)和棋判断.(我的方案:其中一方提出和棋请求,另一方同意后则此盘棋判和棋,否则继续).
i.必须开放源代码.
2.竞技程序格式
a.(未定)每一枚竞技程序使用DLL格式,使用类似插件的方式,导出用于参与比赛的C++ Class.此Class由头文件Player.h提供.
务必使用如下函式,保证signature完全一致.
extern "C" Player* CreatePlayer(void);
服务器程序使用MinGW编译,因此目前推荐使用MinGW编译器,Visual C++ 6.0编译生成的DLL可能不兼容(TODO).
b.(讨论)或,有备选方案:使用socket完成两枚竞赛程序和服务器通讯,优点很多:可移植;编程语言不限C++;
缺点:我目前感觉竞赛程序可能要写成多线程+写端口select模式,否则竞赛程序可能会浪费时间.这样就会增加竞赛程序额外的复杂程度.
3.竞技程序插件
a.提供人机交互对战的DLL配接器(TODO)
b.提供局域网对战的DLL配接器(TODO)
4.目前的服务器程序在此:Renju