Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

JAVA PROBLEM For each of the following 4 tic tac toe simulation solutions do the

ID: 3866149 • Letter: J

Question

JAVA PROBLEM

For each of the following 4 tic tac toe simulation solutions do the following:
1) List two techniques used that are good programming style
2) List two programming style improvements
3) Determine why the program does not produce the correct results. Be specific on how to change the program to correct the error.

Submit a Word document with this information for each solution

See links below for the 4 simulations:

Simulation 1: https://sites.google.com/a/equinoxintgroup.com/www-tictactojava-com/home

Simulation 2: https://sites.google.com/a/equinoxintgroup.com/www-tictactojava-com/simulation2

Simulation 3: https://sites.google.com/a/equinoxintgroup.com/www-tictactojava-com/simulation3

Simulation 4: https://sites.google.com/a/equinoxintgroup.com/www-tictactojava-com/simulation4

Explanation / Answer

import java.util.Scanner;

public class TTTConsoleNonOO2P

{

public static final int EMPTY = 0;

public static final int CROSS = 1;

public static final int NOUGHT = 2;

public static final int PLAYING = 0;

public static final int DRAW = 1;

public static final int CROSS_WON = 2;

public static final int NOUGHT_WON = 3;

public static final int ROWS = 3, COLS = 3;

public static int[][] board = new int[ROWS][COLS];

public static int currentState;

public static int currentPlayer;

public static int currntRow, currentCol;

public static Scanner in = new Scanner(System.in);

public static void main(String[] args) {

initGame();

do {

playerMove(currentPlayer);

updateGame(currentPlayer, currntRow, currentCol);

printBoard();

if (currentState == CROSS_WON) {

System.out.println("'X' won! Bye!");

} else if (currentState == NOUGHT_WON) {

System.out.println("'O' won! Bye!");

} else if (currentState == DRAW) {

System.out.println("It's a Draw! Bye!");

}

currentPlayer = (currentPlayer == CROSS) ? NOUGHT : CROSS;

} while (currentState == PLAYING);

}

public static void initGame() {

for (int row = 0; row < ROWS; ++row) {

for (int col = 0; col < COLS; ++col) {

board[row][col] = EMPTY;

}

}

currentState = PLAYING;

currentPlayer = CROSS;

}

public static void playerMove(int theSeed) {

boolean validInput = false;

do {

if (theSeed == CROSS) {

System.out.print("Player 'X', enter your move (row[1-3] column[1-3]): ");

} else {

System.out.print("Player 'O', enter your move (row[1-3] column[1-3]): ");

}

int row = in.nextInt() - 1;

int col = in.nextInt() - 1;

if (row >= 0 && row < ROWS && col >= 0 && col < COLS && board[row][col] == EMPTY) {

currentRow = row;

currentCol = col;

board[currntRow][currentCol] = theSeed;

validInput = true;

} else {

System.out.println("This move at (" + (row + 1) + "," + (col + 1)

+ ") is not valid. Try again...");

}

} while (!validInput);

}

public static void updateGame(int theSeed, int currentRow, int currentCol) {

if (hasWon(theSeed, currentRow, currentCol)) {

currentState = (theSeed == CROSS) ? CROSS_WON : NOUGHT_WON;

} else if (isDraw()) {

currentState = DRAW;

}

}

public static boolean isDraw() {

for (int row = 0; row < ROWS; ++row) {

for (int col = 0; col < COLS; ++col) {

if (board[row][col] == EMPTY) {

return false;

}

}

}

return true;

}

public static boolean hasWon(int theSeed, int currentRow, int currentCol) {

return (board[currentRow][0] == theSeed

&& board[currentRow][1] == theSeed

&& board[currentRow][2] == theSeed

|| board[0][currentCol] == theSeed

&& board[1][currentCol] == theSeed

&& board[2][currentCol] == theSeed

|| currentRow == currentCol

&& board[0][0] == theSeed

&& board[1][1] == theSeed

&& board[2][2] == theSeed

|| currentRow + currentCol == 2

&& board[0][2] == theSeed

&& board[1][1] == theSeed

&& board[2][0] == theSeed);

}

public static void printBoard() {

for (int row = 0; row < ROWS; ++row) {

for (int col = 0; col < COLS; ++col) {

printCell(board[row][col]);

if (col != COLS - 1) {

System.out.print("|");

}

}

System.out.println();

if (row != ROWS - 1) {

System.out.println("-----------");

}

}

System.out.println();

}

public static void printCell(int content) {

switch (content) {

case EMPTY: System.out.print("   "); break;

case NOUGHT: System.out.print(" O "); break;

case CROSS: System.out.print(" X "); break;

}

}

}