def update_recover_map(self):
max_distance = 50
self.recover_map = numpy.zeros((max_distance + 1, self.width, self.height))
self.recover_map[0] = numpy.divide(self.strength_map, numpy.maximum(self.production_map, 0.01))
self.recover_map[0] = numpy.multiply(self.recover_map[0], self.is_neutral_map)
self.recover_map[0] += (self.is_owned_map + self.is_enemy_map) * 999
for distance in range(1, max_distance + 1):
dir_map = numpy.zeros((4, self.width, self.height))
dir_map[0] = roll_xy(self.recover_map[distance - 1], 0, 1)
dir_map[1] = roll_xy(self.recover_map[distance - 1], 0, -1)
dir_map[2] = roll_xy(self.recover_map[distance - 1], 1, 0)
dir_map[3] = roll_xy(self.recover_map[distance - 1], -1, 0)
self.recover_map[distance] = numpy.add(self.recover_map[distance - 1], numpy.amin(dir_map, 0))
for d in range(2, max_distance + 1):
self.recover_map[d] = self.recover_map[d] / d
评论列表
文章目录