def __init__(self): self.list = [] count = 0 # 依次添加行人至self.list for i in range(0, 15): self.list.append(People("o" + str(count), 60, 60 + i * 40)) count = count + 1 self.list.append(People("o" + str(count), 100, 60 + i * 40)) count = count + 1 self.list.append(People("o" + str(count), 140, 60 + i * 40)) count = count + 1 # 在一开始就计算好各个位置的下一步方向向量,并存储到矩阵中,以节省算力 k = 5 self.matrix = [[0 for i in range(17)] for i in range(27)] for i in range(0, 27): for j in range(0, 17): if i == 0: # 将障碍物的位置也设置对应的方向向量,以便在特殊情况撞墙后能及时调整回来 self.matrix[i][j] = (k, 0) elif i == 26: self.matrix[i][j] = (-1 * k, 0) elif j == 0: self.matrix[i][j] = (0, k) elif j == 16: self.matrix[i][j] = (0, -1 * k) elif i == 10: if (j == 4) or (j == 10): self.matrix[i][j] = (-1 * k, -1 * k) elif (j == 5) or (j == 11): self.matrix[i][j] = (-1 * k, 0) elif (j == 6) or (j == 12): self.matrix[i][j] = (-1 * k, k) else: self.matrix[i][j] = AStar.next_loc(i, j) elif i == 17: if (j == 4) or (j == 10): self.matrix[i][j] = (k, -1 * k) elif (j == 5) or (j == 11): self.matrix[i][j] = (k, 0) elif (j == 6) or (j == 12): self.matrix[i][j] = (k, k) else: self.matrix[i][j] = AStar.next_loc(i, j) elif (j == 4) or (j == 10): if (i > 10) and (i < 17): self.matrix[i][j] = (0, -1 * k) else: self.matrix[i][j] = AStar.next_loc(i, j) elif (j == 6) or (j == 12): if (i > 10) and (i < 17): self.matrix[i][j] = (0, k) else: self.matrix[i][j] = AStar.next_loc(i, j) elif (i > 10) and (i < 17) and ((j == 5) or (j == 11)): self.matrix[i][j] = (0, k) else: self.matrix[i][j] = AStar.next_loc(i, j) self.matrix[26][4] = (1, 0)
def __init__(self): self.list = [] count = 0 # 依次添加行人至self.list,三列行人,每列15人 for i in range(0, 15): self.list.append(People("o" + str(count), 60, 60 + i * 40)) #id,横坐标,纵坐标 count = count + 1 self.list.append(People("o" + str(count), 100, 60 + i * 40)) count = count + 1 self.list.append(People("o" + str(count), 140, 60 + i * 40)) count = count + 1 # 在一开始就计算好各个位置的下一步方向向量,并存储到矩阵中,以节省算力 k = 5 self.matrix = [[0 for i in range(17)] for i in range(27)] #创建17*27的空矩阵 for i in range(0, 27): for j in range(0, 17): if i == 0: # 将障碍物的位置也设置对应的方向向量,以便在特殊情况撞墙后能及时调整回来 self.matrix[i][j] = (k, 0) elif i == 26: self.matrix[i][j] = (-1 * k, 0) elif j == 0: self.matrix[i][j] = (0, k) elif j == 16: self.matrix[i][j] = (0, -1 * k) elif i == 10: if (j == 4) or (j == 10): self.matrix[i][j] = (-1 * k, -1 * k) elif (j == 5) or (j == 11): self.matrix[i][j] = (-1 * k, 0) elif (j == 6) or (j == 12): self.matrix[i][j] = (-1 * k, k) else: self.matrix[i][j] = AStar.next_loc( i, j) #i为10时,如果没有障碍物,则方向向量为A*算法的下一步位置 elif i == 17: if (j == 4) or (j == 10): self.matrix[i][j] = (k, -1 * k) elif (j == 5) or (j == 11): self.matrix[i][j] = (k, 0) elif (j == 6) or (j == 12): self.matrix[i][j] = (k, k) else: self.matrix[i][j] = AStar.next_loc( i, j) #i为17时,如果没有障碍物,则方向向量为A*算法的下一步位置 elif (j == 4) or (j == 10): if (i > 10) and (i < 17): #障碍物的上边界 self.matrix[i][j] = (0, -1 * k) else: self.matrix[i][j] = AStar.next_loc(i, j) elif (j == 6) or (j == 12): if (i > 10) and (i < 17): self.matrix[i][j] = (0, k) #障碍物的下边界 else: self.matrix[i][j] = AStar.next_loc(i, j) elif (i > 10) and (i < 17) and ((j == 5) or (j == 11)): #障碍物的中间位置 self.matrix[i][j] = (0, k) else: self.matrix[i][j] = AStar.next_loc(i, j) self.matrix[26][4] = (1, 0) #目标点的方向向量