mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-21 23:00:43 -08:00
MAINT: Apply pre-commit
Remove byte-order-marker pre-commit check as there would be many adjustments necessary
This commit is contained in:
@@ -9,35 +9,35 @@ import java.lang.Math;
|
||||
* <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 Bowling {
|
||||
|
||||
private final Scanner scan; // For user input
|
||||
|
||||
|
||||
public class Bowling {
|
||||
|
||||
private final Scanner scan; // For user input
|
||||
|
||||
public Bowling() {
|
||||
|
||||
|
||||
scan = new Scanner(System.in);
|
||||
|
||||
} // End of constructor Bowling
|
||||
|
||||
} // End of constructor Bowling
|
||||
|
||||
public void play() {
|
||||
|
||||
|
||||
showIntro();
|
||||
startGame();
|
||||
|
||||
} // End of method play
|
||||
|
||||
|
||||
} // End of method play
|
||||
|
||||
private static void showIntro() {
|
||||
|
||||
|
||||
System.out.println(" ".repeat(33) + "BOWL");
|
||||
System.out.println(" ".repeat(14) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
|
||||
System.out.println("\n\n");
|
||||
|
||||
} // End of method showIntro
|
||||
|
||||
} // End of method showIntro
|
||||
|
||||
private void startGame() {
|
||||
|
||||
int ball = 0;
|
||||
@@ -45,234 +45,234 @@ public class Bowling {
|
||||
int frame = 0;
|
||||
int ii = 0; // Loop iterator
|
||||
int jj = 0; // Loop iterator
|
||||
int kk = 0; // Loop iterator
|
||||
int kk = 0; // Loop iterator
|
||||
int numPlayers = 0;
|
||||
int pinsDownBefore = 0;
|
||||
int pinsDownNow = 0;
|
||||
int player = 0;
|
||||
int randVal = 0;
|
||||
int result = 0;
|
||||
|
||||
|
||||
int[] pins = new int[16];
|
||||
|
||||
|
||||
int[][] scores = new int[101][7];
|
||||
|
||||
|
||||
String userResponse = "";
|
||||
|
||||
System.out.println("WELCOME TO THE ALLEY");
|
||||
System.out.println("BRING YOUR FRIENDS");
|
||||
System.out.println("BRING YOUR FRIENDS");
|
||||
System.out.println("OKAY LET'S FIRST GET ACQUAINTED");
|
||||
System.out.println("");
|
||||
System.out.println("THE INSTRUCTIONS (Y/N)");
|
||||
System.out.print("? ");
|
||||
|
||||
|
||||
userResponse = scan.nextLine();
|
||||
|
||||
if (userResponse.toUpperCase().equals("Y")) {
|
||||
|
||||
if (userResponse.toUpperCase().equals("Y")) {
|
||||
printRules();
|
||||
}
|
||||
|
||||
|
||||
System.out.print("FIRST OF ALL...HOW MANY ARE PLAYING? ");
|
||||
numPlayers = Integer.parseInt(scan.nextLine());
|
||||
|
||||
System.out.println("");
|
||||
System.out.println("VERY GOOD...");
|
||||
|
||||
System.out.println("");
|
||||
System.out.println("VERY GOOD...");
|
||||
|
||||
// Begin outer while loop
|
||||
while (true) {
|
||||
|
||||
for (ii = 1; ii <= 100; ii++) {
|
||||
for (jj = 1; jj <= 6; jj++) {
|
||||
scores[ii][jj] = 0;
|
||||
}
|
||||
|
||||
for (ii = 1; ii <= 100; ii++) {
|
||||
for (jj = 1; jj <= 6; jj++) {
|
||||
scores[ii][jj] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
frame = 1;
|
||||
|
||||
frame = 1;
|
||||
|
||||
// Begin frame while loop
|
||||
while (frame < 11) {
|
||||
|
||||
// Begin loop through all players
|
||||
for (player = 1; player <= numPlayers; player++) {
|
||||
|
||||
|
||||
pinsDownBefore = 0;
|
||||
ball = 1;
|
||||
result = 0;
|
||||
|
||||
for (ii = 1; ii <= 15; ii++) {
|
||||
pins[ii] = 0;
|
||||
|
||||
for (ii = 1; ii <= 15; ii++) {
|
||||
pins[ii] = 0;
|
||||
}
|
||||
|
||||
|
||||
while (true) {
|
||||
|
||||
|
||||
// Ball generator using mod '15' system
|
||||
|
||||
|
||||
System.out.println("TYPE ROLL TO GET THE BALL GOING.");
|
||||
System.out.print("? ");
|
||||
scan.nextLine();
|
||||
|
||||
|
||||
kk = 0;
|
||||
pinsDownNow = 0;
|
||||
|
||||
|
||||
for (ii = 1; ii <= 20; ii++) {
|
||||
|
||||
randVal = (int)(Math.random() * 100) + 1;
|
||||
|
||||
|
||||
randVal = (int)(Math.random() * 100) + 1;
|
||||
|
||||
for (jj = 1; jj <= 10; jj++) {
|
||||
|
||||
if (randVal < 15 * jj) {
|
||||
|
||||
if (randVal < 15 * jj) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
pins[15 * jj - randVal] = 1;
|
||||
}
|
||||
}
|
||||
pins[15 * jj - randVal] = 1;
|
||||
}
|
||||
|
||||
|
||||
// Pin diagram
|
||||
|
||||
|
||||
System.out.println("PLAYER: " + player + " FRAME: " + frame + " BALL: " + ball);
|
||||
|
||||
|
||||
for (ii = 0; ii <= 3; ii++) {
|
||||
|
||||
|
||||
System.out.println("");
|
||||
|
||||
|
||||
System.out.print(" ".repeat(ii));
|
||||
|
||||
for (jj = 1; jj <= 4 - ii; jj++) {
|
||||
|
||||
kk++;
|
||||
|
||||
if (pins[kk] == 1) {
|
||||
|
||||
|
||||
if (pins[kk] == 1) {
|
||||
|
||||
System.out.print("O ");
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
System.out.print("+ ");
|
||||
|
||||
System.out.print("+ ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
System.out.println("");
|
||||
|
||||
|
||||
// Roll analysis
|
||||
|
||||
for (ii = 1; ii <= 10; ii++) {
|
||||
pinsDownNow += pins[ii];
|
||||
}
|
||||
|
||||
if (pinsDownNow - pinsDownBefore == 0) {
|
||||
System.out.println("GUTTER!!");
|
||||
|
||||
for (ii = 1; ii <= 10; ii++) {
|
||||
pinsDownNow += pins[ii];
|
||||
}
|
||||
|
||||
if (ball == 1 && pinsDownNow == 10) {
|
||||
System.out.println("STRIKE!!!!!");
|
||||
|
||||
// Ring bell
|
||||
for (bell = 1; bell <= 4; bell++) {
|
||||
System.out.print("\007");
|
||||
|
||||
if (pinsDownNow - pinsDownBefore == 0) {
|
||||
System.out.println("GUTTER!!");
|
||||
}
|
||||
|
||||
if (ball == 1 && pinsDownNow == 10) {
|
||||
System.out.println("STRIKE!!!!!");
|
||||
|
||||
// Ring bell
|
||||
for (bell = 1; bell <= 4; bell++) {
|
||||
System.out.print("\007");
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}
|
||||
}
|
||||
result = 3;
|
||||
}
|
||||
|
||||
|
||||
if (ball == 2 && pinsDownNow == 10) {
|
||||
System.out.println("SPARE!!!!");
|
||||
result = 2;
|
||||
result = 2;
|
||||
}
|
||||
|
||||
|
||||
if (ball == 2 && pinsDownNow < 10) {
|
||||
System.out.println("ERROR!!!");
|
||||
result = 1;
|
||||
result = 1;
|
||||
}
|
||||
|
||||
if (ball == 1 && pinsDownNow < 10) {
|
||||
System.out.println("ROLL YOUR 2ND BALL");
|
||||
}
|
||||
|
||||
// Storage of the scores
|
||||
|
||||
System.out.println("");
|
||||
|
||||
scores[frame * player][ball] = pinsDownNow;
|
||||
|
||||
if (ball != 2) {
|
||||
ball = 2;
|
||||
pinsDownBefore = pinsDownNow;
|
||||
|
||||
if (result != 3) {
|
||||
scores[frame * player][ball] = pinsDownNow - pinsDownBefore;
|
||||
if (ball == 1 && pinsDownNow < 10) {
|
||||
System.out.println("ROLL YOUR 2ND BALL");
|
||||
}
|
||||
|
||||
// Storage of the scores
|
||||
|
||||
System.out.println("");
|
||||
|
||||
scores[frame * player][ball] = pinsDownNow;
|
||||
|
||||
if (ball != 2) {
|
||||
ball = 2;
|
||||
pinsDownBefore = pinsDownNow;
|
||||
|
||||
if (result != 3) {
|
||||
scores[frame * player][ball] = pinsDownNow - pinsDownBefore;
|
||||
if (result == 0) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
scores[frame * player][ball] = pinsDownNow;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
scores[frame * player][3] = result;
|
||||
|
||||
|
||||
scores[frame * player][3] = result;
|
||||
|
||||
} // End loop through all players
|
||||
|
||||
|
||||
frame++;
|
||||
|
||||
} // End frame while loop
|
||||
|
||||
} // End frame while loop
|
||||
|
||||
System.out.println("FRAMES");
|
||||
|
||||
|
||||
System.out.print(" ");
|
||||
for (ii = 1; ii <= 10; ii++) {
|
||||
System.out.print(ii + " ");
|
||||
for (ii = 1; ii <= 10; ii++) {
|
||||
System.out.print(ii + " ");
|
||||
}
|
||||
|
||||
|
||||
System.out.println("");
|
||||
|
||||
for (player = 1; player <= numPlayers; player++) {
|
||||
for (ii = 1; ii <= 3; ii++) {
|
||||
System.out.print(" ");
|
||||
for (jj = 1; jj <= 10; jj++) {
|
||||
System.out.print (scores[jj * player][ii] + " ");
|
||||
|
||||
for (player = 1; player <= numPlayers; player++) {
|
||||
for (ii = 1; ii <= 3; ii++) {
|
||||
System.out.print(" ");
|
||||
for (jj = 1; jj <= 10; jj++) {
|
||||
System.out.print (scores[jj * player][ii] + " ");
|
||||
}
|
||||
System.out.println("");
|
||||
System.out.println("");
|
||||
}
|
||||
System.out.println("");
|
||||
}
|
||||
|
||||
|
||||
System.out.println("DO YOU WANT ANOTHER GAME");
|
||||
System.out.print("? ");
|
||||
|
||||
|
||||
userResponse = scan.nextLine();
|
||||
|
||||
|
||||
if (!String.valueOf(userResponse.toUpperCase().charAt(0)).equals("Y")) {
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
} // End outer while loop
|
||||
|
||||
} // End of method startGame
|
||||
|
||||
|
||||
} // End outer while loop
|
||||
|
||||
} // End of method startGame
|
||||
|
||||
public static void printRules() {
|
||||
|
||||
|
||||
System.out.println("THE GAME OF BOWLING TAKES MIND AND SKILL.DURING THE GAME");
|
||||
System.out.println("THE COMPUTER WILL KEEP SCORE.YOU MAY COMPETE WITH");
|
||||
System.out.println("OTHER PLAYERS[UP TO FOUR].YOU WILL BE PLAYING TEN FRAMES");
|
||||
System.out.println("ON THE PIN DIAGRAM 'O' MEANS THE PIN IS DOWN...'+' MEANS THE");
|
||||
System.out.println("PIN IS STANDING.AFTER THE GAME THE COMPUTER WILL SHOW YOUR");
|
||||
System.out.println("SCORES .");
|
||||
|
||||
|
||||
} // End of method printRules
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
Bowling game = new Bowling();
|
||||
game.play();
|
||||
|
||||
|
||||
} // End of method main
|
||||
|
||||
|
||||
} // End of class Bowling
|
||||
|
||||
Reference in New Issue
Block a user