Your checkWinner function should determine whether or not the game is over. If the game is over, it should print who won (if anyone), and return true. If the game is not over, it should return false. The game is over if someone wins by getting three X's or three O's in a row, column or diagonal. So there are 8 different combinations of 3-in-a-row moves. You may assume that the board has a size of 3 (length and width). The TicTacBoard.java file I'm giving you uses a variable for that size, but you can assume it's always 3. The game is also over if the board is full but nobody won. I recommend you write some

C++ for Engineers and Scientists
4th Edition
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Bronson, Gary J.
Chapter4: Selection Structures
Section: Chapter Questions
Problem 14PP
icon
Related questions
Question
  • Your checkWinner function should determine whether or not the game is over. If the game is over, it should print who won (if anyone), and return true. If the game is not over, it should return false.
  • The game is over if someone wins by getting three X's or three O's in a row, column or diagonal. So there are 8 different combinations of 3-in-a-row moves.
  • You may assume that the board has a size of 3 (length and width). The TicTacBoard.java file I'm giving you uses a variable for that size, but you can assume it's always 3.
  • The game is also over if the board is full but nobody won.
  • I recommend you write some other functions to help in determining if the game is over. Remember you should never copy and paste code if you can avoid it. Write a function to perform a common, generalizable task, and call that function every time you need it. (Like I did with my dispRow method.)
  • Please follow the standard conventions for indentation, meaningful variable names, etc. like the examples in class and in the textbook.
  • Make sure to run your program to test it out (using replit.com or the compiler of your choice), and then submit the TicTacBoard.java file you modified, plus your output showing how the program worked for you.
class Main
{
/////// main ////////
// No changes needed in this function.
// It declares the variables, initializes the game,
// and plays until someone wins or the game becomes unwinnable.
publicstaticvoid main(String[] args)
{
TicTacBoard game = new TicTacBoard(3);
game.playGame();
}
}
YOUR JOB IS TO WRITE THE BODY OF THE checkWinner METHOD BELOW
SO THAT THE GAME STOPS WHEN SOMEONE WINS, OR WHEN THE BOARD IS FULL.
LIKE SHOWN IN THE SAMPLE OUTPUT AT BOTTOM.
*/

import java.util.Scanner;

public class TicTacBoard
{
privatechar[][] board; // 2-D array of characters
privatechar curPlayer; // the player whose turn it is (X or O)

// Constructor: board will be size x size
public TicTacBoard(int size)
{
board = new char[size][size];

// initialize the board with all spaces:
for(int row=0; row < board.length; row++)
for(int col=0; col < board[row].length; col++)
board[row][col] = ' ';

curPlayer = 'X'; // X gets the first move
}

publicvoid playGame()
{
display();
do
{
takeTurn();
display();
}while(!checkWinner());
}

/////// display ////////
// Display the current status of the board on the
// screen, using hyphens (-) for horizontal lines
// and pipes (|) for vertical lines.
publicvoid display()
{
System.out.println();
dispRow(0);
System.out.println("-----");
dispRow(1);
System.out.println("-----");
dispRow(2);
System.out.println();
}

// Display the current status of row r of the board
// on the screen, using hyphens (-) for horizontal
// lines and pipes (|) for vertical lines.
privatevoid dispRow(int r)
{
System.out.println(board[r][0] + "|" + board[r][1]
+ "|" + board[r][2]);
}

/////// takeTurn ////////
// Allow the curPlayer to take a turn.
// Send output to screen saying whose turn
// it is and specifying the format for input.
// Read user's input and verify that it is a
// valid move. If it's invalid, make them
// re-enter it. When a valid move is entered,
// put it on the board.
publicvoid takeTurn()
{
Scanner scan = new Scanner(System.in);
int row, col;
boolean invalid;

do{
invalid = false; // assume correct entry
System.out.println("It is now " + curPlayer + "'s turn.");
System.out.println("Please enter your move in the form row column.");
System.out.println("So 0 0 would be the top left, and 0 2 would be the top right.");
row = scan.nextInt();
col = scan.nextInt();

if(row < 0 || col < 0 || row > 2 || col > 2)
{
System.out.println("Invalid entry: row and column must both be between 0 and 2 (inclusive).");
System.out.println("Please try again.");
invalid = true;
}
elseif(board[row][col] != ' ')
{
System.out.println("Invalid entry: Row " + row + " at Column " + col
+ " already contains: " + board[row][col]);
System.out.println("Please try again.");
invalid = true;
}
}while(invalid);

board[row][col] = curPlayer;

if(curPlayer == 'X')
curPlayer = 'O';
else
curPlayer = 'X';
}

// If the game is over, print who won (if anyone),
// and return true. If the game is not over, return false.
publicboolean checkWinner()
{
// YOUR CODE GOES HERE
returnfalse; // The game never ends. CHANGE THIS
}
}

/* Sample Output:

| |
-----
| |
-----
| |

It is now X's turn.
Please enter your move in the form row column.
So 0 0 would be the top left, and 0 2 would be the top right.
0 0

X| |
-----
| |
-----
| |

It is now O's turn.
Please enter your move in the form row column.
So 0 0 would be the top left, and 0 2 would be the top right.
2 0

X| |
-----
| |
-----
O| |

It is now X's turn.
Please enter your move in the form row column.
So 0 0 would be the top left, and 0 2 would be the top right.
1 1

X| |
-----
|X|
-----
O| |

It is now O's turn.
Please enter your move in the form row column.
So 0 0 would be the top left, and 0 2 would be the top right.
2 1

X| |
-----
|X|
-----
O|O|

It is now X's turn.
Please enter your move in the form row column.
So 0 0 would be the top left, and 0 2 would be the top right.
2 2

X| |
-----
|X|
-----
O|O|X

Player X wins!

 
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 4 images

Blurred answer
Knowledge Booster
Lower bounds sorting algorithm
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ for Engineers and Scientists
C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr