From 6163ceaa7e8d9ef56678ba42956e288d021567dc Mon Sep 17 00:00:00 2001 From: jgiroso Date: Sat, 3 Jul 2021 13:51:30 -0400 Subject: [PATCH] Tic Tac Toe Lab Complete --- pom.xml | 12 +++ .../zipcodewilmington/tictactoe/Board.java | 86 +++++++++++++++++-- .../tictactoe/PlayerTies2Test.java | 6 +- 3 files changed, 94 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 3b8d043..135aaa3 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ rocks.zipcodewilmington tic-tac-toe 1.0 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 15 + 15 + + + + junit diff --git a/src/main/java/rocks/zipcodewilmington/tictactoe/Board.java b/src/main/java/rocks/zipcodewilmington/tictactoe/Board.java index f56452f..c20f874 100644 --- a/src/main/java/rocks/zipcodewilmington/tictactoe/Board.java +++ b/src/main/java/rocks/zipcodewilmington/tictactoe/Board.java @@ -4,23 +4,95 @@ * @author leon on 6/22/18. */ public class Board { - public Board(Character[][] matrix) { - } + private Character[][] matrix; + public Board(Character[][] matrix) {this.matrix = matrix;} public Boolean isInFavorOfX() { - return null; + int xCount = 0; + int oCount = 0; + for(int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (matrix[i][j] == 'X') { + xCount++; + } else if (matrix[i][j] == 'O') { + oCount++; + } + } + } + if(isTie().equals(true)){ + return false; + } else if(xCount > oCount) { + return true; + } return false; } public Boolean isInFavorOfO() { - return null; + int xCount = 0; + int oCount = 0; + + for(int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (matrix[i][j] == 'X') { + xCount++; + } else if (matrix[i][j] == 'O') { + oCount++; + } + } + } + if(isTie().equals(true)){ + return false; + } else if(xCount < oCount) { + return true; + } return false; } public Boolean isTie() { - return null; + if(getWinner().equals("")){ + return true; + } + return false; } public String getWinner() { - return null; + String winner = ""; + int row = 0; + int column = 0; + int k = 0; //next row or column + boolean xIsWinner = true; + boolean oIsWinner = true; + for (int i = 0; i < 3; i++) { + //rows + if(matrix[i][0].equals('X') && matrix[i][1].equals('X') && matrix[i][2].equals('X')) { + winner = "X"; + break; + } else if(matrix[i][0].equals('O') && matrix[i][1].equals('O') && matrix[i][2].equals('O')) { + winner = "O"; + break; + //columns + } else if(matrix[0][i].equals('X') && matrix[1][i].equals('X') && matrix[2][i].equals('X')) { + winner = "X"; + break; + } else if(matrix[0][i].equals('O') && matrix[1][i].equals('O') && matrix[2][i].equals('O')) { + winner = "O"; + break; + //forward diagonal + } else if(matrix[0][0].equals('X') && matrix[1][1].equals('X') && matrix[2][2].equals('X')) { + winner = "X"; + break; + } else if(matrix[0][0].equals('O') && matrix[1][1].equals('O') && matrix[2][2].equals('O')) { + winner = "O"; + break; + //reverse diagonal + } else if(matrix[0][2].equals('X') && matrix[1][1].equals('X') && matrix[2][0].equals('X')) { + winner = "X"; + break; + } else if(matrix[0][2].equals('O') && matrix[1][1].equals('O') && matrix[2][0].equals('O')) { + winner = "O"; + break; + //tie + } else winner = ""; + } + return winner; } - } + diff --git a/src/test/java/rocks/zipcodewilmington/tictactoe/PlayerTies2Test.java b/src/test/java/rocks/zipcodewilmington/tictactoe/PlayerTies2Test.java index 9193c60..f91b320 100644 --- a/src/test/java/rocks/zipcodewilmington/tictactoe/PlayerTies2Test.java +++ b/src/test/java/rocks/zipcodewilmington/tictactoe/PlayerTies2Test.java @@ -15,9 +15,9 @@ public class PlayerTies2Test { public void setup() { // Given this.board = new Board(new Character[][]{ - {'X', 'X', 'O'}, - {'O', 'X', 'X'}, - {'X', 'O', 'O'} + {'X', 'X', 'O'}, //[0][0], [0][1], [0][2] + {'O', 'X', 'X'}, //[1][0], [1][1], [1][2] + {'X', 'O', 'O'} //[2][0], [2][1], [2][2] }); }