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

Write a program in Java following these pseudocode: class ticTacToe { public: vo

ID: 3776358 • Letter: W

Question

Write a program in Java following these pseudocode:

class ticTacToe

{

public:

                void play();

       //Function to start the play……x /O keep playing …. getXOMove

    void displayBoard() const;

       //Function to print the board.

    bool isValidMove(int x, int y) const;

       //Function to determine if a move is valid.

                bool getXOMove(char moveSymbol);

       //Function to get a move for a player…read row col..check it displayboard…check game status..count nbof moves

    status gameStatus();

       //Function to determine the current status of the game.

    void reStart();

       //Function to restart the game.

    ticTacToe();

       //Default constructor.

       //Postcondition: Initializes the board to an empty state.

private:

    char board[3][3];

    int noOfMoves;

};

//*******************************************************

int main()

{

                ticTacToe game;

     game.play();

     return 0;

}

Explanation / Answer

******************************Runner.Java*****************************


package tictactoemine;

public class Runner {

public static void main(String[] args) {
ticTacToe t1=new ticTacToe();
t1.play();
  
}
  
}

*********************************ticTacToe.java****************************


package tictactoemine;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ticTacToe {
private char[][] board = new char[3][3];
private String p1;
private String p2;
private int curPlayer;
private char mark1;
private char mark2;
private int plays;
String player = null;
private BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
  
protected void initialize() {
int counter = 0;
for (int i = 0; i < 3; i++) {
for (int i1 = 0; i1 < 3; i1++) {
board[i][i1] = Character.forDigit(++counter, 10);
}
}
curPlayer = 1;
plays = 0;
}
  
public void play() {

System.out.println("Welcome! Tic Tac Toe is a two player game.");
System.out.print("Enter player one's name: ");
setp1(getPrompt());
System.out.print("Enter player two's name: ");
setp2(getPrompt());
boolean mOK = false;
while (!mOK) {
System.out.print("Select any letter as " + getp1() + "'s marker: ");
String marker = getPrompt();
if (marker.length() == 1 &&
Character.isLetter(marker.toCharArray()[0])) {
mOK = true;
setmark1(marker.toCharArray()[0]);
} else {
System.out.println("Please enter the correct marker");
}
}
mOK = false;
while (!mOK) {
System.out.print("Select any letter as " +getp2() + "'s marker: ");
String marker = getPrompt();
if (marker.length() == 1 &&
Character.isLetter(marker.toCharArray()[0])) {
mOK = true;
setmark2(marker.toCharArray()[0]);
} else {
System.out.println("Please enter the correct marker");
}
}

boolean continuePlaying = true;

while (continuePlaying) {

initialize();
System.out.println();
System.out.println();
System.out.println(displayBoard());
System.out.println();
  
isValidMove();
  
  
  
  
if (gameStatus()) {
System.out.println("Your Game is Over - " + player + " WON.....!!!");
} else {
System.out.println("HardLuck Game Drawn....!!!!!!");
}
System.out.println();
System.out.print("Do you wanna Play again? Press Y or N : ");
String choice = getPrompt();
if (!choice.equalsIgnoreCase("Y")) {
continuePlaying = false;
}
}
}

protected void isValidMove(){

while (!gameStatus() && getPlays() < 9) {
player = getcurPlayer() == 1 ? getp1() : getp2();
boolean validPick = false;
while (!validPick) {
System.out.print("It is " + player + "'s turn. Pick a square: ");
String square = getPrompt();
if (square.length() == 1 && Character.isDigit(square.toCharArray()[0])) {
int pick = 0
;
try {
pick = Integer.parseInt(square);
} catch (NumberFormatException e) {
  
}
validPick = placeMarker(pick);
}
if (!validPick) {
System.out.println("The Square you entered can not be selected either it is occupied or invalid. Retry");
}
}
switchPlayers();
System.out.println();
System.out.println(displayBoard());
System.out.println();
}

}


protected void switchPlayers() {
if (getcurPlayer() == 1) {
setcurPlayer(2);
} else {
setcurPlayer(1);
}
setPlays(getPlays() + 1);
}

protected boolean placeMarker(int play) {
for (int i = 0; i < 3; i++) {
for (int i1 = 0; i1 < 3; i1++) {
if (board[i][i1] == Character.forDigit(play, 10)) {
board[i][i1] = (getcurPlayer() == 1) ? getmark1() : getmark2();
return true;
}
}
}
return false;
}

protected boolean gameStatus() {
char cur = ' ';
for (int i = 0; i < 3; i++) {
int temp = 0;
for (temp = 0; temp < 3; temp++) {
if (!Character.isLetter(board[i][temp])) {
break;
}
if (temp == 0) {
cur = board[i][temp];
} else if (cur != board[i][temp]) {
break;
}
if (temp == 2) {
//returns winner
return true;
}
}
}
//Checking columns
for (int i = 0; i < 3; i++) {
cur = ' ';
int tmp = 0;
for (tmp= 0; tmp < 3;tmp++) {
if (!Character.isLetter(board[tmp][i])) {
break;
}
if (tmp== 0) {
cur = board[tmp][i];
} else if (cur != board[tmp][i]) {
break;
}
if (tmp== 2) {
//Found winner
return true;
}
}
}
//Function for Checking diagonals
cur = board[0][0];
if (Character.isLetter(cur) && board[1][1] == cur && board[2][2] == cur) {
return true;
}
cur = board[2][0];
if (Character.isLetter(cur) && board[1][1] == cur && board[0][2] == cur) {
return true;
}
return false;
}


protected String getPrompt() {
String prompt = "";
try {
prompt = reader.readLine();
} catch (IOException ex) {
ex.printStackTrace();
}
return prompt;
}

protected String displayBoard() {
StringBuilder b1 = new StringBuilder("Game board: ");
for (int i = 0; i < 3; i++) {
for (int i1 = 0; i1 < 3; i1++) {
b1.append("[" + board[i][i1] + "]");
}
b1.append(" ");
}
return b1.toString();
}

public int getcurPlayer() {
return curPlayer;
}

public void setcurPlayer(int curPlayer) {
this.curPlayer = curPlayer;
}

public char getmark1() {
return mark1;
}

public void setmark1(char mark1) {
this.mark1 = mark1;
}

public char getmark2() {
return mark2;
}

public void setmark2(char mark2) {
this.mark2 = mark2;
}

public int getPlays() {
return plays;
}

public void setPlays(int plays) {
this.plays = plays;
}

public String getp1() {
return p1;
}

public void setp1(String p1) {
this.p1 = p1;
}

public String getp2() {
return p2;
}

public void setp2(String p2) {
this.p2 = p2;
}


}
  

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote