Skip to content

热身赛SDK引导

本文档是热身赛(开心消消乐)的SDK使用说明

代码结构

SDK由GYM环境类、AI函数和游戏控制器组成。

GYM环境类

GYM环境类维护了游戏局面的全量信息。该类提供如下接口:

reset

  • Args

    • seed (int, optional): 环境随机数生成器的随机种子。和操作共同完全决定局面的转移. Defaults to None.
    • board (numpy.ndarray, optional): 初始棋盘。一般不使用. Defaults to None.
  • Returns:

    • numpy.ndarray: 返回初始化后的棋盘

step

  • Args:

    • action (int): 操作的序号。可以由coord_to_num方法从坐标转换得到。操作序号的定义见下文。
    • player (int, optional): 进行操作的玩家序号. Defaults to 0.
  • Returns:

    • tuple[np.ndarray, int, bool]: 分别为局面、当次操作的reward以及游戏是否结束

observe

无参数。根据render_mode决定输出。本地使用时将render_mode设置为'local',在调用后可以在命令行打印当前局面。

num_to_coord 和coord_to_num

分别为将操作序号转换为坐标,和将坐标转换为操作序号。 操作坐标的定义为:[x1, y1, x2, y2]代表交换坐标[x1, y1][x2, y2]的块。 操作序号定义为 \(y_2 + x_2 \times size + y_1 \times size^2 + x_1 \times size^3\)

Controller

在初始化时读取judger传来的初始化信息并实例化整局游戏唯一的环境实例。run将调用传入的ai函数,并将ai函数返回的操作序号传给judger,并读取对方操作。

AI函数

一个输入为GYM环境类实例,输出为操作序号的函数。注意,请不要在函数中直接对传入的环境实例作修改。请使用deepcopy复制