Car on prototypes

by Vladimir

JavaScript

var Car = function(durability, gas, speeds) {
	this.durability = durability;
	this.gas = gas;
	this.speeds = speeds; 
};

Car.prototype.getRealDistance = function(distance, speedCharacteristics) {
	var drivingDistance = Math.min(distance, this.gas / speedCharacteristics.gas * 100);

	var durabilitySpent = drivingDistance * speedCharacteristics.durability;
	var durabilityLeft = this.durability - durabilitySpent;

	var realDistance;
	if (durabilityLeft < 0) {
		realDistance = this.durability / speedCharacteristics.durability;
	} else {
		realDistance = drivingDistance;
	}
	return realDistance;
};

Car.prototype.drive = function(distance, speed) {
	var speedCharacteristics = this.speeds[speed]; //

	var realDistance = this.getRealDistance(distance, speedCharacteristics);

	var realDurabilitySpent = realDistance * speedCharacteristics.durability;
	var realGasSpent = realDistance * speedCharacteristics.gas / 100;
	this.durability -= realDurabilitySpent;
	this.gas -= realGasSpent;
	return this;
};


var car1 = new Car(0.78, 100, {
	slow: {
		durability: 0.001,
		gas: 7
	},
	average: {
		durability: 0.001,
		gas: 6.5
	},
	fast: {
		durability: 0.003,
		gas: 6
	}
});
car1.drive(200, 'average');


var car2 = new Car(0.38, 50, {
		slow: {
			durability: 0.002,
			gas: 10
		},
		average: {
			durability: 0.002,
			gas: 12
		},
		fast: {
			durability: 0.006,
			gas: 11
		}
	}
);
car2.drive(100, 'slow');