Repository navigation
Expand file tree
/
Copy pathorbit.js
More file actions
155 lines (147 loc) · 6.06 KB
/
Copy pathorbit.js
File metadata and controls
155 lines (147 loc) · 6.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
// ORBIT
//
// Converted from BASIC to Javascript by Oscar Toledo G. (nanochess)
//
function print(str)
{
document.getElementById("output").appendChild(document.createTextNode(str));
}
function input()
{
var input_element;
var input_str;
return new Promise(function (resolve) {
input_element = document.createElement("INPUT");
print("? ");
input_element.setAttribute("type", "text");
input_element.setAttribute("length", "50");
document.getElementById("output").appendChild(input_element);
input_element.focus();
input_str = undefined;
input_element.addEventListener("keydown", function (event) {
if (event.keyCode == 13) {
input_str = input_element.value;
document.getElementById("output").removeChild(input_element);
print(input_str);
print("\n");
resolve(input_str);
}
});
});
}
function tab(space)
{
var str = "";
while (space-- > 0)
str += " ";
return str;
}
var a = [];
// Main program
async function main()
{
print(tab(33) + "ORBIT\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
print("SOMEWHERE ABOVE YOUR PLANET IS A ROMULAN SHIP.\n");
print("\n");
print("THE SHIP IS IN A CONSTANT POLAR ORBIT. ITS\n");
print("DISTANCE FROM THE CENTER OF YOUR PLANET IS FROM\n");
print("10,000 TO 30,000 MILES AND AT ITS PRESENT VELOCITY CAN\n");
print("CIRCLE YOUR PLANET ONCE EVERY 12 TO 36 HOURS.\n");
print("\n");
print("UNFORTUNATELY, THEY ARE USING A CLOAKING DEVICE SO\n");
print("YOU ARE UNABLE TO SEE THEM, BUT WITH A SPECIAL\n");
print("INSTRUMENT YOU CAN TELL HOW NEAR THEIR SHIP YOUR\n");
print("PHOTON BOMB EXPLODED. YOU HAVE SEVEN HOURS UNTIL THEY\n");
print("HAVE BUILT UP SUFFICIENT POWER IN ORDER TO ESCAPE\n");
print("YOUR PLANET'S GRAVITY.\n");
print("\n");
print("YOUR PLANET HAS ENOUGH POWER TO FIRE ONE BOMB AN HOUR.\n");
print("\n");
print("AT THE BEGINNING OF EACH HOUR YOU WILL BE ASKED TO GIVE AN\n");
print("ANGLE (BETWEEN 0 AND 360) AND A DISTANCE IN UNITS OF\n");
print("100 MILES (BETWEEN 100 AND 300), AFTER WHICH YOUR BOMB'S\n");
print("DISTANCE FROM THE ENEMY SHIP WILL BE GIVEN.\n");
print("\n");
print("AN EXPLOSION WITHIN 5,000 MILES OF THE ROMULAN SHIP\n");
print("WILL DESTROY IT.\n");
print("\n");
print("BELOW IS A DIAGRAM TO HELP YOU VISUALIZE YOUR PLIGHT.\n");
print("\n");
print("\n");
print(" 90\n");
print(" 0000000000000\n");
print(" 0000000000000000000\n");
print(" 000000 000000\n");
print(" 00000 00000\n");
print(" 00000 XXXXXXXXXXX 00000\n");
print(" 00000 XXXXXXXXXXXXX 00000\n");
print(" 0000 XXXXXXXXXXXXXXX 0000\n");
print(" 0000 XXXXXXXXXXXXXXXXX 0000\n");
print(" 0000 XXXXXXXXXXXXXXXXXXX 0000\n");
print("180<== 00000 XXXXXXXXXXXXXXXXXXX 00000 ==>0\n");
print(" 0000 XXXXXXXXXXXXXXXXXXX 0000\n");
print(" 0000 XXXXXXXXXXXXXXXXX 0000\n");
print(" 0000 XXXXXXXXXXXXXXX 0000\n");
print(" 00000 XXXXXXXXXXXXX 00000\n");
print(" 00000 XXXXXXXXXXX 00000\n");
print(" 00000 00000\n");
print(" 000000 000000\n");
print(" 0000000000000000000\n");
print(" 0000000000000\n");
print(" 270\n");
print("\n");
print("X - YOUR PLANET\n");
print("O - THE ORBIT OF THE ROMULAN SHIP\n");
print("\n");
print("ON THE ABOVE DIAGRAM, THE ROMULAN SHIP IS CIRCLING\n");
print("COUNTERCLOCKWISE AROUND YOUR PLANET. DON'T FORGET THAT\n");
print("WITHOUT SUFFICIENT POWER THE ROMULAN SHIP'S ALTITUDE\n");
print("AND ORBITAL RATE WILL REMAIN CONSTANT.\n");
print("\n");
print("GOOD LUCK. THE FEDERATION IS COUNTING ON YOU.\n");
while (1) {
a = Math.floor(360 * Math.random());
d = Math.floor(200 * Math.random() + 200);
r = Math.floor(20 * Math.random() + 10);
h = 0;
while (h < 7) {
print("\n");
print("\n");
print("THIS IS HOUR " + (h + 1) + ", AT WHAT ANGLE DO YOU WISH TO SEND\n");
print("YOUR PHOTON BOMB");
a1 = parseFloat(await input());
print("HOW FAR OUT DO YOU WISH TO DETONATE IT");
d1 = parseFloat(await input());
print("\n");
print("\n");
a += r;
if (a >= 360)
a -= 360;
t = Math.abs(a - a1);
if (t >= 180)
t = 360 - t;
c = Math.sqrt(d * d + d1 * d1 - 2 * d * d1 * Math.cos(t * Math.PI / 180));
print("YOUR PHOTON BOMB EXPLODED " + c + "*10^2 MILES FROM THE\n");
print("ROMULAN SHIP.\n");
if (c <= 50)
break;
h++;
}
if (h == 7) {
print("YOU HAVE ALLOWED THE ROMULANS TO ESCAPE.\n");
} else {
print("YOU HAVE SUCCESSFULLY COMPLETED YOUR MISSION.\n");
}
print("ANOTHER ROMULAN SHIP HAS GONE INTO ORBIT.\n");
print("DO YOU WISH TO TRY TO DESTROY IT");
str = await input();
if (str != "YES")
break;
}
print("GOOD BYE.\n");
}
main();