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

原文地址:https://www.cnblogs.com/euphoria/p/1401104.html