diff --git a/src/Client/BattlefieldExplorationSystem b/src/Client/BattlefieldExplorationSystem index 45fb8ca0..46847ca1 100755 Binary files a/src/Client/BattlefieldExplorationSystem and b/src/Client/BattlefieldExplorationSystem differ diff --git a/src/Client/database/update_enemy_locations_50m.sql b/src/Client/database/update_enemy_locations_50m.sql new file mode 100644 index 00000000..7b0dc7bb --- /dev/null +++ b/src/Client/database/update_enemy_locations_50m.sql @@ -0,0 +1,132 @@ +-- 更新敌人位置到50米范围内 +-- Update Enemy Locations within 50 meters range +-- 地图中心:(113.045134, 28.262212) +-- Map Center: (113.045134, 28.262212) + +USE Client; + +-- 计算50米对应的经纬度偏移量 +-- 在纬度28.26度附近: +-- 1度经度 ≈ 98,500米 +-- 1度纬度 ≈ 111,000米 +-- 50米经度偏移 ≈ 50/98500 ≈ 0.0005度 +-- 50米纬度偏移 ≈ 50/111000 ≈ 0.00045度 + +-- 更新所有敌人位置到50米范围内,分布更紧密 +UPDATE enemy_records SET + longitude = 113.045134 + (RAND() - 0.5) * 0.001, -- ±0.0005度 ≈ ±50米 + latitude = 28.262212 + (RAND() - 0.5) * 0.0009, -- ±0.00045度 ≈ ±50米 + update_time = NOW() +WHERE id LIKE 'ENEMY%'; + +-- 手动设置几个关键敌人位置,确保分布均匀且在50米内 +UPDATE enemy_records SET + longitude = 113.045134, latitude = 28.262212, -- 正中心 + update_time = NOW() +WHERE id = 'ENEMY001'; + +UPDATE enemy_records SET + longitude = 113.045134 + 0.0003, latitude = 28.262212 + 0.0003, -- 东北30米 + update_time = NOW() +WHERE id = 'ENEMY002'; + +UPDATE enemy_records SET + longitude = 113.045134 - 0.0003, latitude = 28.262212 - 0.0003, -- 西南30米 + update_time = NOW() +WHERE id = 'ENEMY003'; + +UPDATE enemy_records SET + longitude = 113.045134 + 0.0003, latitude = 28.262212 - 0.0003, -- 东南30米 + update_time = NOW() +WHERE id = 'ENEMY004'; + +UPDATE enemy_records SET + longitude = 113.045134 - 0.0003, latitude = 28.262212 + 0.0003, -- 西北30米 + update_time = NOW() +WHERE id = 'ENEMY005'; + +UPDATE enemy_records SET + longitude = 113.045134 + 0.0005, latitude = 28.262212, -- 正东50米 + update_time = NOW() +WHERE id = 'ENEMY006'; + +UPDATE enemy_records SET + longitude = 113.045134 - 0.0005, latitude = 28.262212, -- 正西50米 + update_time = NOW() +WHERE id = 'ENEMY007'; + +UPDATE enemy_records SET + longitude = 113.045134, latitude = 28.262212 + 0.00045, -- 正北50米 + update_time = NOW() +WHERE id = 'ENEMY008'; + +UPDATE enemy_records SET + longitude = 113.045134, latitude = 28.262212 - 0.00045, -- 正南50米 + update_time = NOW() +WHERE id = 'ENEMY009'; + +-- 验证更新结果,计算距离中心点的实际距离 +SELECT + id, + ROUND(longitude, 7) as longitude, + ROUND(latitude, 7) as latitude, + threat_level, + status, + -- 计算距离中心点的距离(米) + ROUND( + 6371000 * 2 * ASIN( + SQRT( + POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) + + COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) * + POW(SIN(RADIANS(113.045134 - longitude) / 2), 2) + ) + ), 1 + ) as distance_meters, + update_time +FROM enemy_records +ORDER BY distance_meters, threat_level DESC, id; + +-- 显示统计信息 +SELECT + '地图中心坐标' as location_type, + 113.045134 as longitude, + 28.262212 as latitude, + 0 as distance_meters +UNION ALL +SELECT + '敌人位置范围', + CONCAT(ROUND(MIN(longitude), 7), ' ~ ', ROUND(MAX(longitude), 7)), + CONCAT(ROUND(MIN(latitude), 7), ' ~ ', ROUND(MAX(latitude), 7)), + ROUND(MAX( + 6371000 * 2 * ASIN( + SQRT( + POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) + + COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) * + POW(SIN(RADIANS(113.045134 - longitude) / 2), 2) + ) + ) + ), 1) +FROM enemy_records; + +-- 验证所有敌人都在50米范围内 +SELECT + COUNT(*) as total_enemies, + COUNT(CASE WHEN + 6371000 * 2 * ASIN( + SQRT( + POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) + + COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) * + POW(SIN(RADIANS(113.045134 - longitude) / 2), 2) + ) + ) <= 50 + THEN 1 END) as enemies_within_50m, + ROUND(AVG( + 6371000 * 2 * ASIN( + SQRT( + POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) + + COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) * + POW(SIN(RADIANS(113.045134 - longitude) / 2), 2) + ) + ) + ), 1) as avg_distance_meters +FROM enemy_records; \ No newline at end of file