From d075367bc81c6eceacdc4e7fd1a7e706cae904e9 Mon Sep 17 00:00:00 2001 From: Prantar Date: Fri, 1 Jun 2018 01:05:20 -0400 Subject: [PATCH] Completed computer brain --- Computer.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 6 deletions(-) diff --git a/Computer.cpp b/Computer.cpp index a73b394..2c4e216 100644 --- a/Computer.cpp +++ b/Computer.cpp @@ -97,9 +97,30 @@ char Computer::otherPlayerSymbol(Board* board) { * Sends (-1, -1) if suitable move not found */ std::pair Computer::checkRow(Board* board, char playerSymbol) { - (void)board; - (void)playerSymbol; + int symbolCounter = 0; + int rowMove = 0, colMove = 0; std::pair locationInfo; + + REP(rowNumber, 1, 4) { + symbolCounter = 0; + rowMove = 0; + colMove = 0; + + REP(colNumber, 1, 4) { + if (board->GetSymbol(rowNumber, colNumber) == playerSymbol) { + symbolCounter++; + } else { + rowMove = rowNumber; + colMove = colNumber; + } + } + if (symbolCounter == 2) { + if (!board->IsPositionTaken(rowMove, colMove)) { + return std::pair(rowMove, colMove); + } + } + } + return std::pair(-1, -1); } @@ -116,9 +137,30 @@ std::pair Computer::checkRow(Board* board, char playerSymbol) { * Sends (-1, -1) if suitable move not found */ std::pair Computer::checkColumn(Board* board, char playerSymbol) { - (void)board; - (void)playerSymbol; + int symbolCounter = 0; + int rowMove = 0, colMove = 0; std::pair locationInfo; + + REP(colNumber, 1, 4) { + symbolCounter = 0; + rowMove = 0; + colMove = 0; + + REP(rowNumber, 1, 4) { + if (board->GetSymbol(rowNumber, colNumber) == playerSymbol) { + symbolCounter++; + } else { + rowMove = rowNumber; + colMove = colNumber; + } + } + if (symbolCounter == 2) { + if (!board->IsPositionTaken(rowMove, colMove)) { + return std::pair(rowMove, colMove); + } + } + } + return std::pair(-1, -1); } @@ -135,9 +177,46 @@ std::pair Computer::checkColumn(Board* board, char playerSymbol) { * Sends (-1, -1) if suitable move not found */ std::pair Computer::checkDiagonal(Board* board, char playerSymbol) { - (void)board; - (void)playerSymbol; + int symbolCounter = 0; + int rowMove = 0, colMove = 0; + int rightDiagonalCol = 3; std::pair locationInfo; + + REP(leftDiagonal, 1, 4) { + if (board->GetSymbol(leftDiagonal, leftDiagonal) == playerSymbol) { + symbolCounter++; + } else { + rowMove = leftDiagonal; + colMove = leftDiagonal; + } + } + + if (symbolCounter == 2) { + if (!board->IsPositionTaken(rowMove, colMove)) { + return std::pair(rowMove, colMove); + } + } + + rowMove = 0; + colMove = 0; + symbolCounter = 0; + + REP(rightDiagonalRow, 1, 4) { + if (board->GetSymbol(rightDiagonalRow, rightDiagonalCol) == playerSymbol) { + symbolCounter++; + } else { + rowMove = rightDiagonalRow; + colMove = rightDiagonalCol; + } + rightDiagonalCol--; + } + + if (symbolCounter == 2) { + if (!board->IsPositionTaken(rowMove, colMove)) { + return std::pair(rowMove, colMove); + } + } + return std::pair(-1, -1); }