Example #1
0
            public void Setup()
            {
                _whiteQueen = new Queen(PlayerColor.White);
                _blackQueen = new Queen(PlayerColor.Black);
                _whiteStart = new BoardCoordinate(1, 1);

                _board.AddPiece(_whiteQueen, _whiteStart);
            }
Example #2
0
            public void Returns_No_When_Diagonal_Move_Is_Blocked()
            {
                _blackStart = new BoardCoordinate(4, 4);
                _board.AddPiece(_blackQueen, _blackStart);

                var move = new MoveAttempt(_board, _whiteStart, new BoardCoordinate(8, 8));
                var moveResult = _referee.TryMove(move);
                Assert.AreEqual(MoveResult.Failed(), moveResult);
            }
Example #3
0
            public void Accepts_Rook_As_Argument_For_Piece()
            {
                var coordinate = new BoardCoordinate(1, 2);

                Target.AddPiece(new Rook(), coordinate);
            }
Example #4
0
            public void Throws_Exception_When_BoardCoordinate_Has_Larger_Value_Y_Than_Board_Size()
            {
                var coordinate = new BoardCoordinate(1, 9);

                ExtendedAssert.Throws<ArgumentException>(() => this.target.AddPiece(new Pawn(), coordinate));
            }
Example #5
0
            public void Throws_Exception_When_BoardCoordinate_Has_Zero_X_Value()
            {
                var coordinate = new BoardCoordinate(0, 3);

                ExtendedAssert.Throws<ArgumentException>(() => this.target.AddPiece(new Pawn(), coordinate));
            }
Example #6
0
 public void Returns_1_1_When_Passed_1_2()
 {
     var legalMoves = _piece.GetLegalMovesFromCoordinate(new BoardCoordinate(1, 2), _board.BoardSize);
     var target = new BoardCoordinate(1, 1);
     Assert.IsTrue(legalMoves.Contains(target));
 }
Example #7
0
            public void Returns_No_When_Diagonal_Move_Is_Blocked_From_Non_1_1_Start()
            {
                var newWhiteStart = new BoardCoordinate(2, 1);
                _board.RemovePiece(_whiteStart);
                _board.AddPiece(_whiteQueen, newWhiteStart);
                _blackStart = new BoardCoordinate(3, 2);
                _board.AddPiece(_blackQueen, _blackStart);

                var move = new MoveAttempt(_board, newWhiteStart, new BoardCoordinate(4, 3));
                var moveResult = _referee.TryMove(move);
                Assert.AreEqual(MoveResult.Failed(), moveResult);
            }
Example #8
0
            public void Returns_False_For_Y_Less_Than_Zero()
            {
                var coordinate = new BoardCoordinate(-12, 2);

                Assert.IsFalse(coordinate.IsCoordinateValidForBoardSize(5));
            }
Example #9
0
 public void throws_exception_when_boardcoordinate_has_larger_y_value_than_board_size()
 {
     var coordinate = new BoardCoordinate(1, 9);
     Assert.Throws<ArgumentException>(() => Target.AddPiece(new Pawn(), coordinate));
 }
Example #10
0
            public void Returns_Yes_Moving_King_Out_Of_Check()
            {
                var king = new King(PlayerColor.Black);
                var kingStart = new BoardCoordinate(1, 8);
                _board.AddPiece(king, kingStart);

                var move = new MoveAttempt(_board, kingStart, new BoardCoordinate(2, 8));
                var moveResult = _referee.TryMove(move);
                Assert.AreEqual(MoveResult.Succeeded(), moveResult);
            }
Example #11
0
            public void Returns_Capture_When_Capturing_Check()
            {
                var king = new King(PlayerColor.Black);
                var kingStart = new BoardCoordinate(1, 8);
                _board.AddPiece(king, kingStart);

                _blackStart = new BoardCoordinate(8, 1);
                _board.AddPiece(_blackQueen, _blackStart);

                var move = new MoveAttempt(_board, _blackStart, _whiteStart);
                var moveResult = _referee.TryMove(move);
                Assert.AreEqual(MoveResult.Captured(_whiteQueen), moveResult);
            }
Example #12
0
            public void Returns_Yes_When_Moving_To_Unoccupied_Square()
            {
                _blackStart = new BoardCoordinate(1, 4);
                _board.AddPiece(_blackQueen, _blackStart);

                var destination = new BoardCoordinate(8, 1);
                var move = new MoveAttempt(_board, _whiteStart, destination);
                var moveResult = _referee.TryMove(move);
                var endPiece = _board.GetPiece(destination);

                Assert.IsTrue(moveResult == MoveResult.Succeeded() && endPiece == _whiteQueen);
            }
