mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 07:10:42 -08:00
added 84_Super_Star_Trek Java port
This commit is contained in:
1239
84_Super_Star_Trek/java/SuperStarTrekGame.java
Normal file
1239
84_Super_Star_Trek/java/SuperStarTrekGame.java
Normal file
File diff suppressed because it is too large
Load Diff
162
84_Super_Star_Trek/java/SuperStarTrekInstructions.java
Normal file
162
84_Super_Star_Trek/java/SuperStarTrekInstructions.java
Normal file
@@ -0,0 +1,162 @@
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
/**
|
||||
* SUPER STARTREK INSTRUCTIONS
|
||||
* MAR 5, 1978
|
||||
* Just the instructions for SUPERSTARTREK
|
||||
*
|
||||
* Ported to Java in Jan-Feb 2022 by
|
||||
* Taciano Dreckmann Perez (taciano.perez@gmail.com)
|
||||
*/
|
||||
public class SuperStarTrekInstructions {
|
||||
|
||||
public static void main(String[] args) {
|
||||
printBanner();
|
||||
final String reply = inputStr("DO YOU NEED INSTRUCTIONS (Y/N)? ");
|
||||
if ("Y".equals(reply)) {
|
||||
printInstructions();
|
||||
}
|
||||
}
|
||||
|
||||
static void printBanner() {
|
||||
print(tab(10)+"*************************************");
|
||||
print(tab(10)+"* *");
|
||||
print(tab(10)+"* *");
|
||||
print(tab(10)+"* * * SUPER STAR TREK * * *");
|
||||
print(tab(10)+"* *");
|
||||
print(tab(10)+"* *");
|
||||
print(tab(10)+"*************************************");
|
||||
}
|
||||
|
||||
static void printInstructions() {
|
||||
print(" INSTRUCTIONS FOR 'SUPER STAR TREK'");
|
||||
print("");
|
||||
print("1. WHEN YOU SEE \\COMMAND ?\\ PRINTED, ENTER ONE OF THE LEGAL");
|
||||
print(" COMMANDS (NAV,SRS,LRS,PHA,TOR,SHE,DAM,COM, OR XXX).");
|
||||
print("2. IF YOU SHOULD TYPE IN AN ILLEGAL COMMAND, YOU'LL GET A SHORT");
|
||||
print(" LIST OF THE LEGAL COMMANDS PRINTED OUT.");
|
||||
print("3. SOME COMMANDS REQUIRE YOU TO ENTER DATA (FOR EXAMPLE, THE");
|
||||
print(" 'NAV' COMMAND COMES BACK WITH 'COURSE (1-9) ?'.) IF YOU");
|
||||
print(" TYPE IN ILLEGAL DATA (LIKE NEGATIVE NUMBERS), THAN COMMAND");
|
||||
print(" WILL BE ABORTED");
|
||||
print("");
|
||||
print(" THE GALAXY IS DIVIDED INTO AN 8 X 8 QUADRANT GRID,");
|
||||
print("AND EACH QUADRANT IS FURTHER DIVIDED INTO AN 8 X 8 SECTOR GRID.");
|
||||
print("");
|
||||
print(" YOU WILL BE ASSIGNED A STARTING POINT SOMEWHERE IN THE");
|
||||
print("GALAXY TO BEGIN A TOUR OF DUTY AS COMANDER OF THE STARSHIP");
|
||||
print("\\ENTERPRISE\\; YOUR MISSION: TO SEEK AND DESTROY THE FLEET OF");
|
||||
print("KLINGON WARWHIPS WHICH ARE MENACING THE UNITED FEDERATION OF");
|
||||
print("PLANETS.");
|
||||
print("");
|
||||
print(" YOU HAVE THE FOLLOWING COMMANDS AVAILABLE TO YOU AS CAPTAIN");
|
||||
print("OF THE STARSHIP ENTERPRISE:");
|
||||
print("");
|
||||
print("\\NAV\\ COMMAND = WARP ENGINE CONTROL --");
|
||||
print(" COURSE IS IN A CIRCULAR NUMERICAL 4 3 2");
|
||||
print(" VECTOR ARRANGEMENT AS SHOWN . . .");
|
||||
print(" INTEGER AND REAL VALUES MAY BE ...");
|
||||
print(" USED. (THUS COURSE 1.5 IS HALF- 5 ---*--- 1");
|
||||
print(" WAY BETWEEN 1 AND 2 ...");
|
||||
print(" . . .");
|
||||
print(" VALUES MAY APPROACH 9.0, WHICH 6 7 8");
|
||||
print(" ITSELF IS EQUIVALENT TO 1.0");
|
||||
print(" COURSE");
|
||||
print(" ONE WARP FACTOR IS THE SIZE OF ");
|
||||
print(" ONE QUADTANT. THEREFORE, TO GET");
|
||||
print(" FROM QUADRANT 6,5 TO 5,5, YOU WOULD");
|
||||
print(" USE COURSE 3, WARP FACTOR 1.");
|
||||
print("");
|
||||
print("\\SRS\\ COMMAND = SHORT RANGE SENSOR SCAN");
|
||||
print(" SHOWS YOU A SCAN OF YOUR PRESENT QUADRANT.");
|
||||
print("");
|
||||
print(" SYMBOLOGY ON YOUR SENSOR SCREEN IS AS FOLLOWS:");
|
||||
print(" <*> = YOUR STARSHIP'S POSITION");
|
||||
print(" +K+ = KLINGON BATTLE CRUISER");
|
||||
print(" >!< = FEDERATION STARBASE (REFUEL/REPAIR/RE-ARM HERE!)");
|
||||
print(" * = STAR");
|
||||
print("");
|
||||
print(" A CONDENSED 'STATUS REPORT' WILL ALSO BE PRESENTED.");
|
||||
print("");
|
||||
print("\\LRS\\ COMMAND = LONG RANGE SENSOR SCAN");
|
||||
print(" SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE");
|
||||
print(" OF THE ENTERPRISE (WHICH IS IN THE MIDDLE OF THE SCAN)");
|
||||
print(" THE SCAN IS CODED IN THE FORM \\###\\, WHERE TH UNITS DIGIT");
|
||||
print(" IS THE NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF");
|
||||
print(" STARBASES, AND THE HUNDRESDS DIGIT IS THE NUMBER OF");
|
||||
print(" KLINGONS.");
|
||||
print("");
|
||||
print(" EXAMPLE - 207 = 2 KLINGONS, NO STARBASES, & 7 STARS.");
|
||||
print("");
|
||||
print("\\PHA\\ COMMAND = PHASER CONTROL.");
|
||||
print(" ALLOWS YOU TO DESTROY THE KLINGON BATTLE CRUISERS BY ");
|
||||
print(" ZAPPING THEM WITH SUITABLY LARGE UNITS OF ENERGY TO");
|
||||
print(" DEPLETE THEIR SHIELD POWER. (REMEMBER, KLINGONS HAVE");
|
||||
print(" PHASERS TOO!)");
|
||||
print("");
|
||||
print("\\TOR\\ COMMAND = PHOTON TORPEDO CONTROL");
|
||||
print(" TORPEDO COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL");
|
||||
print(" IF YOU HIT THE KLINGON VESSEL, HE IS DESTROYED AND");
|
||||
print(" CANNOT FIRE BACK AT YOU. IF YOU MISS, YOU ARE SUBJECT TO");
|
||||
print(" HIS PHASER FIRE. IN EITHER CASE, YOU ARE ALSO SUBJECT TO ");
|
||||
print(" THE PHASER FIRE OF ALL OTHER KLINGONS IN THE QUADRANT.");
|
||||
print("");
|
||||
print(" THE LIBRARY-COMPUTER (\\COM\\ COMMAND) HAS AN OPTION TO ");
|
||||
print(" COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)");
|
||||
print("");
|
||||
print("\\SHE\\ COMMAND = SHIELD CONTROL");
|
||||
print(" DEFINES THE NUMBER OF ENERGY UNITS TO BE ASSIGNED TO THE");
|
||||
print(" SHIELDS. ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY. NOTE");
|
||||
print(" THAN THE STATUS DISPLAY TOTAL ENERGY INCLUDES SHIELD ENERGY");
|
||||
print("");
|
||||
print("\\DAM\\ COMMAND = DAMMAGE CONTROL REPORT");
|
||||
print(" GIVES THE STATE OF REPAIR OF ALL DEVICES. WHERE A NEGATIVE");
|
||||
print(" 'STATE OF REPAIR' SHOWS THAT THE DEVICE IS TEMPORARILY");
|
||||
print(" DAMAGED.");
|
||||
print("");
|
||||
print("\\COM\\ COMMAND = LIBRARY-COMPUTER");
|
||||
print(" THE LIBRARY-COMPUTER CONTAINS SIX OPTIONS:");
|
||||
print(" OPTION 0 = CUMULATIVE GALACTIC RECORD");
|
||||
print(" THIS OPTION SHOWES COMPUTER MEMORY OF THE RESULTS OF ALL");
|
||||
print(" PREVIOUS SHORT AND LONG RANGE SENSOR SCANS");
|
||||
print(" OPTION 1 = STATUS REPORT");
|
||||
print(" THIS OPTION SHOWS THE NUMBER OF KLINGONS, STARDATES,");
|
||||
print(" AND STARBASES REMAINING IN THE GAME.");
|
||||
print(" OPTION 2 = PHOTON TORPEDO DATA");
|
||||
print(" WHICH GIVES DIRECTIONS AND DISTANCE FROM THE ENTERPRISE");
|
||||
print(" TO ALL KLINGONS IN YOUR QUADRANT");
|
||||
print(" OPTION 3 = STARBASE NAV DATA");
|
||||
print(" THIS OPTION GIVES DIRECTION AND DISTANCE TO ANY ");
|
||||
print(" STARBASE WITHIN YOUR QUADRANT");
|
||||
print(" OPTION 4 = DIRECTION/DISTANCE CALCULATOR");
|
||||
print(" THIS OPTION ALLOWS YOU TO ENTER COORDINATES FOR");
|
||||
print(" DIRECTION/DISTANCE CALCULATIONS");
|
||||
print(" OPTION 5 = GALACTIC /REGION NAME/ MAP");
|
||||
print(" THIS OPTION PRINTS THE NAMES OF THE SIXTEEN MAJOR ");
|
||||
print(" GALACTIC REGIONS REFERRED TO IN THE GAME.");
|
||||
}
|
||||
|
||||
static void print(final String s) {
|
||||
System.out.println(s);
|
||||
}
|
||||
|
||||
static String tab(final int n) {
|
||||
return IntStream.range(1, n).mapToObj(num -> " ").collect(Collectors.joining());
|
||||
}
|
||||
|
||||
static String inputStr(final String message) {
|
||||
System.out.print(message + "? ");
|
||||
final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
|
||||
try {
|
||||
return reader.readLine();
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user