Context (环境信息类)
- class Context
基类:
BaseContext
环境上下文信息
Attributes Summary
返回本局是否结束
出口位置
场景的高(地图的行数)
所有物品的横纵坐标,以字典形式提供。字典中的 key 为元素名称,value 是所有这类元素的列表。 列表中存储
Item
实例,可以获取此实例的行列坐标。如果环境中不包含某个物品, 则此物品 key 中的值为空列表。返回 2D 地图上的静态地图信息,仅含道路类型(ROAD)和墙类型(WALL),不包含其他地图元素信息。
当前我的信息,返回
Player
。所有用户 (
Player
) 信息。用户当前回合数
返回当前帧数
场景的宽(地图的列数)
Attributes Documentation
- exit
出口位置
- 返回
出口实例,可获取出口的行列坐标
- 返回类型
实际案例
>>> # 方法一:通过 api.get_context() 获取环境信息 >>> import api >>> context = api.get_context() >>> e = context.exit >>> e.row 4
>>> # 方法二:通过 def update(context) 获取环境信息 >>> def update(context): >>> e = context.exit
- height
场景的高(地图的行数)
- 返回
高度(行数)
- 返回类型
实际案例
>>> # 方法一:通过 api.get_context() 获取环境信息 >>> import api >>> context = api.get_context() >>> context.height 5
>>> # 方法二:通过 def update(context) 获取环境信息 >>> def update(context): >>> h = context.height
- items
所有物品的横纵坐标,以字典形式提供。字典中的 key 为元素名称,value 是所有这类元素的列表。 列表中存储
Item
实例,可以获取此实例的行列坐标。如果环境中不包含某个物品, 则此物品 key 中的值为空列表。环境中的物品可能包含 宝石 和 宝箱:
- 宝石:获取时积分 +1。一共五种类型,每种对应英文如下
红宝石:red_gem
蓝宝石:blue_gem
粉宝石:pink_gem
黄宝石:yellow_gem
紫宝石:purple_gem
宝箱 (box): 获取后有随机奖惩
Tips:如集齐一套宝石可获得额外 5 积分,累计有效
实际案例
>>> # 方法一:通过 api.get_context() 获取环境信息 >>> import api >>> context = api.get_context() >>> items = context.items # 获取当前回合的物品信息 >>> items { 'pink_gem': [Item(row=2, col=2), Item(row=3, col=2)], 'red_gem': [], 'yellow_gem': [], 'purple_gem': [], 'blue_gem': [], 'box': [] }
>>> pink_gem = items["pink_gem"][0] # 获取粉色宝石信息 >>> pink_gem Item(row=2, col=2)
>>> pink_gem.row 2
>>> len(items["pink_gem"]) == 2 True
>>> # 方法二:通过 def update(context) 获取环境信息 >>> def update(context): >>> items = context.items
- maze
返回 2D 地图上的静态地图信息,仅含道路类型(ROAD)和墙类型(WALL),不包含其他地图元素信息。
实际案例
>>> # 方法一:通过 api.get_context() 获取环境信息 >>> import api >>> context = api.get_context() >>> context.maze [['WALL', 'WALL', 'WALL', 'WALL', 'WALL'], ['WALL', 'ROAD', 'ROAD', 'ROAD', 'WALL'], ['WALL', 'ROAD', 'ROAD', 'ROAD', 'WALL'], ['WALL', 'ROAD', 'ROAD', 'ROAD', 'WALL'], ['WALL', 'ROAD', 'WALL', 'ROAD', 'WALL']]
>>> # 方法二:通过 def update(context) 获取环境信息 >>> def update(context): >>> maze = context.maze
- me
当前我的信息,返回
Player
。实际案例
>>> # 方法一:通过 api.get_context() 获取环境信息 >>> import api >>> context = api.get_context() >>> me = context.me >>> me.row 1
>>> me.col 1
>>> me.energy 100
>>> me.direction "D"
>>> me.finished False
>>> me.score 10.2
>>> me.item_count {"red_gem": 0, "blue_gem": 1, "pink_gem": 1, "yellow_gem": 3, "purple_gem": 0, "box": 0}
>>> # 方法二:通过 def update(context) 获取环境信息 >>> def update(context): >>> me = context.me
- players
所有用户 (
Player
) 信息。- 返回
所有用户的行列坐标。返回类型为字典, key 为 ID (int 形式,且你的 ID 永远是 0,其他人的 ID 从 1 开始计数), value 为
Player
的实例, 可从实例中调出此 player 的信息,如横纵坐标、体力值等。- 返回类型
实际案例
>>> # 方法一:通过 api.get_context() 获取环境信息 >>> import api >>> context = api.get_context() >>> players = context.players >>> p0 = players[0] # 选手列表中第 0 号(0 号永远是你) >>> p0.energy # 剩余体力 100
>>> p1 = players[1] # 选手列表中第 1 号(1 号和 1 号之后永远是其他人) >>> p1.col 3
>>> p1.item_count {"red_gem": 0, "blue_gem": 1, "pink_gem": 1, "yellow_gem": 3, "purple_gem": 0, "box": 0}
>>> # 方法二:通过 def update(context) 获取环境信息 >>> def update(context): >>> players = context.players