def add_wall(self, x, y, value): """Add the wall in the adjacent case""" Li = [1,2,4,8] if T.search_in_liste(Li,value): #If value is multiple of 2 L = T.sum_pow2(self.mapdata[(x,y)]['wall']) if not T.search_in_liste(L,value): self.mapdata[(x,y)]['wall'] += value print "Wall added (%d,%d):%d"%(x,y,value) if value == 1: if y!=0: L = T.sum_pow2(self.mapdata[(x,y-1)]['wall']) if not T.search_in_liste(L,4): self.mapdata[(x,y+1)]['wall'] += 4 if value == 2: if x != self.mapw-1: L = T.sum_pow2(self.mapdata[(x+1,y)]['wall']) if not T.search_in_liste(L,8): self.mapdata[(x+1,y)]['wall'] += 8 if value == 4: if y != self.maph-1: L = T.sum_pow2(self.mapdata[(x,y+1)]['wall']) if not T.search_in_liste(L,1): self.mapdata[(x,y-1)]['wall'] += 1 if value == 8: if x != 0: L = T.sum_pow2(self.mapdata[(x-1,y)]['wall']) if not T.search_in_liste(L,2): self.mapdata[(x-1,y)]['wall'] += 2 else: print "Can't add (%d,%d):%d"%(x,y,value) else: print "Error value (%d)"%(value)
def getAdjacentNodes(self, curnode, dest): """MUST BE IMPLEMENTED""" result = [] cl = curnode.location dl = dest #Decompose the value of wall wall_decompose = Tools.sum_pow2(self.m[(cl.x,cl.y)]['wall']) list_wall = [1,2,4,8] for i in wall_decompose: list_wall.remove(i) #Test for each value if a wall exist if Tools.search_in_liste(list_wall,2): n = self._handleNode(cl.x+1,cl.y,curnode,dl.x,dl.y) result.append(n) if Tools.search_in_liste(list_wall,8): n = self._handleNode(cl.x-1,cl.y,curnode,dl.x,dl.y) result.append(n) if Tools.search_in_liste(list_wall,4): n = self._handleNode(cl.x,cl.y-1,curnode,dl.x,dl.y) result.append(n) if Tools.search_in_liste(list_wall,1): n = self._handleNode(cl.x,cl.y+1,curnode,dl.x,dl.y) result.append(n) return result
def is_wall_here(self, x, y, value): """Check if a wall exist""" liste = T.sum_pow2(self.mapdata[(x,y)]['wall']) return [True for element in liste if element == value]