/// <summary> /// Выполнить полет. /// </summary> /// <param name="energy">Используемый для полета источник энергии.</param> /// <returns>Расстояние, на которое выполнился перелет.</returns> public virtual int Move(EnergyBase energy) { if (energy == null) { throw new ArgumentNullException(nameof(energy)); } energy.Using(UsingEnergy); return(1); }
/// <inheritdoc /> public override int Move(EnergyBase energy) { if (energy == null) { throw new ArgumentNullException(nameof(energy)); } // Стандартный режим полета. Не очень быстро, но стабильно. var baseSpeed = base.Move(energy); return(baseSpeed * _speedFactor); }
public override int Move(EnergyBase energy) { if (energy == null) { throw new ArgumentNullException(nameof(energy)); } // Очень нестабильный, но потенциально быстрый двигатель. // Потребляет случайное количество энергии. int factorEnergy = _random.Next(0, _maxFactor); energy.Using(UsingEnergy * factorEnergy); // Движется со случайной скоростью или вообще останавливается. int factorSpeed = _random.Next(0, _maxFactor); return(UsingEnergy * factorSpeed); }
/// <summary> /// Создать экземпляр космического корабля. /// </summary> /// <param name="name">Название корабля.</param> /// <param name="factory">Фабрика, создающая космический корабль.</param> public Spaceship(string name, SpaceshipFactoryBase factory) { if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException(nameof(name)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } Name = name; Type = factory.Type; Health = factory.Health; _energy = factory.CreateEnergy(); _gun = factory.CreateGun(); _engine = factory.CreateEngine(); }