def update_time_to_recover_map(self):
max_distance = 30
self.recover_map = numpy.zeros((max_distance + 1, self.width, self.height))
self.recover_map_smooth = numpy.zeros((max_distance + 1, self.width, self.height))
self.recover_map[0] = numpy.divide(self.strength_map, numpy.maximum(self.production_map, 0.001))
self.recover_map[0] = numpy.multiply(self.recover_map[0], 1 - (self.is_owner_map[self.game_map.my_id] + self.is_enemy_map))
self.recover_map[0] += (self.is_owner_map[self.game_map.my_id] + self.is_enemy_map) * 999
distance = 1
while distance <= max_distance:
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))
distance += 1
for d in range(2, max_distance):
self.recover_map[d] = self.recover_map[d] / d
self.recover_map_smooth[d] = spread_n(self.recover_map[d], 4)
评论列表
文章目录