Beispiel #1
0
 def inverseMovePlayer(self, pgs, pgd, pp, d):
   np=(pp[0]+self.mx[d], pp[1]+self.my[d])     # Koordinaten Player-Zielfeld
   if pgs[np[1]][np[0]]!="#":                  # kein Wall auf dem Player-Zielfeld
     if hlp.ppackt(np) not in pgd:             # und keine Box auf dem Player-Zielfeld
       bp=hlp.ppack(pp[0]+self.ix[d], pp[1]+self.iy[d])   # Koordinaten Box-Startfeld
       if bp in pgd:                           # ziehbare Box am Player-Startfeld
         pgd.remove(bp)
         pgd.append(hlp.ppackt(pp))
         return((2, np))
       else:
         return((1, np))
   return((0, pp))
Beispiel #2
0
 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)
Beispiel #3
0
  def movePlayer(self, pgs, dof, pgdp, pp, d, deadCheck=True):
    np=(pp[0]+self.mx[d], pp[1]+self.my[d])     # Koordinaten Player-Zielfeld
    if pgs[np[1]][np[0]]!="#":                  # kein Wall auf dem Player-Zielfeld
      if hlp.ppackt(np) not in pgdp:            # keine Box auf dem Player-Zielfeld
        return(1, self.ss[d].lower(), np, (), False)
      else:                                     # Box auf dem Player-Zielfeld
        bp=(pp[0]+self.bx[d], pp[1]+self.by[d]) # Koordinaten Box-Zielfeld
        if pgs[bp[1]][bp[0]]!="#":              # kein Wall auf dem Box-Zielfeld
          if hlp.ppackt(bp) not in pgdp:        # keine Box auf dem Box-Zielfeld
            pgdp.remove(hlp.ppackt(np))
            pgdp.append(hlp.ppackt(bp))

#            self.areas.findAreas(pgs, pgdp)
#            self.deadTest.updateDegreeOfFreedom(dof, pgdp)
#            self.__finalizeDegreeOfFreedom(pgs, dof, pgdp, pp)

            if deadCheck==True:
              isdead=self.__isDead(pgs, pgdp, pp, bp, (pp[0]+self.hx[d], pp[1]+self.hy[d]))
            else:
              isdead=False
#            print hlp.unpackMovList(self.findPossiblePushes(pgs, pgdp, np))
            return(2, self.ss[d].upper(), np, bp, isdead)
    return(0, "", pp, (), False)