예제 #1
0
    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)
예제 #2
0
파일: AStar.py 프로젝트: mripard/utbm-LO52
    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
예제 #3
0
 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]