Skip to content

Instantly share code, notes, and snippets.

@nikibobi
Created November 10, 2016 15:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikibobi/a5e9c248142250f14e90a4f94e2f825d to your computer and use it in GitHub Desktop.
Save nikibobi/a5e9c248142250f14e90a4f94e2f825d to your computer and use it in GitHub Desktop.
JS Advanced Homework
import { Turtle } from './turtle.js';
import { WaterTurtle } from './water.js';
import { GalapagosTurtle } from './galapagus.js';
import { EvkodianTurtle } from './evkodian.js';
import { NinjaTurtle } from './ninja.js';
result.Turtle = Turtle;
result.WaterTurtle = WaterTurtle;
result.GalapagosTurtle = GalapagosTurtle;
result.EvkodianTurtle = EvkodianTurtle;
result.NinjaTurtle = NinjaTurtle;
import { Turtle } from './turtle.js';
export class EvkodianTurtle extends Turtle {
constructor(name, age, gender, evkodiumValue) {
super(name, age, gender);
this._evkodiumValue = evkodiumValue;
}
get evkodium() {
return {
value: this._evkodiumValue,
density: this.age * (this.gender == "male" ? 3 : 2)
};
}
toString() {
return super.toString() + `\nEvkodium: ${this.evkodium.value * this.evkodium.density}`;
}
}
import { Turtle } from './turtle.js';
export class GalapagosTurtle extends Turtle {
constructor(name, age, gender) {
super(name, age, gender);
this._thingsEaten = [];
}
get thingsEaten() {
return this._thingsEaten;
}
eat(food) {
this._thingsEaten.push(food);
}
grow(age) {
super.grow(age);
this._thingsEaten = [];
}
toString() {
return super.toString() + `\nThings, eaten this year: ${this.thingsEaten.join(', ')}`;
}
}
import { Turtle } from './turtle.js';
export class NinjaTurtle extends Turtle {
constructor(name, age, gender, maskColor, weapon) {
super(name, age, gender);
this._maskColor = maskColor;
this._weapon = weapon;
this._level = 0;
}
grow(age) {
super.grow(age);
this._level += age;
}
toString() {
let status = 'BEYOND GODLIKE';
if (this.level < 25) {
status = 'an apprentice';
} else if (this.level < 100) {
status = 'smokin strong';
}
return super.toString() + `\n${this.name.substr(0, 3)} wears a ${this._maskColor} mask, and is ${status} with the ${this._weapon}.`;
}
}
export class Turtle {
constructor(name, age, gender) {
if (new.target === Turtle) {
throw new Error("Abstract");
}
this._name = name;
this._age = age;
this._gender = gender;
}
get name() {
return this._name;
}
get age() {
return this._age;
}
get gender() {
return this._gender;
}
grow(age) {
this._age += age;
}
toString() {
return `Turtle: ${this.name}\nAged – ${this.age}; Gender – ${thus.gender}`;
}
}
import { Turtle } from './turtle.js';
export class WaterTurtle extends Turtle {
constructor(name, age, gender, waterPool) {
super(name, age, gender);
this._waterPool = waterPool;
}
get currentWaterPool() {
return this._waterPool;
}
travel(waterPool) {
this._waterPool = waterPool;
this.grow(5);
}
toString() {
return super.toString() + `\nCurrently inhabiting ${this.currentWaterPool}`;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment