示例#1
0
        public static void TestKnights()
        {
            Debug.WriteLine("Test: TestKnights, Begin");

            var board = new Board();
            //Set them up in standard positions
            var KW0 = new Knight(new Vector2(1, 7), Color.White);
            var KW1 = new Knight(new Vector2(6, 7), Color.White);
            var KB0 = new Knight(new Vector2(1, 0), Color.Black);
            var KB1 = new Knight(new Vector2(6, 0), Color.Black);

            board.Pieces.Add(KW0);
            board.Pieces.Add(KW1);
            board.Pieces.Add(KB0);
            board.Pieces.Add(KB1);

            //Test standard moves
            Debug.Assert(KW0.IsMoveValid(board, KW0.Position.AddVector(2, -1)), "right 2 up 1");
            Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(3, -1)), "right 3 up 1");
            Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(1, -1)), "right 1 up 1");
            Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(2, 1)), "right 2 down 1, off board");
            Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(-2, -1)), "left 2 up 1, off board");

            //Test collision with other pieces
            var blockingPawn = new Pawn(KW0.Position.AddVector(2, -1), Color.White);

            board.Pieces.Add(blockingPawn);
            Debug.Assert(!KW0.IsMoveValid(board, KW0.Position.AddVector(2, -1)), "right 2 up 1, team mate at destination");
            blockingPawn.Color = Color.Black;
            Debug.Assert(KW0.IsMoveValid(board, KW0.Position.AddVector(2, -1)), "right 2 up 1, enemy at destination");
            Debug.WriteLine("Test: TestKnights, End");
        }