Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mport java.util.Scanner;
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- /**
- *
- * @author prem.pathak
- */
- public class TTT {
- private Scanner keyBoard = new Scanner(System.in);
- private String player, CPU, winner;
- private String[][] moves = new String[3][3];
- private int moveCount = -1;
- private int countTurn;
- private int level;
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- TTT TicTacToe = new TTT();
- for (int r = 0; TicTacToe.moves.length > r; r++) {
- for (int c = 0; TicTacToe.moves[r].length > c; c++) {
- TicTacToe.moves[r][c] = " ";
- }
- }
- while (TicTacToe.getPlayGame()) {
- System.out.println("hello");
- TicTacToe.player = TicTacToe.getChooseSide();
- TicTacToe.setCPUSide(TicTacToe.player);
- TicTacToe.setLevel();
- while (!TicTacToe.gameOver()) {
- TicTacToe.drawBoard();
- if (TicTacToe.countTurn % 2 != 0 && TicTacToe.player.equals("X")) {
- TicTacToe.setMove();
- } else if (TicTacToe.countTurn % 2 != 0 && TicTacToe.CPU.equals("X")) {
- TicTacToe.setCPUMove();
- TicTacToe.drawBoard();
- }
- if (TicTacToe.gameOver()) {
- break;
- }
- if (TicTacToe.countTurn % 2 == 0 && TicTacToe.player.equals("O")) {
- TicTacToe.setMove();
- } else if (TicTacToe.countTurn % 2 == 0 && TicTacToe.CPU.equals("O")) {
- TicTacToe.setCPUMove();
- }
- }
- TicTacToe.drawBoard();
- TicTacToe.refresh();
- System.out.println("The Winner is : " + TicTacToe.winner);
- }
- System.out.println("Good-Bye!");
- }
- public boolean getPlayGame() {
- System.out.println("Want to play a game of Tic-Tac-Toe?(must be \"yes\" or \"no\")");
- String ans = keyBoard.nextLine();
- ans = ans.toLowerCase().trim();
- if (ans.equals("yes")) {
- return true;
- } else if (ans.equals("no")) {
- return false;
- } else {
- return getPlayGame();
- }
- }
- public String getChooseSide() {
- System.out.println("Choose Your Side.(\"X\" or \"O\")");
- String ans = keyBoard.nextLine();
- ans = ans.toUpperCase().trim();
- if (ans.equals("X")) {
- return "X";
- } else if (ans.equals("O")) {
- return "O";
- } else {
- return getChooseSide();
- }
- }
- public void setCPUSide(String player) {
- if (player.equals("X")) {
- CPU = "O";
- countTurn = 1;
- } else {
- CPU = "X";
- countTurn = 1;
- }
- }
- public void setMove() {
- System.out.println("Enter Your Move by tellin what row # and column #?(example: upperleft enter 1,1)");
- String ans = keyBoard.nextLine();
- ans = ans.toLowerCase().trim();
- if (ans.length() == 3) {
- if ("123".contains(ans.substring(0, 1)) && "123".contains(ans.substring(2))) {
- if (moves[Integer.parseInt(ans.substring(0, 1)) - 1][Integer.parseInt(ans.substring(2)) - 1].equals(" ")) {
- moves[Integer.parseInt(ans.substring(0, 1)) - 1][Integer.parseInt(ans.substring(2)) - 1] = player;
- } else {
- setMove();
- }
- } else {
- setMove();
- }
- } else {
- System.out.println("Invalid Entry");
- setMove();
- }
- countTurn++;
- }
- private void drawBoard() {
- System.out.println(" " + moves[0][0] + " " + "|" + " " + moves[0][1] + " " + "|" + " " + moves[0][2] + " ");
- System.out.println("-----------");
- System.out.println(" " + moves[1][0] + " " + "|" + " " + moves[1][1] + " " + "|" + " " + moves[1][2] + " ");
- System.out.println("-----------");
- System.out.println(" " + moves[2][0] + " " + "|" + " " + moves[2][1] + " " + "|" + " " + moves[2][2] + " ");
- }
- private void setCPUMove() {
- if (level == 1) {
- lvlOneMove();
- } else if (level == 2) {
- lvlTwoMove();
- } else if (level == 3) {
- lvlThreeMove();
- }
- countTurn++;
- }
- private boolean gameOver() {
- moveCount++;
- System.out.println("Moves Made: " + moveCount);
- if (moves[0][0].equals(player) && moves[1][0].equals(player) && moves[2][0].equals(player)) {
- winner = player;
- return true;
- } else if (moves[0][1].equals(player) && moves[1][1].equals(player) && moves[2][1].equals(player)) {
- winner = player;
- return true;
- } else if (moves[0][2].equals(player) && moves[1][2].equals(player) && moves[2][2].equals(player)) {
- winner = player;
- return true;
- } else if (moves[0][0].equals(player) && moves[0][1].equals(player) && moves[0][2].equals(player)) {
- winner = player;
- return true;
- } else if (moves[1][0].equals(player) && moves[1][1].equals(player) && moves[1][2].equals(player)) {
- winner = player;
- return true;
- } else if (moves[2][0].equals(player) && moves[2][1].equals(player) && moves[2][2].equals(player)) {
- winner = player;
- return true;
- } else if (moves[0][0].equals(player) && moves[1][1].equals(player) && moves[2][2].equals(player)) {
- winner = player;
- return true;
- } else if (moves[0][2].equals(player) && moves[1][1].equals(player) && moves[2][0].equals(player)) {
- winner = player;
- return true;
- } else if (moves[0][0].equals(CPU) && moves[1][0].equals(CPU) && moves[2][0].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moves[0][1].equals(CPU) && moves[1][1].equals(CPU) && moves[2][1].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moves[0][2].equals(CPU) && moves[1][2].equals(CPU) && moves[2][2].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moves[0][0].equals(CPU) && moves[0][1].equals(CPU) && moves[0][2].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moves[1][0].equals(CPU) && moves[1][1].equals(CPU) && moves[1][2].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moves[2][0].equals(CPU) && moves[2][1].equals(CPU) && moves[2][2].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moves[0][0].equals(CPU) && moves[1][1].equals(CPU) && moves[2][2].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moves[0][2].equals(CPU) && moves[1][1].equals(CPU) && moves[2][0].equals(CPU)) {
- winner = CPU;
- return true;
- } else if (moveCount == 9) {
- winner = "Tie!";
- return true;
- } else {
- return false;
- }
- }
- private void refresh() {
- for (int r = 0; moves.length > r; r++) {
- for (int c = 0; moves[r].length > c; c++) {
- moves[r][c] = " ";
- }
- }
- moveCount = -1;
- countTurn = 0;
- }
- private void setLevel() {
- System.out.println("Choose Level (1,2 or 3): ");
- String ans = keyBoard.nextLine();
- ans = ans.toLowerCase().trim();
- if (ans.length() == 1) {
- if ("123".contains(ans.substring(0, 1))) {
- if (Integer.parseInt(ans.substring(0, 1)) == 1) {
- level = 1;
- } else if ((Integer.parseInt(ans.substring(0, 1)) == 2)) {
- level = 2;
- } else if ((Integer.parseInt(ans.substring(0, 1)) == 3)) {
- level = 3;
- } else {
- setLevel();
- }
- } else {
- setLevel();
- }
- } else {
- System.out.println("Invalid Entry");
- setLevel();
- }
- }
- private void lvlOneMove() {
- int row = (int) (Math.random() * 3);
- int column = (int) (Math.random() * 3);
- if (moves[row][column].equals(" ")) {
- moves[row][column] = CPU;
- } else {
- lvlOneMove();
- }
- }
- private void lvlTwoMove() {
- int row = (int) (Math.random() * 3);
- int column = (int) (Math.random() * 3);
- int coinFlip = (int) (Math.random() * 100);
- System.out.println(coinFlip);
- if (moves[1][1].equals(" ")) {
- moves[1][1] = CPU;
- } else if ((moves[0][0].equals(" ") || moves[0][2].equals(" ") || moves[2][0].equals(" ") || moves[2][2].equals(" ")) && coinFlip <= 75) {
- int spot = (int) (Math.random() * 4);
- if (spot == 0 && moves[0][0].equals(" ")) {
- moves[0][0] = CPU;
- } else if (spot == 1 && moves[0][2].equals(" ")) {
- moves[0][2] = CPU;
- } else if (spot == 2 && moves[2][0].equals(" ")) {
- moves[2][0] = CPU;
- } else if (spot == 3 && moves[2][2].equals(" ")) {
- moves[2][2] = CPU;
- } else {
- lvlTwoMove();
- }
- } else if (moves[row][column].equals(" ") && coinFlip >= 76) {
- moves[row][column] = CPU;
- } else {
- lvlTwoMove();
- }
- }
- private void lvlThreeMove() {
- if (moves[0][0].equals(player) && moves[1][1].equals(player) && moves[2][2].equals(" ")) {
- moves[2][2] = CPU;
- } else if (moves[0][0].equals(player) && moves[1][1].equals(" ") && moves[2][2].equals(player)) {
- moves[1][1] = CPU;
- } else if (moves[0][0].equals(" ") && moves[1][1].equals(player) && moves[2][2].equals(player)) {
- moves[0][0] = CPU;
- } else if (moves[0][2].equals(player) && moves[1][1].equals(player) && moves[2][0].equals(" ")) {
- moves[2][0] = CPU;
- } else if (moves[0][2].equals(player) && moves[1][1].equals(" ") && moves[2][0].equals(player)) {
- moves[1][1] = CPU;
- } else if (moves[0][2].equals(" ") && moves[1][1].equals(player) && moves[2][0].equals(player)) {
- moves[0][2] = CPU;
- } else if (moves[0][0].equals(player) && moves[1][0].equals(player) && moves[2][0].equals(" ")) {
- moves[2][0] = CPU;
- } else if (moves[0][0].equals(player) && moves[1][0].equals(" ") && moves[2][0].equals(player)) {
- moves[1][0] = CPU;
- } else if (moves[0][2].equals(" ") && moves[1][0].equals(player) && moves[2][0].equals(player)) {
- moves[0][2] = CPU;
- } else if (moves[0][1].equals(player) && moves[1][1].equals(player) && moves[2][1].equals(" ")) {
- moves[2][1] = CPU;
- } else if (moves[0][1].equals(player) && moves[1][1].equals(" ") && moves[2][1].equals(player)) {
- moves[1][1] = CPU;
- } else if (moves[0][1].equals(" ") && moves[1][1].equals(player) && moves[2][1].equals(player)) {
- moves[0][1] = CPU;
- } else if (moves[0][2].equals(player) && moves[1][2].equals(player) && moves[2][2].equals(" ")) {
- moves[2][2] = CPU;
- } else if (moves[0][2].equals(player) && moves[1][2].equals(" ") && moves[2][2].equals(player)) {
- moves[1][2] = CPU;
- } else if (moves[0][2].equals(" ") && moves[1][2].equals(player) && moves[2][2].equals(player)) {
- moves[2][2] = CPU;
- } else if (moves[0][0].equals(player) && moves[0][1].equals(player) && moves[0][2].equals(" ")) {
- moves[0][2] = CPU;
- } else if (moves[0][0].equals(player) && moves[0][1].equals(" ") && moves[0][2].equals(player)) {
- moves[0][1] = CPU;
- } else if (moves[0][0].equals(" ") && moves[0][1].equals(player) && moves[0][2].equals(player)) {
- moves[0][0] = CPU;
- } else if (moves[1][1].equals(" ")) {
- moves[1][1] = CPU;
- } else {
- int row = (int) (Math.random() * 3);
- int column = (int) (Math.random() * 3);
- if (moves[row][column].equals(" ")) {
- moves[row][column] = CPU;
- } else {
- lvlThreeMove();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement