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');