当前位置: 首页>>代码示例>>Python>>正文


Python Helper.punpack方法代码示例

本文整理汇总了Python中Helper.punpack方法的典型用法代码示例。如果您正苦于以下问题:Python Helper.punpack方法的具体用法?Python Helper.punpack怎么用?Python Helper.punpack使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Helper的用法示例。


在下文中一共展示了Helper.punpack方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: isSolved

# 需要导入模块: import Helper [as 别名]
# 或者: from Helper import punpack [as 别名]
 def isSolved(self, pgs, pgdp, zfl):
   if len(zfl)>len(pgdp):          # es gibt mehr Goal squares als Boxen
     for i in pgdp:
       if hlp.punpack(i) not in zfl:
         return(False)
   else:           # es gibt mehr Boxen als Goal squares oder gleich viele
     for i in zfl:
       if hlp.ppackt(i) not in pgdp:
         return(False)
   return(True)
开发者ID:dede67,项目名称:sokoban,代码行数:12,代码来源:SokoMove.py

示例2: __findGoodFloorsForSingleBox

# 需要导入模块: import Helper [as 别名]
# 或者: from Helper import punpack [as 别名]
  def __findGoodFloorsForSingleBox(self, pgdp, pull, pp, good_floors):
    bp=hlp.punpack(pgdp[0])   # derzeitige Box-Position(ungepackt) - ist ja nur eine drin
    dp, d=hlp.munpack(pull)   # Box-Ziel-Position (ungepackt)

    if hlp.mpack(bp, d) in good_floors: # wenn Pull schon ausgeführt wurde...
      return(good_floors)               # ...langt das

    if self.__testPlayerWayToPos(pp, dp, bp)==True: # wenn der Player die Pull-Position erreichen kann...
      pp=dp                                         # ...dann kann die Player-Pos auf Pull-Pos gesetzt werden
      good_floors.append(hlp.mpack(bp, d))          # ...und der Pull als gut und ausgeführt vermerkt werden

      rc, pp=self.sm.inverseMovePlayer(self.pgs, pgdp, pp, d) # Zug gemäß "pull" ausführen
      bp=hlp.punpack(pgdp[0])                                 # ggf. geänderte Box-Position holen
      rlst=self.__pullableBordersForSingleBox(bp[0], bp[1])   # mögliche Folge-Pulls ermitteln

      for p in rlst:          # über alle Folge-Pulls
        pgdpt=[pgdp[0]]       # neu setzen, weil pgdpt von __findGoodFloorsForSingleBox geändert wird
        good_floors=self.__findGoodFloorsForSingleBox(pgdpt, p, pp, good_floors)
    return(good_floors)
开发者ID:dede67,项目名称:sokoban,代码行数:21,代码来源:SokoGoodFloors.py

示例3: __finalizeDegreeOfFreedom

# 需要导入模块: import Helper [as 别名]
# 或者: from Helper import punpack [as 别名]
  def __finalizeDegreeOfFreedom(self, pgs, dof, pgdp, pp):
    rlst=[]
    floors, bList=self.__findReachableBoxes(pgs, pgdp, pp)

    for b in bList:             # über alle erreichbaren Boxen
      bx, by=hlp.punpack(b)

      dof[by][bx]&=0x10FF
      for r in range(4):        # über alle Schiebe-Koordinaten
        x=bx+self.rp[r][0]
        y=by+self.rp[r][1]      # Player-Pos für aktuelle Schiebe-Richtung
        xyp=hlp.ppack(x, y)
        if xyp in floors:       # wenn Player-Pos innerhalb der erreichbaren Felder...
#          rlst.append(((bx, by), self.sr[r]))
#          dof[by][bx]|=self.sm[r]
          dof[by][bx]|=(self.sm[r] & ((dof[by][bx]&0x00F0)<<4))
开发者ID:dede67,项目名称:sokoban,代码行数:18,代码来源:SokoMove.py

示例4: findPossiblePushes

# 需要导入模块: import Helper [as 别名]
# 或者: from Helper import punpack [as 别名]
  def findPossiblePushes(self, pgs, pgdp, playerpos):
    rlst=[]
    floors, bList=self.__findReachableBoxes(pgs, pgdp, playerpos)

    for b in bList:             # über alle erreichbaren Boxen
      bx, by=hlp.punpack(b)
      for r in range(4):        # über alle Schiebe-Koordinaten
        x=bx+self.rp[r][0]
        y=by+self.rp[r][1]      # Player-Pos für aktuelle Schiebe-Richtung
        xyp=hlp.ppack(x, y)
        if xyp in floors:       # wenn Player-Pos innerhalb der erreichbaren Felder...
          xh=bx+self.pt[r][0]   # x,y für schnellen Vortest, ob Zug legal sein wird....
          yh=by+self.pt[r][1]
          if pgs[yh][xh] not in ("#", "_"):
            # es wird nicht gegen eine Wall oder auf badFloor geschoben
            if hlp.ppack(xh, yh) not in pgdp:
              # es wird nicht gegen eine Box geschoben
              rlst.append((xyp<<2)+self.sr[r]) # also Zug zum weiteren testen vormerken
    return(rlst)
开发者ID:dede67,项目名称:sokoban,代码行数:21,代码来源:SokoMove.py

示例5: findAreas

# 需要导入模块: import Helper [as 别名]
# 或者: from Helper import punpack [as 别名]
  def findAreas(self, pgs, pgdp):
    floorsList=[[]]
    boxesList=[[]]
    for y in range(len(pgs)):
      for x in range(len(pgs[y])):
        if pgs[y][x] in (" ", "_", ".") and hlp.ppack(x, y) not in pgdp:
          floorFound=False
          for l in floorsList:
            if hlp.ppack(x, y) in l:
              floorFound=True
              break
          if floorFound==False:
            floors, boxes=self.__findReachableBoxes(pgs, pgdp, (x, y))
            floorsList.append(floors)
            boxesList.append(boxes)

    for l in floorsList:
      o=[]
      for i in l:
        o.append(hlp.punpack(i))
      print sorted(o)
开发者ID:dede67,项目名称:sokoban,代码行数:23,代码来源:SokoAreas.py


注:本文中的Helper.punpack方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。