Skip to content

详细规则及边界情况

游戏基本信息

  • 双人游戏,双方玩家分为先后手。两个玩家轮流行动,依次操作自己的每一条蛇。游戏在一个16*16的正方形地图上进行。

初始设置

  • 每方只有一条蛇,蛇的长度为1,先手出生在左上角,后手出生在右下角。播放器中先手为黄色,后手为蓝色

  • 最开始的8个回合内,玩家的初始蛇(分裂后原蛇头所在的那部分)每移动一次长度+1(如果在前8回合中的某一回合让初始蛇使用道具或者分裂,不移动,则视为放弃这回合的增益)。如果初始蛇死亡或固化则增益消失。

  • 玩家知道的信息有:实时地图信息(包括双方蛇的位置),游戏从开始到结束所有道具的位置、出现时间、道具类型(包括长度、融化两种)和与该类型相关的参数。道具数据会在游戏开始前全部发送给玩家(人类玩家可以拖动小地图下方的进度条来获取这些数据的图形化表示)。每个道具将在地图上存在16回合。

游戏进行过程

  • 每回合玩家的每一条蛇必须在移动分裂使用融化射线之间三选一。

  • 移动

    • 方向为三个合法方向(蛇头前方、左转、右转)之一。特别地,对于长度为1或长度为2且长度银行为0的蛇,由于回头不会撞到自己的身体,上下左右四个方向都是合法移动方向。对AI而言,向非法方向移动会直接在当前半场中判负,记为0分。对人类玩家而言,播放器会禁用相关按钮及快捷键。
    • 移动落点是墙或另一条蛇时,不论另一条蛇属于己方还是对方, 移动均不合法。做出非法移动的蛇死亡,效果为整条蛇立即消失 。
    • 移动落点是当前蛇蛇身除蛇尾之外的部分,则直接触发固化。具体而言,蛇头与所撞到的蛇身围成的闭合区域固化形成己方墙壁,蛇身其余部分消失。注意如果长度银行不为0,则移动到自身蛇尾也会触发固化,换言之,结算时先结算长度银行,再判断是否触发固化。显然,长度小于等于4的蛇无论如何也无法触发固化。固化区域内双方所有的蛇都判定为死亡。
    • 移动落点为地图外时,直接判定这条蛇死亡,效果为整条蛇立即消失。
    • 移动落点为任意一方墙壁时,直接判定这条蛇死亡,效果为整条蛇立即消失。
  • 分裂

    • 将蛇一分为二(头部的蛇长度为原长度的一半向上取整,尾部的则向下取整)。长度为1的蛇禁止分裂。
    • 头部形成的蛇蛇头为分裂前的蛇头,尾部形成的蛇蛇头为分裂前的蛇尾。
    • 分裂后,尾部形成的蛇永远比头部形成的蛇后行动。具体而言,某一方的蛇的移动顺序通过一个链表来存储,分裂相当于在链表中把原蛇尾那一部分对应的新蛇被插入原蛇的后方。
    • 分裂前这条蛇携带的所有未使用道具归属于原头部,而“长度银行”内的长度则归属于原尾部。
    • 任何时刻任何一方在地图上最多有4条蛇。如果AI在己方已有4条蛇的情况下试图分裂,则直接在当前半场中判负,记为0分。对人类玩家而言,蛇的数量达到上限之后,播放器中分裂相关按钮和快捷键会被禁用,不会产生影响。
  • 关于长度道具

    • 把获得的长度存入该蛇的“长度银行”,每次合法移动之后从“长度银行”中取出1个单位的长度添加到蛇身上。长度银行属于被动作用,不占据移动机会。如果长度道具在回合开始时恰好出现在蛇身上,则该回合蛇就会增长。
  • 融化射线

    • 可以一次性将这条蛇蛇头行进方向延长线上的所有墙壁(不分敌我)摧毁。融化射线对命中的蛇没有影响。
    • 仅限长度大于等于2的蛇使用。如果试图让长度为1的蛇使用融化射线,对AI而言,会直接在当前半场中判负,记为0分。对人类玩家而言,播放器会禁用相关按钮和快捷键。
    • 如果AI试图让没有融化射线的蛇使用融化射线道具,那么直接在当前半场中判负,记为0分。对人类玩家而言,播放器会禁用相关按钮和快捷键。
    • 让已经有融化道具的蛇吃到新的融化道具,将会用新的融化道具取代旧的融化道具。换言之,融化道具之多有1个,数量不能累加。
  • 回合结算流程

  • 回合结算流程如下

    1. 本回合新生成的道具出现在地图上,已经存在16回合的道具消失。
    2. 落在蛇身上的道具直接判定为被吃掉。也就是说,这里吃到的融化射线本回合即可使用;而如果吃到长度道具,则其立即加入长度银行,本回合如果选择移动则发生增长。
    3. 玩家对蛇进行操作,选择移动,分裂或使用融化射线。
    4. 如果玩家选择移动,则判定移动后有没有吃到道具。注意,此时吃到的长度道具本回合不起效!