Example #13
0
            public void Returns_Capture_When_Move_To_Opponent_Occupied_Square()
            {
                _blackStart = new BoardCoordinate(1, 4);
                _board.AddPiece(_blackQueen, _blackStart);

                var move = new MoveAttempt(_board, _whiteStart, _blackStart);
                var moveResult = _referee.TryMove(move);
                var endPiece = _board.GetPiece(_blackStart);

                Assert.IsTrue(moveResult == MoveResult.Captured(_blackQueen) && endPiece == _whiteQueen);
            }
Example #14
0
            public void Returns_Yes_When_Knight_Move_Is_Blocked()
            {
                _blackStart = new BoardCoordinate(2, 2);
                _board.AddPiece(_blackQueen, _blackStart);

                var knight = new Knight(PlayerColor.White);
                var knightStart = new BoardCoordinate(2, 1);

                _board.AddPiece(knight, knightStart);

                var destination = new BoardCoordinate(3, 3);
                var move = new MoveAttempt(_board, knightStart, destination);
                var moveResult = _referee.TryMove(move);

                Assert.AreEqual(MoveResult.Succeeded(), moveResult);
            }
Example #15
0
 public void Does_Not_Return_1_3_When_Passed_1_1()
 {
     var legalMoves = _piece.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize);
     var target = new BoardCoordinate(1, 3);
     Assert.IsFalse(legalMoves.Contains(target));
 }
Example #16
0
 public void Returns_2_2_When_Passed_1_1()
 {
     var legalMoves = _piece.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize);
     var target = new BoardCoordinate(2, 2);
     Assert.IsTrue(legalMoves.Contains(target));
 }
Example #17
0
            public void Throws_Exception_When_BoardCoordinate_Has_Larger_X_Value_Than_Board_Size()
            {
                var coordinate = new BoardCoordinate(9, 1);

                ExtendedAssert.Throws<ArgumentException>(() => Target.AddPiece(Piece, coordinate));
            }
Example #18
0
            public void Returns_No_When_Not_Solving_Check()
            {
                var king = new King(PlayerColor.Black);
                var kingStart = new BoardCoordinate(1, 8);
                _board.AddPiece(king, kingStart);

                _blackStart = new BoardCoordinate(2, 4);
                _board.AddPiece(_blackQueen, _blackStart);

                var move = new MoveAttempt(_board, _blackStart, new BoardCoordinate(2, 8));
                var moveResult = _referee.TryMove(move);
                Assert.AreEqual(MoveResult.Failed(), moveResult);
            }
Example #19
0
            public void Throws_Exception_When_BoardCoordinate_Has_Zero_Y_Value()
            {
                var coordinate = new BoardCoordinate(1, 0);

                ExtendedAssert.Throws<ArgumentException>(() => Target.AddPiece(Piece, coordinate));
            }
 public void returns_false_for_y_less_than_zero()
 {
     var coordinate = new BoardCoordinate(1, -1);
     Assert.IsFalse(coordinate.IsCoordinateValidForBoardSize(8));
 }
Example #21
0
 public void accepts_rook_as_argument_for_piece()
 {
     var coordinate = new BoardCoordinate(1, 2);
     Target.AddPiece(new Rook(), coordinate);
 }
