using System; using System.Threading; using ActiveProtect.SimulationEnvironment; using ActiveProtect.Models; namespace ActiveProtect { class Program { static void Main(string[] args) { // 创建仿真配置 var config = new SimulationConfig { TankConfigs = [ new() { InitialPosition = new Vector3D(100, 0, 100), InitialOrientation = new Orientation(0, 0, 0), InitialSpeed = 0, MaxSpeed = 20, MaxArmor = 100, HasLaserWarner = false, HasLaserJammer = true } ], LaserWarnerConfig = new LaserWarnerConfig { AlarmDuration = 5.0 }, LaserJammerConfig = new LaserJammerConfig { MaxJammingCooldown = 5.0, MaxJammingPower = 10000.0, InitialJammingPower = 4000.0, PowerIncreaseRate = 2000.0 }, MissileConfigs = [ // 标准导弹配置 new() { InitialPosition = new Vector3D(1500, 200, 100), InitialOrientation = new Orientation(Math.PI, -0.1, 0), InitialSpeed = 0, MaxSpeed = 300, TargetIndex = 0, MaxFlightTime = 0.5, MaxFlightDistance = 3000, ThrustAcceleration = 50, MaxEngineBurnTime = 10, MaxAcceleration = 100, ProportionalNavigationCoefficient = 3, StageConfig = FlightStageConfig.StandardMissile, DistanceParams = new MissileDistanceParams(500, 100, 20), Mass = 50, Type = MissileType.StandardMissile, }, // 红外指令制导导弹配置 new() { InitialPosition = new Vector3D(2000, 150, 100), InitialOrientation = new Orientation(Math.PI, -0.15, 0), InitialSpeed = 0, MaxSpeed = 300, TargetIndex = 0, MaxFlightTime = 1, MaxFlightDistance = 5000, ThrustAcceleration = 50, MaxEngineBurnTime = 10, MaxAcceleration = 100, ProportionalNavigationCoefficient = 3, StageConfig = FlightStageConfig.InfraredCommandGuidance, DistanceParams = new MissileDistanceParams(500, 100, 20), Mass = 50, Type = MissileType.InfraredCommandGuidance }, // 毫米波终端制导导弹配置 new() { InitialPosition = new Vector3D(2000, 50, 100), InitialOrientation = new Orientation(Math.PI, -0.05, 0), InitialSpeed = 0, MaxSpeed = 300, TargetIndex = 0, MaxFlightTime = 0.5, MaxFlightDistance = 3000, ThrustAcceleration = 50, MaxEngineBurnTime = 10, MaxAcceleration = 100, ProportionalNavigationCoefficient = 3, StageConfig = FlightStageConfig.MillimeterWaveTerminalGuidance, DistanceParams = new MissileDistanceParams(500, 100, 20), Mass = 50, Type = MissileType.MillimeterWaveTerminalGuidance }, // 激光半主动制导导弹配置 new() { InitialPosition = new Vector3D(2000, 150, 100), InitialOrientation = new Orientation(Math.PI, -0.12, 0), InitialSpeed = 700, MaxSpeed = 700, TargetIndex = 0, MaxFlightTime = 10, MaxFlightDistance = 5000, ThrustAcceleration = 0, MaxEngineBurnTime = 0, MaxAcceleration = 100, ProportionalNavigationCoefficient = 3, StageConfig = FlightStageConfig.LaserSemiActiveGuidedMissile, DistanceParams = new MissileDistanceParams(500, 200, 20), Mass = 50, Type = MissileType.LaserSemiActiveGuidance } ], LaserDesignatorConfigs = [ new LaserDesignatorConfig { InitialPosition = new Vector3D(500, 150, 100), MaxIlluminationRange = 1000 } ], SimulationTimeStep = 0.25 }; // 创建仿真管理器 var simulationManager = new SimulationManager(config); // 运行仿真 int maxIterations = 1000; int iteration = 0; while (!simulationManager.IsSimulationEnded && iteration < maxIterations) { simulationManager.Update(); simulationManager.PrintStatus(); Thread.Sleep(100); // 暂停100毫秒,使输出更易读 iteration++; } Console.WriteLine("仿真结束"); } } }