Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class Driver
- {
- private string name;
- private double totalTime;
- private Car car;
- private double fuelConsumption;
- private double speed;
- public virtual double Speed
- {
- get { return speed; }
- protected set
- {
- value = (Car.HP + Car.Tyre.Degradation) / Car.FuelAmount;
- speed = value;
- }
- }
- public virtual double FuelConsumption
- {
- get { return fuelConsumption; }
- protected set { fuelConsumption = value; }
- }
- public Car Car
- {
- get { return car; }
- protected set { this.car = value; }
- }
- public double TotalTime
- {
- get { return totalTime; }
- protected set { totalTime = value; }
- }
- public string Name
- {
- get { return name; }
- protected set { name = value; }
- }
- protected Driver(string name, Car car)
- {
- this.Name = name;
- this.TotalTime = 0;
- this.Car = car;
- }
- }
- ///
- public class AggressiveDriver : Driver
- {
- private double speed;
- public override double Speed
- {
- get { return speed; }
- protected set { speed = base.Speed * 1.3; }
- }
- public AggressiveDriver(string name, Car car) : base(name, car)
- {
- this.Name = name;
- this.Car = car;
- this.FuelConsumption = 2.7d;
- }
- }
- ///
- public class EnduranceDriver : Driver
- {
- public EnduranceDriver(string name, Car car) : base(name, car)
- {
- this.Name = name;
- this.Car = car;
- this.FuelConsumption = 1.5d;
- }
- }
- ///
- using System;
- public class Car
- {
- private long hp;
- private double fuelAmount;
- private Tyre tyre;
- public Tyre Tyre
- {
- get { return tyre; }
- private set { tyre = value; }
- }
- public double FuelAmount
- {
- get { return fuelAmount; }
- private set
- {
- if (value < 0)
- {
- throw new ArgumentException("Out of fuel");
- }
- fuelAmount = value;
- }
- }
- public long HP
- {
- get { return hp; }
- private set { hp = value; }
- }
- public Car(int hp, double fuelAmount, Tyre tyre)
- {
- this.HP = hp;
- this.FuelAmount = fuelAmount;
- this.Tyre = tyre;
- }
- }
- ////
- using System;
- public abstract class Tyre
- {
- private string name;
- private double hardness;
- private double degradation;
- public virtual double Degradation
- {
- get { return degradation; }
- protected set
- {
- if (value < 0)
- {
- throw new ArgumentException("Blown Tyre");
- }
- degradation = value;
- }
- }
- public double Hardness
- {
- get { return hardness; }
- protected set { hardness = value; }
- }
- public string Name
- {
- get { return name; }
- protected set { name = value; }
- }
- protected Tyre(double hardness)
- {
- this.Hardness = hardness;
- this.Degradation = 100;
- }
- public virtual void DegradeTyre()
- {
- this.Degradation -= this.Hardness;
- }
- }
- ////
- using System;
- public class UltrasoftTyre : Tyre
- {
- public UltrasoftTyre(double hardness) : base(hardness)
- {
- this.Grip = grip;
- }
- private double grip;
- private double degradation;
- public override double Degradation
- {
- get { return degradation; }
- protected set
- {
- if (value < 30)
- {
- throw new ArgumentException("Blow Tyre");
- }
- degradation = value;
- }
- }
- public double Grip
- {
- get { return grip; }
- protected set { grip = value; }
- }
- public override void DegradeTyre()
- {
- double sum = this.Hardness += this.Grip;
- this.Degradation -= sum;
- }
- }
- ///
- public class HardTyre : Tyre
- {
- public HardTyre(double hardness) : base(hardness)
- {
- this.Hardness = hardness;
- }
- public override void DegradeTyre()
- {
- this.Degradation -= this.Hardness;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment