project and class TicI’acToe used in lab #10 and rewrite it to use a GUI to represent the tic tac toe board. You may call your project whatever you…

Class TicTacToe

import java.util.*;

Haven’t Found The Relevant Content? Hire a Subject Expert to Help You With
project and class TicI’acToe used in lab #10 and rewrite it to use a GUI to represent the tic tac toe board. You may call your project whatever you…
Post Your Own Question And Get A Custom Answer
Hire Writer

/**

* A class modelling a tic-tac-toe (noughts and crosses, Xs and Os) game.

*

* @author Lynn Marshall

* @version November 8, 2012

*/

public class TicTacToe

{

public static final String PLAYER_X = “X”; // player using “X”

public static final String PLAYER_O = “O”; // player using “O”

public static final String EMPTY = ” “; // empty cell

public static final String TIE = “T”; // game ended in a tie

private String player; // current player (PLAYER_X or PLAYER_O)

private String winner; // winner: PLAYER_X, PLAYER_O, TIE, EMPTY = in progress

private int numFreeSquares; // number of squares still free

private String board[][]; // 3×3 array representing the board

/**

* Constructs a new Tic-Tac-Toe board.

*/

public TicTacToe()

{

board = new String[3][3];

}

/**

* Sets everything up for a new game. Marks all squares in the Tic Tac Toe board as empty,

* and indicates no winner yet, 9 free squares and the current player is player X.

*/

private void clearBoard()

{

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

board[i][j] = EMPTY;

}

}

winner = EMPTY;

numFreeSquares = 9;

player = PLAYER_X; // Player X always has the first turn.

}

/**

* Plays one game of Tic Tac Toe.

*/

public void playGame()

{

int row, col;

Scanner sc;

clearBoard(); // clear the board

// print starting board

print();

// loop until the game ends

while (winner==EMPTY) { // game still in progress

// get input (row and column)

while (true) { // repeat until valid input

System.out.print(“Enter row and column of chosen square (0, 1, 2 for each): “);

sc = new Scanner(System.in);

row = sc.nextInt();

col = sc.nextInt();

if (row>=0 && row<=2 && col>=0 && col<=2 && board[row][col]==EMPTY) break;

System.out.println(“Invalid selection, try again.”);

}

board[row][col] = player; // fill in the square with player

numFreeSquares–; // decrement number of free squares

// see if the game is over

if (haveWinner(row,col))

winner = player; // must be the player who just went

else if (numFreeSquares==0)

winner = TIE; // board is full so it’s a tie

// print current board

print();

// change to other player (this won’t do anything if game has ended)

if (player==PLAYER_X)

player=PLAYER_O;

else

player=PLAYER_X;

}

}

/**

* Returns true if filling the given square gives us a winner, and false

* otherwise.

*

* @param int row of square just set

* @param int col of square just set

*

* @return true if we have a winner, false otherwise

*/

private boolean haveWinner(int row, int col)

{

// unless at least 5 squares have been filled, we don’t need to go any further

// (the earliest we can have a winner is after player X’s 3rd move).

if (numFreeSquares>4) return false;

// Note: We don’t need to check all rows, columns, and diagonals, only those

// that contain the latest filled square. We know that we have a winner

// if all 3 squares are the same, as they can’t all be blank (as the latest

// filled square is one of them).

// check row “row”

if ( board[row][0].equals(board[row][1]) &&

board[row][0].equals(board[row][2]) ) return true;

// check column “col”

if ( board[0][col].equals(board[1][col]) &&

board[0][col].equals(board[2][col]) ) return true;

// if row=col check one diagonal

if (row==col)

if ( board[0][0].equals(board[1][1]) &&

board[0][0].equals(board[2][2]) ) return true;

// if row=2-col check other diagonal

if (row==2-col)

if ( board[0][2].equals(board[1][1]) &&

board[0][2].equals(board[2][0]) ) return true;

// no winner yet

return false;

}

/**

* Prints the board to standard out using toString().

*/

public void print()

{

System.out.println(this.toString());

if(this.winner!=EMPTY){

System.out.println(player+” wins”);// something needs to be added here

}

}

/**

* Returns a string representing the current state of the game. This should look like

* a regular tic tac toe board, and be followed by a message if the game is over that says

* who won (or indicates a tie).

*

* @return String representing the tic tac toe game state

*/

public String toString()

{

String table = “”;

for (int i = 0; i < 2; i++) {

for (int j = 0; j < 2; j++) {

table += board[i][j] + ” | “;

}

table += board[i][2];

table += “n———n”;

}

table += board[2][0] + ” | ” + board[2][1] + ” | ” +board[2][2];

table += “nn”;

return table;

}

}

Class TicTacToeFrame

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

* A class modelling a tic-tac-toe (noughts and crosses, Xs and Os) game in a very

* simple GUI window.

*

* @author Lynn Marshall

* @version November 8, 2012

*/

public class TicTacToeFrame extends TicTacToe

{

private JTextArea status; // text area to print game status

/**

* Constructs a new Tic-Tac-Toe board and sets up the basic

* JFrame containing a JTextArea in a JScrollPane GUI.

*/

public TicTacToeFrame()

{

JFrame frame = new JFrame(“Tic Tac Toe”);

frame.setSize(250,250);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container content = frame.getContentPane();

status = new JTextArea(20,50);

status.setFont(new Font(“Monospaced”,Font.BOLD,18));

status.setEditable(false);

JScrollPane scroll = new JScrollPane(status);

frame.add(scroll);

frame.setVisible(true);

frame.pack();// add the necessary code here

}

/**

* Prints the board to the GUI using toString().

*/

public void print()

{

status.setText(toString());// add code here

}

}

In this assignment, you are to take the detector: project and class TicI‘acToe used in lab #10and rewrite it to use a GUI to represent the tic tac toe board. You may call your project whateveryou like and you may have as many java classes as you like. (It can be done with just one!) The code in the given I icTacToe class was written to make the conversion to the GUI stylefairly straight forward. You can reuse all the constants and fields, except that the board fieldnow needs to have a different type, and you will need to add a few other fields. It’s recommended that you use a 3×3 Grid Layout made up of J Buttons for the tic-tac—toe board.When a button is selected, the players &quot;mark&quot; (either &quot;X&quot; or &quot;0&quot;, depending on whose turn it is)appears in the button and the button can no longer be selected. After the game ends, no buttonsmay be selected. However, if you prefer another approach, that’s fine, as long as your gameworks. Now add a label field (e. g. at the bottom of your frame) to indicate the current state of the game(e.g. game in progress and X’s turn; game in progress and 0’s tum; game over tie; game over Xwins; game over 0 wins) in a label field. Of course, the label must change so that it is alwayscurrent (Le. reflects the current state of the game). Now add a &quot;Game&quot; menu, with two choices: New (or ctrl-N) to start a new game (whether thecurrent game is over or not), and Quit (or ctrl-Q) to quit. Feel free to experiment further with GUIs. Possible extensions include adding a component thatdisplays the number of games that X has won, the number that O has won, and the number ofties. You can also add additional menu items (e.g. change the game so that &quot;0&quot; goes first, etc.),or you could implement this functionality another way. You can even change what is displayedon the buttons from just text &quot;X&quot; and &quot;O&quot; to fancy graphic &quot;X&quot; and &quot;O&quot; (by providing jpg files}.Or whatever else you can think of to make the game look better! You may also add sounds using.wav files. These extensions are not required for full marks, but may earn bonus marks.

superadmin (28431)
New York University
15 MILLION STUDENTS HELPED!

Hire an Expert to Help you

Hire Verified Expert

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more
Have a homework question? Get help from verified tutors now!

Are You Looking For Assignment Help? We Can Certainly Assist You

Sometimes it is hard to do all the work on your own

Let us help you get a good grade on your paper. Get professional help and free up your time for more important courses. Let us handle your;

  • ~Dissertations
  • ~Essays
  • ~All Assignments

  • ~Research papers
  • ~Term papers