本文整理汇总了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)
示例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)
示例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))
示例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)
示例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)