Removed spaces from top-level directory names.

Spaces tend to cause annoyances in a Unix-style shell environment.
This change fixes that.
This commit is contained in:
Chris Reuter
2021-11-21 18:30:21 -05:00
parent df2e7426eb
commit d26dbf036a
1725 changed files with 0 additions and 0 deletions

7
68_Orbit/README.md Normal file
View File

@@ -0,0 +1,7 @@
### Orbit
As published in Basic Computer Games (1978)
https://www.atariarchives.org/basicgames/showpage.php?page=124
Downloaded from Vintage Basic at
http://www.vintage-basic.net/games.html

View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Microsoft C#](https://docs.microsoft.com/en-us/dotnet/csharp/)

192
68_Orbit/java/Orbit.java Normal file
View File

@@ -0,0 +1,192 @@
import java.lang.Integer;
import java.lang.Math;
import java.util.Scanner;
/**
* Game of Orbit
* <p>
* Based on the BASIC game of Orbit here
* https://github.com/coding-horror/basic-computer-games/blob/main/68%20Orbit/orbit.bas
* <p>
* Note: The idea was to create a version of the 1970's BASIC game in Java, without introducing
* new features - no additional text, error checking, etc has been added.
*
* Converted from BASIC to Java by Darren Cardenas.
*/
public class Orbit {
private final Scanner scan; // For user input
public Orbit() {
scan = new Scanner(System.in);
} // End of constructor Orbit
public void play() {
showIntro();
startGame();
} // End of method play
private static void showIntro() {
System.out.println(" ".repeat(32) + "ORBIT");
System.out.println(" ".repeat(14) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
System.out.println("\n\n");
System.out.println("SOMEWHERE ABOVE YOUR PLANET IS A ROMULAN SHIP.");
System.out.println("");
System.out.println("THE SHIP IS IN A CONSTANT POLAR ORBIT. ITS");
System.out.println("DISTANCE FROM THE CENTER OF YOUR PLANET IS FROM");
System.out.println("10,000 TO 30,000 MILES AND AT ITS PRESENT VELOCITY CAN");
System.out.println("CIRCLE YOUR PLANET ONCE EVERY 12 TO 36 HOURS.");
System.out.println("");
System.out.println("UNFORTUNATELY, THEY ARE USING A CLOAKING DEVICE SO");
System.out.println("YOU ARE UNABLE TO SEE THEM, BUT WITH A SPECIAL");
System.out.println("INSTRUMENT YOU CAN TELL HOW NEAR THEIR SHIP YOUR");
System.out.println("PHOTON BOMB EXPLODED. YOU HAVE SEVEN HOURS UNTIL THEY");
System.out.println("HAVE BUILT UP SUFFICIENT POWER IN ORDER TO ESCAPE");
System.out.println("YOUR PLANET'S GRAVITY.");
System.out.println("");
System.out.println("YOUR PLANET HAS ENOUGH POWER TO FIRE ONE BOMB AN HOUR.");
System.out.println("");
System.out.println("AT THE BEGINNING OF EACH HOUR YOU WILL BE ASKED TO GIVE AN");
System.out.println("ANGLE (BETWEEN 0 AND 360) AND A DISTANCE IN UNITS OF");
System.out.println("100 MILES (BETWEEN 100 AND 300), AFTER WHICH YOUR BOMB'S");
System.out.println("DISTANCE FROM THE ENEMY SHIP WILL BE GIVEN.");
System.out.println("");
System.out.println("AN EXPLOSION WITHIN 5,000 MILES OF THE ROMULAN SHIP");
System.out.println("WILL DESTROY IT.");
System.out.println("");
System.out.println("BELOW IS A DIAGRAM TO HELP YOU VISUALIZE YOUR PLIGHT.");
System.out.println("");
System.out.println("");
System.out.println(" 90");
System.out.println(" 0000000000000");
System.out.println(" 0000000000000000000");
System.out.println(" 000000 000000");
System.out.println(" 00000 00000");
System.out.println(" 00000 XXXXXXXXXXX 00000");
System.out.println(" 00000 XXXXXXXXXXXXX 00000");
System.out.println(" 0000 XXXXXXXXXXXXXXX 0000");
System.out.println(" 0000 XXXXXXXXXXXXXXXXX 0000");
System.out.println(" 0000 XXXXXXXXXXXXXXXXXXX 0000");
System.out.println("180<== 00000 XXXXXXXXXXXXXXXXXXX 00000 ==>0");
System.out.println(" 0000 XXXXXXXXXXXXXXXXXXX 0000");
System.out.println(" 0000 XXXXXXXXXXXXXXXXX 0000");
System.out.println(" 0000 XXXXXXXXXXXXXXX 0000");
System.out.println(" 00000 XXXXXXXXXXXXX 00000");
System.out.println(" 00000 XXXXXXXXXXX 00000");
System.out.println(" 00000 00000");
System.out.println(" 000000 000000");
System.out.println(" 0000000000000000000");
System.out.println(" 0000000000000");
System.out.println(" 270");
System.out.println("");
System.out.println("X - YOUR PLANET");
System.out.println("O - THE ORBIT OF THE ROMULAN SHIP");
System.out.println("");
System.out.println("ON THE ABOVE DIAGRAM, THE ROMULAN SHIP IS CIRCLING");
System.out.println("COUNTERCLOCKWISE AROUND YOUR PLANET. DON'T FORGET THAT");
System.out.println("WITHOUT SUFFICIENT POWER THE ROMULAN SHIP'S ALTITUDE");
System.out.println("AND ORBITAL RATE WILL REMAIN CONSTANT.");
System.out.println("");
System.out.println("GOOD LUCK. THE FEDERATION IS COUNTING ON YOU.");
} // End of method showIntro
private void startGame() {
double bombDistance = 0;
int bombAltitude = 0;
int bombAngle = 0;
int deltaAngle = 0;
int hour = 0;
int shipAltitude = 0;
int shipAngle = 0;
int shipRate = 0;
String userResponse = "";
// Begin outer while loop
while (true) {
shipAngle = (int) (361 * Math.random());
shipAltitude = (int) (201 * Math.random() + 200);
shipRate = (int) (21 * Math.random() + 10);
hour = 0;
// Begin time limit loop
while (hour < 7) {
System.out.println("");
System.out.println("");
System.out.println("THIS IS HOUR " + (hour + 1) + ", AT WHAT ANGLE DO YOU WISH TO SEND");
System.out.print("YOUR PHOTON BOMB? ");
bombAngle = Integer.parseInt(scan.nextLine());
System.out.print("HOW FAR OUT DO YOU WISH TO DETONATE IT? ");
bombAltitude = Integer.parseInt(scan.nextLine());
System.out.println("");
System.out.println("");
// Update ship position
shipAngle += shipRate;
// Handle full revolutions
if (shipAngle >= 360) {
shipAngle -= 360;
}
deltaAngle = Math.abs(shipAngle - bombAngle);
// Keep angle in upper quadrants
if (deltaAngle >= 180) {
deltaAngle = 360 - deltaAngle;
}
bombDistance = Math.sqrt(shipAltitude * shipAltitude + bombAltitude * bombAltitude - 2 * shipAltitude
* bombAltitude * Math.cos(deltaAngle * Math.PI / 180));
System.out.format("YOUR PHOTON BOMB EXPLODED " + "%.5f" + "*10^2 MILES FROM THE\n", bombDistance);
System.out.println("ROMULAN SHIP.");
// Win condition
if (bombDistance <= 50) {
System.out.println("YOU HAVE SUCCESSFULLY COMPLETED YOUR MISSION.");
break;
}
hour++;
} // End time limit loop
// Lose condition
if (hour == 7) {
System.out.println("YOU HAVE ALLOWED THE ROMULANS TO ESCAPE.");
}
System.out.println("ANOTHER ROMULAN SHIP HAS GONE INTO ORBIT.");
System.out.print("DO YOU WISH TO TRY TO DESTROY IT? ");
userResponse = scan.nextLine();
if (!userResponse.toUpperCase().equals("YES")) {
System.out.println("GOOD BYE.");
break;
}
} // End outer while loop
} // End of method startGame
public static void main(String[] args) {
Orbit game = new Orbit();
game.play();
} // End of method main
} // End of class Orbit

3
68_Orbit/java/README.md Normal file
View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Oracle Java](https://openjdk.java.net/)

View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells)

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>ORBIT</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="orbit.js"></script>
</body>
</html>

