public PlaceGamePieceResponse PlaceGamePiece(int columnNumber, bool isPlayerOnesTurn) { var response = new PlaceGamePieceResponse(); if (!IsValidColumn(columnNumber)) { response.PositionStatus = PositionStatus.Invalid; return(response); } // check for full column var topPositionInColumn = new BoardPosition(6, columnNumber); if (CustomComparer.PositionHistoryCompare(BoardHistory, topPositionInColumn, PositionHistory.Player1Piece) || CustomComparer.PositionHistoryCompare(BoardHistory, topPositionInColumn, PositionHistory.Player2Piece)) { response.PositionStatus = PositionStatus.ColumnFull; return(response); } var rowNumber = DetermineRowNumber(columnNumber); if (rowNumber == 0) //error, somehow a bad column input got through or board was drawn incorrectly { return(null); } var position = new BoardPosition(rowNumber, columnNumber); response = CheckForVictory(position, isPlayerOnesTurn); return(response); }
private PlaceGamePieceResponse CheckForVictory(BoardPosition position, bool isPlayerOnesTurn) { var response = new PlaceGamePieceResponse(); var playerVictory = PlayerVictoryCheck(isPlayerOnesTurn ? PositionHistory.Player1Piece : PositionHistory.Player2Piece, position); response.PositionStatus = playerVictory ? PositionStatus.WinningMove : PositionStatus.Ok; response.BoardPosition = position; response.WinningPositionValues = _winningPositionValues; return(response); }