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;
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.