View File

@@ -0,0 +1,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();

96
68_Orbit/orbit.bas Normal file
View File

@@ -0,0 +1,96 @@
2 PRINT TAB(33);"ORBIT"
4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
6 PRINT:PRINT:PRINT
10 PRINT "SOMEWHERE ABOVE YOUR PLANET IS A ROMULAN SHIP."
15 PRINT
20 PRINT "THE SHIP IS IN A CONSTANT POLAR ORBIT. ITS"
25 PRINT "DISTANCE FROM THE CENTER OF YOUR PLANET IS FROM"
30 PRINT "10,000 TO 30,000 MILES AND AT ITS PRESENT VELOCITY CAN"
31 PRINT "CIRCLE YOUR PLANET ONCE EVERY 12 TO 36 HOURS."
35 PRINT
40 PRINT "UNFORTUNATELY, THEY ARE USING A CLOAKING DEVICE SO"
45 PRINT "YOU ARE UNABLE TO SEE THEM, BUT WITH A SPECIAL"
50 PRINT "INSTRUMENT YOU CAN TELL HOW NEAR THEIR SHIP YOUR"
55 PRINT "PHOTON BOMB EXPLODED. YOU HAVE SEVEN HOURS UNTIL THEY"
60 PRINT "HAVE BUILT UP SUFFICIENT POWER IN ORDER TO ESCAPE"
65 PRINT "YOUR PLANET'S GRAVITY."
70 PRINT
75 PRINT "YOUR PLANET HAS ENOUGH POWER TO FIRE ONE BOMB AN HOUR."
80 PRINT
85 PRINT "AT THE BEGINNING OF EACH HOUR YOU WILL BE ASKED TO GIVE AN"
90 PRINT "ANGLE (BETWEEN 0 AND 360) AND A DISTANCE IN UNITS OF"
95 PRINT "100 MILES (BETWEEN 100 AND 300), AFTER WHICH YOUR BOMB'S"
100 PRINT "DISTANCE FROM THE ENEMY SHIP WILL BE GIVEN."
105 PRINT
110 PRINT "AN EXPLOSION WITHIN 5,000 MILES OF THE ROMULAN SHIP"
111 PRINT "WILL DESTROY IT."
114 PRINT
115 PRINT "BELOW IS A DIAGRAM TO HELP YOU VISUALIZE YOUR PLIGHT."
116 PRINT
117 PRINT
168 PRINT " 90"
170 PRINT " 0000000000000"
171 PRINT " 0000000000000000000"
172 PRINT " 000000 000000"
173 PRINT " 00000 00000"
174 PRINT " 00000 XXXXXXXXXXX 00000"
175 PRINT " 00000 XXXXXXXXXXXXX 00000"
176 PRINT " 0000 XXXXXXXXXXXXXXX 0000"
177 PRINT " 0000 XXXXXXXXXXXXXXXXX 0000"
178 PRINT " 0000 XXXXXXXXXXXXXXXXXXX 0000"
179 PRINT "180<== 00000 XXXXXXXXXXXXXXXXXXX 00000 ==>0"
180 PRINT " 0000 XXXXXXXXXXXXXXXXXXX 0000"
181 PRINT " 0000 XXXXXXXXXXXXXXXXX 0000"
182 PRINT " 0000 XXXXXXXXXXXXXXX 0000"
183 PRINT " 00000 XXXXXXXXXXXXX 00000"
184 PRINT " 00000 XXXXXXXXXXX 00000"
185 PRINT " 00000 00000"
186 PRINT " 000000 000000"
187 PRINT " 0000000000000000000"
188 PRINT " 0000000000000"
190 PRINT " 270"
192 PRINT
195 PRINT "X - YOUR PLANET"
196 PRINT "O - THE ORBIT OF THE ROMULAN SHIP"
197 PRINT
198 PRINT "ON THE ABOVE DIAGRAM, THE ROMULAN SHIP IS CIRCLING"
199 PRINT "COUNTERCLOCKWISE AROUND YOUR PLANET. DON'T FORGET THAT"
200 PRINT "WITHOUT SUFFICIENT POWER THE ROMULAN SHIP'S ALTITUDE"
210 PRINT "AND ORBITAL RATE WILL REMAIN CONSTANT."
220 PRINT
230 PRINT "GOOD LUCK. THE FEDERATION IS COUNTING ON YOU."
270 A=INT(360*RND(1))
280 D=INT(200*RND(1)+200)
290 R=INT(20*RND(1)+10)
300 H=0
310 IF H=7 THEN 490
320 H=H+1
325 PRINT
326 PRINT
330 PRINT "THIS IS HOUR";H;", AT WHAT ANGLE DO YOU WISH TO SEND"
335 PRINT "YOUR PHOTON BOMB";
340 INPUT A1
350 PRINT "HOW FAR OUT DO YOU WISH TO DETONATE IT";
360 INPUT D1
365 PRINT
366 PRINT
370 A=A+R
380 IF A<360 THEN 400
390 A=A-360
400 T=ABS(A-A1)
410 IF T<180 THEN 430
420 T=360-T
430 C=SQR(D*D+D1*D1-2*D*D1*COS(T*3.14159/180))
440 PRINT "YOUR PHOTON BOMB EXPLODED";C;"*10^2 MILES FROM THE"
445 PRINT "ROMULAN SHIP."
450 IF C<=50 THEN 470
460 GOTO 310
470 PRINT "YOU HAVE SUCCESFULLY COMPLETED YOUR MISSION."
480 GOTO 500
490 PRINT "YOU HAVE ALLOWED THE ROMULANS TO ESCAPE."
500 PRINT "ANOTHER ROMULAN SHIP HAS GONE INTO ORBIT."
510 PRINT "DO YOU WISH TO TRY TO DESTROY IT";
520 INPUT C$
530 IF C$="YES" THEN 270
540 PRINT "GOOD BYE."
999 END