半场划分

  • 为了防止道具生成带来的随机性对游戏公平性的影响,本游戏评测时一局分为上下半场,上半场和下半场玩家交换先后手和出生地。上下半场产生道具的时间、地点和种类完全相同。仅交换起始位置和先后手。

  • 对每个半场,达到回合上限512时游戏结束。

  • 如果在没有达到回合数上限之前,有一方蛇的数量归零,那么另一方单独游戏到回合上限。

胜负结算

  • 半场中玩家得分为:该玩家所有蛇覆盖的面积+该玩家围出的墙壁总面积。面积即占据格子数量。
  • 胜负优先级判定为:上下半场胜场数 > 上下半场总得分 > 上半场吃到第一个道具的时间先后,如果以上都相同,则上半场后手玩家获胜。两局游戏中,如果有任何一方发生 RE 或 TLE 等非法操作,则对方直接获胜。

道具生成器

  • 本游戏道具生成器规则如下:

    • 开始时道具仅在地图中央 \(4*4\) 的空间中生成。

    • 之后每过20回合,生成道具范围的变长扩大2,仍位于地图中央。例如,第21回合到第40回合在地图中央 \(6*6\) 的空间中生成道具;第41回合到第60回合在地图中央 \(8 * 8\) 的空间中生成道具……自第121回合起,整张地图上都会生成道具。

    • 道具可能生成在墙中或蛇身上。前者在用融化射线打开墙壁后可以被吃到,后者直接算作被吃到。

    • 每一回合生成道具数量的数学期望是0.25,只会在当回合不存在道具的格子上生成新的道具,每个格子生成道具的概率相同

    • 以上规则保证了:同一个格子中,不同时间段可能会生成多个道具,但这些道具的存在时间保证不会相互重叠。并且可以认为在生成范围下每个格子的道具生成概率是近似相同的。

    • 游戏不同时期生成道具的概率之比如下:

    • 游戏前期(1\(\le\)回合数\(\le\)64):长度道具:融化射线 = 5:1

    • 游戏中期(65\(\le\)回合数\(\le\)384):长度道具:融化射线 = 5:2

    • 游戏中期(385\(\le\)回合数\(\le\)512):长度道具:融化射线 = 4:3

      这部分中所有比值都是概率之比,实际生成情况因随机因素可能和上述比值略有差异

    • 关于道具生成的具体实现细节,出于严谨性的考虑给出,可能会改变,实现AI本身不必也不应依赖于这些信息。

      • 每回合是否生成道具是独立的,其概率相同,即满足两点分布 \(B(1,0.25)\)

      • 如果确定该回合生成道具,则在目前回合的生成范围内等概率随机选择一个坐标。如果当前坐标不存在道具,则进行道具生成。否则重新随机一个坐标,直到可行为止。由于每回合至多生成一个道具,并且道具的持续时间是16回合,而最初的生成范围是大小为16,因此总存在一个可行的位置。

      • 每回合生成道具是独立的,可以认为每回合生成的道具的类型满足两点分布 \(P(1,p)\) ,前文给出了 \(p,1-p\) 的比值。

  • 关于道具信息

    • 每一个道具对应一个五元组\((x,y,time,type,param)\)
    • \((x,y)\)是道具在地图上的坐标,\(0\le x,y\le15\land x,y\in\mathbb{N}\)。约定地图左下角为原点,x轴正方向向\(y\)轴正方向向
    • \(time\)是道具首次出现在\((x,y)\)处的回合数。道具存在于地图上16回合,即道具存在于地图上的时间窗口为\([time, time+15]\)。在此期间将蛇移动到道具所在单元格都会判定为吃到道具。
    • \(type\)标记道具种类。\(type=0\)对应增长道具,\(type=2\)对应融化射线。
    • \(param\)是道具参数,仅对增长道具有效,表示吃到这个道具之后蛇的长度银行增加\(param\)。长度道具的\(param\)\(1,2,3,4,5\)中完全随机选取。\(type=2\)(即该道具为融化射线)时\(param\)固定为512,对道具效果没有影响。