// Unit 1: Primitive Data Types and Variables
import java.util.Scanner; // Library for user input
import java.lang.Math; // Library for random numbers
public class ConsoleGame {
public final String DEFAULT = "\u001B[0m"; // Default Terminal Color
public ConsoleGame() {
// Unit 2: Methods and Control Structures
Scanner sc = new Scanner(System.in); // Using Java Scanner Object
boolean quit = false;
while (!quit) {
this.menuString(); // Print Menu
try {
int choice = sc.nextInt(); // Using method from Java Scanner Object
System.out.print("" + choice + ": ");
quit = this.action(choice); // Take action
} catch (Exception e) {
sc.nextLine(); // Error: clear buffer
System.out.println(e + ": Not a number, try again.");
}
}
sc.close();
}
public void menuString() {
// Unit 3: Arrays and ArrayLists
String menuText = ""
+ "\u001B[35m___________________________\n"
+ "|~~~~~~~~~~~~~~~~~~~~~~~~~|\n"
+ "|\u001B[0m Menu! \u001B[35m|\n"
+ "|~~~~~~~~~~~~~~~~~~~~~~~~~|\n"
+ "| 0 - Exit |\n"
+ "| 1 - Rock Paper Scissors |\n"
+ "| 2 - Higher or Lower |\n"
+ "| 3 - Tic Tac Toe |\n"
+ "|_________________________| \u001B[0m\n"
+ "\n"
+ "Choose an option.\n"
;
System.out.println(menuText);
}
// Unit 4: Classes and Objects
private boolean action(int selection) {
boolean quit = false;
switch (selection) { // Switch or Switch/Case is Control Flow statement and is used to evaluate the user selection
case 0:
System.out.print("Goodbye, World!");
quit = true;
break;
case 1:
rps();
break;
case 2:
horl();
break;
case 3:
ticTacToe();
break;
default:
// Prints error message from console
System.out.print("Unexpected choice, try again.");
}
System.out.println(DEFAULT); // Make sure to reset color and provide a new line
return quit;
}
// Unit 5: File Input/Output (Not present in this code)
public void horl() {
// Unit 6: Conditional Statements and Loops
System.out.println("Higher or Lower");
System.out.println("You have three guesses to guess the number I am thinking of between 1-8.");
System.out.println("If you guess the number correctly, you win!");
Scanner scHL = new Scanner(System.in);
int randomG = (int) (Math.random() * 8) + 1;
int guess = scHL.nextInt();
for (int i = 3; i > 0; i--) {
if (guess == randomG) {
System.out.println("You win!");
break;
} else if (guess > randomG) {
System.out.println("The number is lower");
} else if (guess < randomG) {
System.out.println("The number is higher");
}
guess = scHL.nextInt();
}
System.out.println("Game over.");
scHL.close();
}
public void ticTacToe() {
// Unit 7: Arrays and ArrayLists
System.out.println("Tic Tac Toe");
Scanner scTTT = new Scanner(System.in);
String[] board = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
String player = "X";
String player2 = "O";
int turn = 0;
Boolean quit = false;
System.out.println("Do you want to play against a friend or the computer?");
System.out.println("Type 1 for friend, 2 for computer");
int choice = scTTT.nextInt();
// Make tic-tac-toe using player1 and player2
if (choice == 1) {
System.out.println("Type the number of the square you want to place your piece in");
while (quit == false) {
System.out.println("Player 1's turn (X)");
System.out.println(board[0] + " | " + board[1] + " | " + board[2]);
System.out.println(board[3] + " | " + board[4] + " | " + board[5]);
System.out.println(board[6] + " | " + board[7] + " | " + board[8]);
int move = scTTT.nextInt();
if (board[move - 1].equals("X") || board[move - 1].equals("O")) {
System.out.println("That square is already taken, try again");
} else {
board[move - 1] = player;
turn++;
if (board[0].equals("X") && board[1].equals("X") && board[2].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[3].equals("X") && board[4].equals("X") && board[5].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[6].equals("X") && board[7].equals("X") && board[8].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[0].equals("X") && board[3].equals("X") && board[6].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[1].equals("X") && board[4].equals("X") && board[7].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[2].equals("X") && board[5].equals("X") && board[8].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[0].equals("X") && board[4].equals("X") && board[8].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[2].equals("X") && board[4].equals("X") && board[6].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (turn == 9) {
System.out.println("It's a tie!");
quit = true;
} else {
System.out.println("Player 2's turn (O)");
System.out.println(board[0] + " | " + board[1] + " | " + board[2]);
System.out.println(board[3] + " | " + board[4] + " | " + board[5]);
System.out.println(board[6] + " | " + board[7] + " | " + board[8]);
int move2 = scTTT.nextInt();
if (board[move2 - 1].equals("X") || board[move2 - 1].equals("O")) {
System.out.println("That square is already taken, try again");
} else {
board[move2 - 1] = player2;
turn++;
if (board[0].equals("O") && board[1].equals("O") && board[2].equals("O")) {
System.out.println("Player 2 wins!");
quit = true;
} else if (board[3].equals("O") && board[4].equals("O") && board[5].equals("O")) {
System.out.println("Player 2 wins!");
quit = true;
} else if (board[6].equals("O") && board[7].equals("O") && board[8].equals("O")) {
System.out.println("Player 2 wins!");
quit = true;
} else if (board[0].equals("O") && board[3].equals("O") && board[6].equals("O")) {
System.out.println("Player 2 wins!");
quit = true;
} else if (board[1].equals("O") && board[4].equals("O") && board[7].equals("O")) {
System.out.println("Player 2 wins!");
quit = true;
} else if (board[2].equals("O") && board[5].equals("O") && board[8].equals("O")) {
System.out.println("Player 2 wins!");
quit = true;
}
}
}
}
}
}
if (choice == 2) {
// Unit 8: Object-Oriented Design
String computer = "O";
System.out.println("Type the number of the square you want to place your piece in");
while (quit == false) {
System.out.println("Player 1's turn (X)");
System.out.println(board[0] + " | " + board[1] + " | " + board[2]);
System.out.println(board[3] + " | " + board[4] + " | " + board[5]);
System.out.println(board[6] + " | " + board[7] + " | " + board[8]);
int move = scTTT.nextInt();
if (board[move - 1].equals("X") || board[move - 1].equals("O")) {
System.out.println("That square is already taken, try again");
} else {
board[move - 1] = player;
turn++;
if (board[0].equals("X") && board[1].equals("X") && board[2].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[3].equals("X") && board[4].equals("X") && board[5].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[6].equals("X") && board[7].equals("X") && board[8].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[0].equals("X") && board[3].equals("X") && board[6].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[1].equals("X") && board[4].equals("X") && board[7].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[2].equals("X") && board[5].equals("X") && board[8].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[0].equals("X") && board[4].equals("X") && board[8].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (board[2].equals("X") && board[4].equals("X") && board[6].equals("X")) {
System.out.println("Player 1 wins!");
quit = true;
} else if (turn == 9) {
System.out.println("It's a tie!");
quit = true;
} else {
System.out.println("Computer's turn (O)");
System.out.println(board[0] + " | " + board[1] + " | " + board[2]);
System.out.println(board[3] + " | " + board[4] + " | " + board[5]);
System.out.println(board[6] + " | " + board[7] + " | " + board[8]);
int move2 = (int) (Math.random() * 9) + 1;
if (board[move2 - 1].equals("X") || board[move2 - 1].equals("O")) {
System.out.println("That square is already taken, try again");
} else {
board[move2 - 1] = computer;
turn++;
if (board[0].equals("O") && board[1].equals("O") && board[2].equals("O")) {
System.out.println("Computer wins!");
quit = true;
} else if (board[3].equals("O") && board[4].equals("O") && board[5].equals("O")) {
System.out.println("Computer wins!");
quit = true;
} else if (board[6].equals("O") && board[7].equals("O") && board[8].equals("O")) {
System.out.println("Computer wins!");
quit = true;
} else if (board[0].equals("O") && board[3].equals("O") && board[6].equals("O")) {
System.out.println("Computer wins!");
quit = true;
} else if (board[1].equals("O") && board[4].equals("O") && board[7].equals("O")) {
System.out.println("Computer wins!");
quit = true;
} else if (board[2].equals("O") && board[5].equals("O") && board[8].equals("O")) {
System.out.println("Computer wins!");
quit = true;
}
}
}
}
}
}
scTTT.close();
}
public void rps() {
// Unit 9: Review and Exam Preparation
System.out.println("Rock Paper Scissors");
System.out.println("Type r for rock, p for paper, or s for scissors");
Scanner scRPS = new Scanner(System.in);
String userChoice = scRPS.nextLine().toLowerCase();
Boolean quit = false;
int random = (int) (Math.random() * 3);
while (quit == false) {
if (userChoice.equals("r")) {
if (random == 1) {
System.out.println("You chose rock \nThe computer chose paper \nYou lose!");
} else if (random == 2) {
System.out.println("You chose rock \nThe computer chose scissors \nYou win!");
} else {
System.out.println("You chose rock \nThe computer chose rock \nIt's a tie!");
}
quit = true;
} else if (userChoice.equals("p")) {
if (random == 1) {
System.out.println("You chose paper \nThe computer chose paper \nIt's a tie!");
} else if (random == 2) {
System.out.println("You chose paper \nThe computer chose scissors \nYou lose!");
} else {
System.out.println("You chose paper \nThe computer chose rock \nYou win!");
}
quit = true;
} else if (userChoice.equals("s")) {
if (random == 1) {
System.out.println("You chose scissors \nThe computer chose paper \nYou win!");
} else if (random == 2) {
System.out.println("You chose scissors \nThe computer chose scissors \nIt's a tie!");
} else {
System.out.println("You chose scissors \nThe computer chose rock \nYou lose!");
}
quit = true;
} else {
System.out.println("Invalid input, try again");
userChoice = scRPS.nextLine();
}
}
scRPS.close();
}
// Unit 10: Final Project (Not present in this code)
// Unit 11: Additional Topics in Java Programming (Not present in this code)
static public void main(String[] args) {
new ConsoleGame(); // Starting Menu object
}
}
Welcome to the Word Scramble Game!
Try to unscramble the word. You have 3 attempts.
Here's the scrambled word: pveoimr
Enter your guess: Incorrect guess! Attempts remaining: 2
Here's a hint, the first letter is i
Enter your guess: Incorrect guess! Attempts remaining: 1
Here's a hint, the last letter is e
Enter your guess: Incorrect guess! Attempts remaining: 0
Sorry, you've run out of attempts. The word was: improve