Question: Write a test-first development using JUnit on a tic tac toe game from this code, the test should be about checking the winner. import java.util.Arrays;

Write a test-first development using JUnit on a tic tac toe game from this code, the test should be about checking the winner.

import java.util.Arrays; import java.util.InputMismatchException; import java.util.Scanner; public class TicTacToeGame { static Scanner in; static String[] board; static String turn; public static void main(String[] args) { in = new Scanner(System.in); board = new String[9]; turn = "S"; String winner = null; populateEmptyBoard(); System.out.println("Welcome to 2 Player Tic Tac Toe Game."); System.out.println("--------------------------------"); printBoard(); System.out.println("S's will play first. Enter a slot number to place S in:"); while (winner == null) { int numInput; try { numInput = in.nextInt(); if (!(numInput > 0 && numInput <= 9)) { System.out.println("Invalid input:plese re-enter slot number:"); continue; } } catch (InputMismatchException e) { System.out.println("Invalid input; please re-enter slot number:"); continue; } if (board[numInput-1].equals(String.valueOf(numInput))) { board[numInput-1] = turn; if (turn.equals("S")) { turn = "O"; } else { turn = "S"; } printBoard(); winner = checkWinner(); } else { System.out.println("Slot already taken:please re-enter slot number:"); continue; } } if (winner.equalsIgnoreCase("draw/tie")) { System.out.println("It's a draw! Thanks for playing the tic tac toe game."); } else { System.out.println("Congratulations! " + winner + "'s have won! Thanks for playing the tic tac toe game."); } } static String checkWinner() { for (int a = 0; a < 8; a++) { String line = null; switch (a) { case 0: line = board[0] + board[1] + board[2]; break; case 1: line = board[3] + board[4] + board[5]; break; case 2: line = board[6] + board[7] + board[8]; break; case 3: line = board[0] + board[3] + board[6]; break; case 4: line = board[1] + board[4] + board[7]; break; case 5: line = board[2] + board[5] + board[8]; break; case 6: line = board[0] + board[4] + board[8]; break; case 7: line = board[2] + board[4] + board[6]; break; } if (line.equals("SSS")) { return "S"; } else if (line.equals("OOO")) { return "O"; } } for (int a = 0; a < 9; a++) { if (Arrays.asList(board).contains(String.valueOf(a+1))) { break; } else if (a == 8) return "draw/tie"; } System.out.println(turn + "'s turn; enter a slot number to place " + turn + " in:"); return null; } static void printBoard() { System.out.println("/---|---|---\\"); System.out.println("| " + board[0] + " | " + board[1] + " | " + board[2] + " |"); System.out.println("|-----------|"); System.out.println("| " + board[3] + " | " + board[4] + " | " + board[5] + " |"); System.out.println("|-----------|"); System.out.println("| " + board[6] + " | " + board[7] + " | " + board[8] + " |"); System.out.println("/---|---|---\\"); } static void populateEmptyBoard() { for (int a = 0; a < 9; a++) { board[a] = String.valueOf(a+1); } } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!