五子棋或连续五人棋盘游戏是由两个玩家在网格中用黑白石头玩的。能够连续放置5块石头(水平,垂直或对角线)的人将赢得比赛。
规则
在此KoTH中,我们将玩Swap2规则,这意味着游戏包含两个阶段:在初始阶段,两个玩家确定谁先打谁/谁打黑,然后从玩家开始每回合放置一块石头谁选了黑色。
初始阶段
让玩家成为A和B,A将打开游戏:
- A在板上放置了两个黑色和白色的石头
- B可以选择以下三个动作之一:
- 玩家B决定玩黑棋:初始阶段结束
- 玩家B决定放置白色石头并进行白色游戏:初始阶段结束
- 玩家B决定玩一个黑色和白色的石头:A可以选择颜色
游戏阶段
每位玩家将一块彩色的棋子放在棋盘上,从扮演黑色的棋手开始,直到没有更多的可用空间(在这种情况下是平局)或一位棋手设法在棋盘中玩枚棋子为止行(在这种情况下该玩家获胜)。
行表示水平,垂直或对角线。胜利就是胜利-玩家是否得分超过一排并不重要。
KoTH游戏规则
- 每个玩家对战两次:
- 最初将随机决定谁先
- 在接下来的游戏中,最后玩的玩家先行
- 一场胜利值得2分,平局1输0
- 目标是获得尽可能多的分数
你的机器人
为了使这一挑战适用于尽可能多的语言,将通过stdin / stdout(基于行)来进行输入 / 输出。判断程序将通过在您的机器人的stdin上打印一行来提示您的程序,而您的机器人将在stdout上打印一行。
收到EXIT
消息后,您将有半秒钟的时间来完成对文件的写入,然后法官将终止该过程。
随机性
为了使锦标赛可验证,裁判使用种子随机化,并且出于同样的原因,您的机器人也必须这样做。该机器人将通过应使用的命令行参数获得种子,请参考下一节。
争论
该漫游器接收两个命令行参数:
- 对手的名字
- 随机种子
用户状态
由于您的程序始终会针对每个游戏重新启动,因此您需要使用文件来保存要保留的所有信息。您可以在当前目录中读取/写入任何文件或创建/删除子文件夹。您无权访问任何父目录中的任何文件!
输入/输出格式
BOARD
((X,Y),COLOR)
X
Y
COLOR
"B"
"W"
SP
XY
(X,Y)
|
在初始阶段,有三种不同类型的消息:
Prompt (judge) -> Answer (bot)
"A" SP "[]" -> XY XY XY
"B" SP BOARD -> "B" | "W" SP XY | XY XY
"C" SP BOARD -> "B" | "W"
- 第一个消息要求三个元组,前两个将是黑色石头的位置,第三个是白色石头的位置。
- 第二条消息要求:
"B"
->选黑"W" SP XY
->选择白色并在上面放置白色石头XY
XY XY
->放置两块石头(第一块黑色和第二块白色)
- 最后一个只是询问您要播放哪种颜色
之后,常规游戏将开始,消息将变得更加简单
N BOARD -> XY
N
XY
还有另外一条消息,它不希望得到答案
"EXIT" SP NAME | "EXIT TIE"
NAME
获胜机器人的名称在哪里。如果游戏由于没有人获胜而没有更多的可用空间放置石头而结束,则将发送第二条消息(这意味着您的机器人无法命名TIE
)。
格式化
由于漫游器发出的消息可以不带任何空格地进行解码,因此所有空格都将被忽略(例如(0 , 0) (0,12)
,与相同(0,0)(0,12)
)。法官发来的消息仅包含一个空格,用于分隔不同的部分(即,如上文中用标记的SP
),您可以将行分隔为空格。
任何无效的回复都会导致该回合失败(您仍然会收到一条EXIT
消息),请参阅规则。
例
以下是一些实际消息的示例:
A []
B [((0,0),"B"),((0,1),"W"),((14,14),"B")]
1 [((0,0),"B"),((0,1),"W"),((1,0),"B"),((1,1),"W"),((14,14),"B")]
法官
您可以在此处找到评判程序:要在其中添加bot,只需在该bots
文件夹中创建一个新文件夹,然后将文件放在其中,然后添加一个meta
包含name,command,arguments和标志0/1的文件(禁用/启用 stderr)的文件。在单独的行上。
要运行锦标赛,只需运行./gomoku
并调试单个机器人运行./gomoku -d BOT
。
注意:您可以在Github存储库中找到有关如何设置和使用评判器的更多信息。还有三个示例机器人(Haskell,Python和JavaScript))。
规则
- 每次机器人更改*比赛将重新进行,并且得分最高的玩家将获胜(抢先赛是平局)
- 您可以提交多个机器人,只要它们没有采取共同的策略
- 您不得触摸目录外的文件(例如,操作其他播放器的文件)
- 如果您的漫游器崩溃或发送无效响应,则当前游戏将终止,您将失去该回合
- 尽管法官(目前)没有对每一轮实施时间限制,但建议您将花费的时间保持在低水平,因为这可能无法测试所有提交的内容 **
- 法官程序中的滥用错误被视为漏洞
*建议您使用Github直接在bots
目录中单独提交您的bot (并可能进行修改util.sh
)!
**万一出现问题,您会收到通知,我想说500ms以下的任何东西(很多!)现在都可以。
聊天室
如果您有任何疑问或想谈论此KoTH,请随时加入聊天室!