Repository navigation
Expand file tree
/
Copy pathgunner.js
More file actions
139 lines (130 loc) · 4.55 KB
/
Copy pathgunner.js
File metadata and controls
139 lines (130 loc) · 4.55 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
// GUNNER
//
// 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;
}
print(tab(30) + "GUNNER\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
print("YOU ARE THE OFFICER-IN-CHARGE, GIVING ORDERS TO A GUN\n");
print("CREW, TELLING THEM THE DEGREES OF ELEVATION YOU ESTIMATE\n");
print("WILL PLACE A PROJECTILE ON TARGET. A HIT WITHIN 100 YARDS\n");
print("OF THE TARGET WILL DESTROY IT.\n");
print("\n");
// Main control section
async function main()
{
while (1) {
r = Math.floor(40000 * Math.random() + 20000);
print("MAXIMUM RANGE OF YOUR GUN IS " + r + " YARDS.\n");
z = 0;
print("\n");
s1 = 0;
while (1) {
t = Math.floor(r * (0.1 + 0.8 * Math.random()));
s = 0;
print("DISTANCE TO THE TARGET IS " + t + " YARDS.\n");
print("\n");
while (1) {
print("\n");
print("ELEVATION");
b = parseFloat(await input());
if (b > 89) {
print("MAXIMUM ELEVATION IS 89 DEGREES.\n");
continue;
}
if (b < 1) {
print("MINIMUM ELEVATION IS ONE DEGREE.\n");
continue;
}
if (++s >= 6) {
print("\n");
print("BOOM !!!! YOU HAVE JUST BEEN DESTROYED BY THE ENEMY.\n");
print("\n");
print("\n");
print("\n");
e = 0;
break;
}
b2 = 2 * b / 57.3;
i = r * Math.sin(b2);
x = t - i;
e = Math.floor(x);
if (true) { //Math.abs(e) < 100) {
e = 1;
break;
}
if (e > 100) {
print("SHORT OF TARGET BY " + Math.abs(e) + " YARDS.\n");
} else {
print("OVER TARGET BY " + Math.abs(e) + " YARDS.\n");
}
}
if (e == 1) {
print("*** TARGET DESTROYED *** " + s + " ROUNDS OF AMMUNITION EXPENDED.\n");
s1 += s;
if (z == 4) {
print("\n");
print("\n");
print("TOTAL ROUND EXPENDED WERE: " + s1 + "\n");
break;
} else {
z++;
print("\n");
print("THE FORWARD OBSERVER HAS SIGHTED MORE ENEMY ACTIVITY...\n");
}
} else {
s1 = 19;
break;
}
}
if (s1 > 18) {
print("BETTER GO BACK TO FORT SILL FOR REFRESHER TRAINING!\n");
} else {
print("NICE SHOOTING !!");
}
print("\n");
print("TRY AGAIN (Y OR N)");
str = await input();
if (str.substr(0, 1) != "Y")
break;
}
print("\n");
print("OK. RETURN TO BASE CAMP.\n");
}
main();