Example #22
0
    private IEnumerator SearchCombo()
    {
        IsSearching = true;

        maxComboLenght = 0;

        List <BoardCoordinate> deleteCoordinate = new List <BoardCoordinate>();

        for (int i = 0; i < width; ++i)
        {
            for (int j = 0; j < height; ++j)
            {
                if (indexMap[i][j] == TileObjectPull.comboBonusIndex)
                {
                    if (i <= width - comboLenght)
                    {
                        //Check horizontal combo. Go to the right.

                        int iterator = 1;

                        for (int k = i + 1; iterator < comboLenght && k < width; ++k)
                        {
                            if (indexMap[k][j] == indexMap[i][j])
                            {
                                iterator++;
                            }
                            else
                            {
                                break;
                            }
                        }

                        if (iterator >= comboLenght)
                        {
                            if (iterator >= maxComboLenght)
                            {
                                maxComboLenght = iterator;
                            }

                            //we got horizontal combo, so add full row
                            for (int l = 0; l < width; ++l)
                            {
                                var tmp = new BoardCoordinate(j, l);
                                if (!deleteCoordinate.Contains(tmp))
                                {
                                    deleteCoordinate.Add(tmp);
                                }
                            }
                        }
                    }

                    if (j <= height - comboLenght)
                    {
                        //Check vertical combo. Go to up

                        int iterator = 1;


                        for (int k = j + 1; iterator < comboLenght && k < height; ++k)
                        {
                            if (indexMap[i][k] == indexMap[i][j])
                            {
                                iterator++;
                            }
                            else
                            {
                                break;
                            }
                        }


                        if (iterator >= comboLenght)
                        {
                            //we got vertical combo so add full column

                            if (iterator >= maxComboLenght)
                            {
                                maxComboLenght = iterator;
                            }


                            for (int l = 0; l < height; ++l)
                            {
                                var tmp = new BoardCoordinate(l, i);

                                if (!deleteCoordinate.Contains(tmp))
                                {
                                    deleteCoordinate.Add(tmp);
                                }
                            }
                        }
                    }

                    continue;
                }
                else if (indexMap[i][j] >= TileObjectPull.instance.GetCountOfTiles())
                {
                    var array = BonusTileObject.GetDestroingCoordinatesByTileIndexAndPosition(indexMap[i][j]
                                                                                              , new BoardCoordinate(j, i));

                    for (int l = 0; l < array.Length; ++l)
                    {
                        if (!deleteCoordinate.Contains(array[l]))
                        {
                            deleteCoordinate.Add(array[l]);
                        }
                    }
                    continue;
                }

                if (i <= width - comboLenght)
                {
                    //Check horizontal combo. Go to the right.

                    int iterator = 1;

                    for (int k = i + 1; k < width; ++k)
                    {
                        if (indexMap[k][j] == indexMap[i][j])
                        {
                            iterator++;
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (iterator >= comboLenght)
                    {
                        if (iterator >= maxComboLenght)
                        {
                            maxComboLenght = iterator;
                        }


                        for (int k = 0; k < iterator; ++k)
                        {
                            var tmp = new BoardCoordinate(j, i + k);

                            if (!deleteCoordinate.Contains(tmp))
                            {
                                deleteCoordinate.Add(tmp);
                            }
                        }
                    }
                }

                if (j <= height - comboLenght)
                {
                    //Check vertical combo. Go to up

                    int iterator = 1;


                    for (int k = j + 1; k < height; ++k)
                    {
                        if (indexMap[i][k] == indexMap[i][j])
                        {
                            iterator++;
                        }
                        else
                        {
                            break;
                        }
                    }


                    if (iterator >= comboLenght)
                    {
                        if (iterator >= maxComboLenght)
                        {
                            maxComboLenght = iterator;
                        }


                        for (int k = 0; k < iterator; ++k)
                        {
                            var tmp = new BoardCoordinate(j + k, i);

                            if (!deleteCoordinate.Contains(tmp))
                            {
                                deleteCoordinate.Add(tmp);
                            }
                        }
                    }
                }
            }
        }

        if (startingMap == null)
        {
            startingMap = new List <List <int> >();
            for (int i = 0; i < width; ++i)
            {
                startingMap.Add(new List <int>(indexMap[i]));
            }
        }

        coordinateForDelete = deleteCoordinate;

        yield return(Ninja.JumpToUnity);

        yield return(this.StartCoroutineAsync(DeleteCoroutine(new List <BoardCoordinate>(deleteCoordinate))));

        IsSearching = false;
    }
Example #23
0
 public void throws_exception_when_boardcoordinate_has_zero_x_value()
 {
     var coordinate = new BoardCoordinate(0, 1);
     Assert.Throws<ArgumentException>(() => Target.AddPiece(new Pawn(), coordinate));
 }
Example #24
0
 public void Setup()
 {
     _board = new Board(8);
     _piece = new King(PlayerColor.White);
     _startingLocation = new BoardCoordinate(1, 1);
 }
 public void BeforeEachTest()
 {
     Target = new Board();
     Coordinate = BoardCoordinate.For(1, 1);
 }
Example #26
0
 public Moves(IEnumerable <BoardCoordinate> validMoves, BoardCoordinate startingCoordinate, int boardSize)
 {
     _boardSize          = boardSize;
     _startingCoordinate = startingCoordinate;
     _validMoves         = validMoves;
 }