您可能知道Conway的“生命游戏”,这是数学家John Conway发明的著名的细胞自动机。生命是一组规则,这些规则可以使您一起模拟二维的细胞板。这些规则决定了板上的哪些单元生存,哪些单元死亡。凭空想像,您可以说Life是一个零玩家游戏:一种旨在发现有趣行为模式的游戏,例如著名的滑翔机。
零人游戏...直到今天。您将编写一个程序,玩人生游戏-并玩赢山丘之王。您的对手(单数)当然会尝试这样做。获胜者要么是拥有任何活细胞的最后一个机器人,要么是10000代后活细胞最多的玩家。
游戏规则
这些规则与正常(B3 / S23)寿命几乎相同:
- 少于两个友好邻居的活细胞因饥饿而死亡。
- 具有两个或三个友好邻居的活细胞可以存活。
- 具有三个以上友好邻居的活细胞会因人口过多而死亡。
- 如果没有敌方邻居,则死者牢房中只有一个同一个玩家的三个邻居,可以为该玩家战斗。
...但是每一代人之后,您和您的对手都有机会进行干预。您最多可以唤醒30个细胞为您而战。(谁先走是由服务器决定的。)
面板是一个(x,y)单元格正方形。所有方块最初都死了。边界不环绕(这不是圆环状的世界),并且永久死了。
这是本着Battlebots和Core Wars精神进行的竞赛。有一个将运行机器人的中央服务器,可以在这里找到
协议
竞技场服务器使用通过argv通信的简单JSON协议
其中Values是JSON编码的字符串
y_size
:消失之前的最大y坐标x_size
:消失之前,瓦片的最大x坐标tick_id
:当前的刻度号board
:字典,键的形式为'(y,x)',值的形式为bot_id
(int)bot_id
:具有此ID的木板中的瓷砖是您的
例:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
告诉服务器您的选择:
- 向服务器发送一个瓷砖列表以转换为您的颜色。
- 只有那些空的将被更改
- 嵌套坐标列表格式
[[0,0], [0,1], [100,22]...]
注意:您的机器人完全不需要更新磁贴-服务器会自行更新
比赛规则
- 如果您的实现未能遵循该协议,那么该行为将被没收;服务器将保持状态不变
- 不允许您故意利用竞技场服务器中的故障。
- 让您的AI在合理的时间内决定动作。请尽快发送您的下一步行动。
- 最后,请对服务器友好。它在那里供您享受。
- 不遵守这些规则会导致失格。
- 如果出现平局,则两名玩家的总胜利数为1
自己运行控制器
控制器的源代码可以在这里找到。有两种运行控制器的方式:
- 竞赛模式(终端)
- 设置
python3 get_answers.py
- 每个机器人相互竞争,进行全面竞争。
- 设置
- 测试模式(GUI)
- 跑
python3 nice_gui.py
- 请点击
Pull Answers
- 如果要添加自己的答案以在发布前进行尝试,请单击
File -> Add manual answer
并找到文件,然后选择其书写语言。 - 如果您的语言不正确,请尝试在服务器上安装它,我将在其上运行(安装和运行说明也很不错!)
- 选择2个机器人互相对抗
- 请点击
Run
- 看比赛...
- 跑
- 安装
- 需要python3
- get_answers需要bs4和html5lib
- 控制器需要一种运行.sh文件的方式(Windows上的MinGW)
计分
从12/07/2016
(7月12日)14/07/2016
(7月14日,无法解决如何运行机器人)获胜最多的机器人。
可以在此聊天室中询问控制器/ GUI的帮助
自2014年以来,这个问题一直在开发中,并且是沙盒中提出最多的问题。特别感谢Wander Nauta(原始作者和概念),PPCG Chat(评论和帮助)以及在沙盒帖子中发表评论的任何人(更多评论)。