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