Skip to content

Commit a42981c

Browse files
committed
did the whole friggin thing
1 parent 50c5734 commit a42981c

File tree

9 files changed

+241
-1
lines changed

9 files changed

+241
-1
lines changed

studio/Astronaut.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
exports.Astronaut = void 0;
4+
var Astronaut = /** @class */ (function () {
5+
function Astronaut(massKg, name) {
6+
this.name = name;
7+
this.massKg = massKg;
8+
}
9+
return Astronaut;
10+
}());
11+
exports.Astronaut = Astronaut;

studio/Cargo.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
exports.Cargo = void 0;
4+
var Cargo = /** @class */ (function () {
5+
function Cargo(massKg, material) {
6+
this.massKg = massKg;
7+
this.material = material;
8+
}
9+
return Cargo;
10+
}());
11+
exports.Cargo = Cargo;

studio/Payload.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"use strict";
2+
exports.__esModule = true;

studio/Rocket.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
exports.Rocket = void 0;
4+
var Rocket = /** @class */ (function () {
5+
function Rocket(name, totalCapacityKg) {
6+
this.cargoItems = [];
7+
this.astronauts = [];
8+
this.name = name;
9+
this.totalCapacityKg = totalCapacityKg;
10+
}
11+
Rocket.prototype.sumMass = function (items) {
12+
var totalMass = 0;
13+
for (var i = 0; i < items.length; i++) {
14+
totalMass += items[i].massKg;
15+
}
16+
return totalMass;
17+
};
18+
Rocket.prototype.currentMassKg = function () {
19+
return this.sumMass(this.cargoItems) + this.sumMass(this.astronauts);
20+
};
21+
Rocket.prototype.canAdd = function (item) {
22+
if (this.currentMassKg() + item.massKg <= this.totalCapacityKg) {
23+
return true;
24+
}
25+
else {
26+
return false;
27+
}
28+
};
29+
Rocket.prototype.addCargo = function (cargo) {
30+
if (this.canAdd(cargo) === true) {
31+
this.cargoItems.push(cargo);
32+
return true;
33+
}
34+
else {
35+
return false;
36+
}
37+
};
38+
Rocket.prototype.addAstronaut = function (astronaut) {
39+
if (this.canAdd(astronaut) === true) {
40+
this.astronauts.push(astronaut);
41+
return true;
42+
}
43+
else {
44+
return false;
45+
}
46+
};
47+
return Rocket;
48+
}());
49+
exports.Rocket = Rocket;

studio/astronaut.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Payload } from "./Payload";
2+
3+
export class Astronaut implements Payload {
4+
massKg: number;
5+
name: string;
6+
7+
constructor (massKg: number, name:string) {
8+
this.name = name;
9+
this.massKg = massKg;
10+
}
11+
}

studio/cargo.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Payload } from "./Payload";
2+
3+
export class Cargo implements Payload {
4+
massKg: number;
5+
material: string;
6+
7+
constructor(massKg: number, material:string) {
8+
this.massKg = massKg;
9+
this.material = material;
10+
}
11+
}

studio/index.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
"use strict";
2+
// Instructions are published in the online book. The URL is:
3+
// https://education.launchcode.org/intro-to-professional-web-dev/chapters/typescript/studio.html
4+
exports.__esModule = true;
5+
// TODO:
6+
// * Code the Astronaut, Cargo, and Rocket classes in new files.
7+
// * Import the three classes into this file.
8+
var Astronaut_1 = require("./Astronaut");
9+
var Cargo_1 = require("./Cargo");
10+
var Rocket_1 = require("./Rocket");
11+
var falcon9 = new Rocket_1.Rocket('Falcon 9', 7500);
12+
var astronauts = [
13+
new Astronaut_1.Astronaut(75, 'Mae'),
14+
new Astronaut_1.Astronaut(81, 'Sally'),
15+
new Astronaut_1.Astronaut(99, 'Charles')
16+
];
17+
for (var i = 0; i < astronauts.length; i++) {
18+
var astronaut = astronauts[i];
19+
var status_1 = '';
20+
if (falcon9.addAstronaut(astronaut)) {
21+
status_1 = "On board";
22+
}
23+
else {
24+
status_1 = "Not on board";
25+
}
26+
console.log(astronaut.name + ": " + status_1);
27+
}
28+
var cargo = [
29+
new Cargo_1.Cargo(3107.39, "Satellite"),
30+
new Cargo_1.Cargo(1000.39, "Space Probe"),
31+
new Cargo_1.Cargo(753, "Water"),
32+
new Cargo_1.Cargo(541, "Food"),
33+
new Cargo_1.Cargo(2107.39, "Tesla Roadster"),
34+
];
35+
for (var i = 0; i < cargo.length; i++) {
36+
var c = cargo[i];
37+
var loaded = '';
38+
if (falcon9.addCargo(c)) {
39+
loaded = "Loaded";
40+
}
41+
else {
42+
loaded = "Not loaded";
43+
}
44+
console.log(c.material + ": " + loaded);
45+
}
46+
console.log("Final cargo and astronaut mass: " + falcon9.currentMassKg() + " kg.");

studio/index.ts

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,47 @@
33

44
// TODO:
55
// * Code the Astronaut, Cargo, and Rocket classes in new files.
6-
// * Import the three classes into this file.
6+
// * Import the three classes into this file.
7+
import { Astronaut } from './Astronaut';
8+
import { Cargo } from './Cargo';
9+
import { Rocket } from './Rocket';
10+
11+
let falcon9: Rocket = new Rocket('Falcon 9', 7500);
12+
13+
let astronauts: Astronaut[] = [
14+
new Astronaut(75, 'Mae'),
15+
new Astronaut(81, 'Sally'),
16+
new Astronaut(99, 'Charles')
17+
];
18+
19+
for (let i = 0; i < astronauts.length; i++) {
20+
let astronaut = astronauts[i];
21+
let status = '';
22+
if (falcon9.addAstronaut(astronaut)) {
23+
status = "On board";
24+
} else {
25+
status = "Not on board";
26+
}
27+
console.log(`${astronaut.name}: ${status}`);
28+
}
29+
30+
let cargo: Cargo[] = [
31+
new Cargo(3107.39, "Satellite"),
32+
new Cargo(1000.39, "Space Probe"),
33+
new Cargo(753, "Water"),
34+
new Cargo(541, "Food"),
35+
new Cargo(2107.39, "Tesla Roadster"),
36+
];
37+
38+
for (let i = 0; i < cargo.length; i++) {
39+
let c = cargo[i];
40+
let loaded = '';
41+
if (falcon9.addCargo(c)) {
42+
loaded = "Loaded"
43+
} else {
44+
loaded = "Not loaded"
45+
}
46+
console.log(`${c.material}: ${loaded}`);
47+
}
48+
49+
console.log(`Final cargo and astronaut mass: ${falcon9.currentMassKg()} kg.`);

studio/rocket.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { Payload } from "./Payload";
2+
import { Cargo } from "./cargo";
3+
import { Astronaut } from "./astronaut";
4+
5+
export class Rocket {
6+
name: string;
7+
totalCapacityKg: number;
8+
cargoItems: Cargo[] = [];
9+
astronauts: Astronaut[] = [];
10+
11+
constructor (name:string, totalCapacityKg: number) {
12+
this.name = name;
13+
this.totalCapacityKg = totalCapacityKg;
14+
}
15+
16+
sumMass( items: Payload[] ): number {
17+
let totalMass: number = 0;
18+
for (let i = 0; i < items.length; i++) {
19+
totalMass += items[i].massKg;
20+
}
21+
return totalMass;
22+
}
23+
24+
currentMassKg(): number {
25+
return this.sumMass(this.cargoItems) + this.sumMass(this.astronauts);
26+
}
27+
28+
canAdd(item: Payload): boolean {
29+
if (this.currentMassKg() + item.massKg <= this.totalCapacityKg) {
30+
return true;
31+
} else {
32+
return false;
33+
}
34+
35+
}
36+
37+
addCargo(cargo: Cargo): boolean {
38+
if (this.canAdd(cargo) === true) {
39+
this.cargoItems.push(cargo);
40+
return true;
41+
} else {
42+
return false;
43+
}
44+
}
45+
46+
addAstronaut(astronaut: Astronaut): boolean {
47+
if (this.canAdd(astronaut) === true) {
48+
this.astronauts.push(astronaut);
49+
return true;
50+
} else {
51+
return false;
52+
}
53+
}
54+
55+
56+
}

0 commit comments

Comments
 (0)