View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))

3
68_Orbit/perl/README.md Normal file
View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Perl](https://www.perl.org/)

View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Python](https://www.python.org/about/)

163
68_Orbit/python/orbit.py Normal file
View File

@@ -0,0 +1,163 @@
"""
ORBIT
Orbital mechanics simulation
Port by Dave LeCompte
"""
import math
import random
PAGE_WIDTH = 64
def print_centered(msg):
spaces = " " * ((PAGE_WIDTH - len(msg)) // 2)
print(spaces + msg)
def print_instructions():
print(
"""SOMEWHERE ABOVE YOUR PLANET IS A ROMULAN SHIP.
THE SHIP IS IN A CONSTANT POLAR ORBIT. ITS
DISTANCE FROM THE CENTER OF YOUR PLANET IS FROM
10,000 TO 30,000 MILES AND AT ITS PRESENT VELOCITY CAN
CIRCLE YOUR PLANET ONCE EVERY 12 TO 36 HOURS.
UNFORTUNATELY, THEY ARE USING A CLOAKING DEVICE SO
YOU ARE UNABLE TO SEE THEM, BUT WITH A SPECIAL
INSTRUMENT YOU CAN TELL HOW NEAR THEIR SHIP YOUR
PHOTON BOMB EXPLODED. YOU HAVE SEVEN HOURS UNTIL THEY
HAVE BUILT UP SUFFICIENT POWER IN ORDER TO ESCAPE
YOUR PLANET'S GRAVITY.
YOUR PLANET HAS ENOUGH POWER TO FIRE ONE BOMB AN HOUR.
AT THE BEGINNING OF EACH HOUR YOU WILL BE ASKED TO GIVE AN
ANGLE (BETWEEN 0 AND 360) AND A DISTANCE IN UNITS OF
100 MILES (BETWEEN 100 AND 300), AFTER WHICH YOUR BOMB'S
DISTANCE FROM THE ENEMY SHIP WILL BE GIVEN.
AN EXPLOSION WITHIN 5,000 MILES OF THE ROMULAN SHIP
WILL DESTROY IT.
BELOW IS A DIAGRAM TO HELP YOU VISUALIZE YOUR PLIGHT.
90
0000000000000
0000000000000000000
000000 000000
00000 00000
00000 XXXXXXXXXXX 00000
00000 XXXXXXXXXXXXX 00000
0000 XXXXXXXXXXXXXXX 0000
0000 XXXXXXXXXXXXXXXXX 0000
0000 XXXXXXXXXXXXXXXXXXX 0000
180<== 00000 XXXXXXXXXXXXXXXXXXX 00000 ==>0
0000 XXXXXXXXXXXXXXXXXXX 0000
0000 XXXXXXXXXXXXXXXXX 0000
0000 XXXXXXXXXXXXXXX 0000
00000 XXXXXXXXXXXXX 00000
00000 XXXXXXXXXXX 00000
00000 00000
000000 000000
0000000000000000000
0000000000000
270
X - YOUR PLANET
O - THE ORBIT OF THE ROMULAN SHIP
ON THE ABOVE DIAGRAM, THE ROMULAN SHIP IS CIRCLING
COUNTERCLOCKWISE AROUND YOUR PLANET. DON'T FORGET THAT
WITHOUT SUFFICIENT POWER THE ROMULAN SHIP'S ALTITUDE
AND ORBITAL RATE WILL REMAIN CONSTANT.
GOOD LUCK. THE FEDERATION IS COUNTING ON YOU.
"""
)
def get_yes_or_no():
while True:
response = input().upper()
if response == "YES":
return True
elif response == "NO":
return False
else:
print("PLEASE TYPE 'YES' OR 'NO'")
def game_over(is_success):
if is_success:
print("YOU HAVE SUCCESSFULLY COMPLETED YOUR MISSION.")
else:
print("YOU HAVE ALLOWED THE ROMULANS TO ESCAPE.")
print("ANOTHER ROMULAN SHIP HAS GONE INTO ORBIT.")
print("DO YOU WISH TO TRY TO DESTROY IT?")
return get_yes_or_no()
def play_game():
rom_angle = random.randint(0, 359)
rom_distance = random.randint(100, 300)
rom_angular_velocity = random.randint(10, 30)
hour = 0
while hour < 7:
hour += 1
print()
print()
print(f"THIS IS HOUR {hour}, AT WHAT ANGLE DO YOU WISH TO SEND")
print("YOUR PHOTON BOMB?")
bomb_angle = float(input())
print("HOW FAR OUT DO YOU WISH TO DETONATE IT?")
bomb_distance = float(input())
print()
print()
rom_angle = (rom_angle + rom_angular_velocity) % 360
angular_difference = rom_angle - bomb_angle
c = math.sqrt(
rom_distance ** 2
+ bomb_distance ** 2
- 2
* rom_distance
* bomb_distance
* math.cos(math.radians(angular_difference))
)
print(f"YOUR PHOTON BOMB EXPLODED {c:.4f}*10^2 MILES FROM THE")
print("ROMULAN SHIP.")
if c <= 50:
# Destroyed the Romulan
return True
# Ran out of time
return False
def main():
print_centered("ORBIT")
print_centered("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY")
print()
print()
print()
print_instructions()
while True:
success = play_game()
again = game_over(success)
if not again:
return
if __name__ == "__main__":
main()

3
68_Orbit/ruby/README.md Normal file
View File

@@ -0,0 +1,3 @@
Original source downloaded [from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Ruby](https://www.ruby-lang.org/en/)

3
68_Orbit/vbnet/README.md Normal file
View File

@@ -0,0 +1,3 @@
Original BASIC source [downloaded from Vintage Basic](http://www.vintage-basic.net/games.html)
Conversion to [Visual Basic .NET](https://en.wikipedia.org/wiki/Visual_Basic_.NET)