python迷宫寻宝的秘籍笔记

实例=具体的数据=数据      gem宝石   check控制   回合数context.round

1、def update(context):

(1)def update(context):是游戏的主要逻辑部分,每一帧会自动调用该函数,不用咱们调用。
     return 返回值必须是字符串:表示企鹅的下一步行动。
(2)企鹅运动的返回值:
     上下左右/UDLR    不移动/S
(3)context为游戏引擎调用时传给你的,context包含当前回合的所有数据(包括当前回合数、企鹅位置、目标位置等)。
     context.round:当前回合数,回合从0开始。
(4)完整程序:
       def update(context):
            return "R"     #每回合向右移动一步

2、 控制企鹅自动寻路(即自动去往一个地方)

(1)import api
(2)api.check.next(要去的地方/目标)
        注意:api.check.next() 在无法到达目标的情况下,会返回 None。
(3)要去的地方/目标:一个坐标、一个宝石、一个宝箱、一个敌人
         eg:api.check.next((3, 2))    #去往(3,2)
(4)注意:在被阻挡的情况下,原本可行的通路,会因为被阻挡,而突然无法到达,此时 api.check.next()接口会返回S。
(5)完整程序:
        import api
        def update(context):
              direction = api.check.next((3, 2))
              print("在第", context.round, "回合,我现在需要向", direction, "走")    # 只是提示语,可以不要
              return direction

3、去往终点(即需要获取终点信息)

(1种)api.get.exit(what='行/列')     # 获取终点信息
            (1)获取终点信息完整程序:
                 import api
                 def update(context):
                       exit_row=api.get.exit(what='row')
                       exit_col=api.get.exit(what='col')
                       print(exit_row,exit_col)
(2种)context.exit获取终点的行列
            (1)获取终点信息完整程序:
                def update(context):
                      e = context.exit     # 获取终点的行列信息
                      print(e.row, e.col)     # 终点的行坐标、列坐标
            (2)去往终点完整程序:
                import api
                   def update(context):
                         e = context.exit   # 获取终点坐标
                         direction = api.check.next(end=(e.row, e.col))         # 传入终点信息,去终点
                         return direction

4、获取某个宝石的属性(即名称name、编号n、具体属性what(行row、列col、得分score、名字name))

(1种)api.get.item
    (1)api.get.item(name,n,what)
         what:row、col、score、name
         n:从编号0开始
    (2)获取第一个粉宝石程序:
         import api
              def update(context):    
                    pink0_row = api.get.item(name="pink_gem", n=0, what="row")    # 获取第一个粉宝石的行
                    pink0_col = api.get.item(name="pink_gem", n=0, what="col")     # 获取第一个粉宝石的列
                    print( pink0_row, pink0_col)
    (3)api.get.items(name="pink_gem")    # 获取所有粉宝石的信息  -- 是一个列表数据
         print(pink_gems)       # 打印出所有的粉宝石信息
         p0 = pink_gems[0]          # 拿到第一颗粉宝石       -- 可以用下标获取列表中的数据
         print(p0.col)       # 打印出第一颗粉宝石的信息
(2种)context.items
    (1)def update(context):
              items = context.items    # 拿到所有宝石、宝箱的信息    -- 是一个字典数据
              print(items)    # 打印出字典形式的所有数据
              pink_gems = items['pink_gem']    # 找到所有粉宝石的信息
              print(pink_gems)
              print(pink_gems[0].col)    # 打印出第一颗粉宝石的 col 信息
 
              boxes = items['box']     # 找到所有宝箱的信息
              print(boxes)
              print(boxes[0].col)    # 打印出第一颗宝箱的 col 信息

5、宝箱与宝石方法一样:

但是把pink_gem替换成box,items['box']
row = api.get.item(name="box", n=0, what="row")

6、粗略归纳:

gem_row=api.get.item(name="pink_gem",n=0,what='row')
direction=api.check.next(gem_row,gem_col)
e_row = api.get.exit(what='row')
direction=api.check.next(e_row,e_col)
items=context.items
pink_gems=items["pink_gem"]
pink_gems[0].col
e=context.exit
e_row=api.check.next(end="e.row,e.col")

7、我的企鹅player信息xx

(1)energy:企鹅的剩余体力
        direction:企鹅的朝向
        finished:企鹅是否已经达到终点
        item_count:企鹅收集到的物品数量
        order:在一局比赛中,与其他玩家相比的执行顺序
(1种)api.get.my(what="xx")    #获取我的企鹅的信息
         my_xx= api.get.my(what="xx")
         my_row = api.get.my(what="row")       -- 注意:行列是从 0 开始的
(2种)context.players     #获取我的企鹅的信息
         all_players = context.players   # 获取所有企鹅信息  -- 字典
         me = all_players[0]     # 获取我的企鹅信息
         other = all_players[1]    # 获取对手用户的企鹅
         print("my_row=", me.row)     # 打印我的企鹅所在的行
         print("me.energy=", me.energy)     # 打印我的企鹅的体力

8、墙、路、地块信息

(1)context.maze   -- 获取的是二维列表,来获取整张地图(每一个一维列表都会显示每一行的墙或路)
         maze[row][col]:表示地图上的一个点,显示该点是墙或路,从左上角开始
(2)地图的宽高
      (1种)用len来计算宽高
      (2种)context.width和context.height
(3)某个点的地块信息(地图上每个点的信息)
      api.check.position(1, 1)      # 地块的类型(ROAD 或 WALL)
(4)某个点周围的地图信息
      api.check.surrounding(1, 1)   -- log输出:{'U': 'WALL', 'D': 'ROAD', 'L': 'WALL', 'R': 'ROAD'}
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值