示例#1
0
        public void ForcedAttack_FindCapturesMovesDepthTwoLong()
        {
            int startX = 16;
            int startY = 16;
            var field = new FieldWithGroups(39, 32);

            field.MakeMove(startX, startY);
            field.MakeMove(startX + 1, startY);

            field.MakeMove(startX + 1, startY + 1);
            field.MakeMove(startX + 2, startY);

            field.MakeMove(startX + 2, startY + 1);

            field.MakeMove(startX + 3, startY, 0);

            var moveGenerator = new ForcedAttackMoveGenerator(field);
            var CapturesMoves = moveGenerator.FindCapturesMoves(0, 2);

            Assert.AreEqual(1, CapturesMoves.Count);
            Assert.AreEqual(Field.GetPosition(startX + 1, startY - 1), CapturesMoves[0].CapturePositions[0]);
            Assert.AreEqual(Field.GetPosition(startX + 2, startY - 1), CapturesMoves[0].CapturePositions[1]);
            Assert.AreEqual(6, CapturesMoves[0].ChainPositions.Count);
            Assert.AreEqual(Field.GetPosition(startX + 2, startY), CapturesMoves[0].SurroundedPositions[0]);
            Assert.AreEqual(Field.GetPosition(startX + 1, startY), CapturesMoves[0].SurroundedPositions[1]);
        }
示例#2
0
        public void ForcedAttack_FindCapturesMovesDepthTwoShort()
        {
            int startX = 16;
            int startY = 16;
            var field = new FieldWithGroups(39, 32);

            field.MakeMove(startX, startY, 0);
            field.MakeMove(startX - 1, startY + 1, 0);
            field.MakeMove(startX, startY + 2, 0);

            field.MakeMove(startX + 2, startY, 0);
            field.MakeMove(startX + 3, startY + 1, 0);
            field.MakeMove(startX + 2, startY + 2, 0);

            field.MakeMove(startX, startY + 1, 1);
            field.MakeMove(startX + 1, startY + 1, 1);
            field.MakeMove(startX + 2, startY + 1, 1);

            var moveGenerator = new ForcedAttackMoveGenerator(field);
            var CapturesMoves = moveGenerator.FindCapturesMoves(0, 2);

            Assert.AreEqual(4, CapturesMoves.Count);
            Assert.AreEqual(8, CapturesMoves[0].ChainPositions.Count);
            Assert.AreEqual(8, CapturesMoves[0].ChainPositions.Count);
            Assert.AreEqual(8, CapturesMoves[0].ChainPositions.Count);
            Assert.AreEqual(8, CapturesMoves[0].ChainPositions.Count);
        }
示例#3
0
        public void ForcedAttack_FindCapturesMovesDepthOne()
        {
            int startX = 16;
            int startY = 16;
            var field = new FieldWithGroups(39, 32);

            field.MakeMove(startX, startY);
            field.MakeMove(startX - 1, startY);

            field.MakeMove(startX + 1, startY + 1);
            field.MakeMove(startX, startY + 1);

            field.MakeMove(startX, startY + 2);
            field.MakeMove(startX - 1, startY + 2);

            var moveGenerator = new ForcedAttackMoveGenerator(field);
            var CapturesMoves = moveGenerator.FindCapturesMoves(field.CurrentPlayer, 1);

            Assert.AreEqual(1, CapturesMoves.Count);
            Assert.AreEqual(Field.GetPosition(startX - 1, startY + 1), CapturesMoves[0].CapturePositions[0]);
            Assert.AreEqual(4, CapturesMoves[0].ChainPositions.Count);
            Assert.AreEqual(Field.GetPosition(startX, startY + 1), CapturesMoves[0].SurroundedPositions[0]);
        }
示例#4
0
        public void ForcedAttack_Ladder()
        {
            int startX = 16;
            int startY = 16;
            var field = new FieldWithGroups(39, 32);

            field.MakeMove(startX, startY);
            field.MakeMove(startX + 1, startY);

            field.MakeMove(startX + 1, startY + 1);
            field.MakeMove(startX + 2, startY);

            field.MakeMove(startX + 2, startY + 1);

            field.MakeMove(startX + 3, startY, 0);

            field.MakeMove(startX + 5, startY - 4, 0);
            //field.MakeMove(startX + 3, startY - 2, Dot.RedPlayer);

            var moveGenerator = new ForcedAttackMoveGenerator(field);
            moveGenerator.GenerateMoves(0);

            var result = moveGenerator.HashEntries.Select(entry => DotsGame.AI.Helper.HashEntryToString(entry)).ToList();
            Assert.AreEqual(Field.GetPosition(startX + 1, startY - 1), moveGenerator.HashEntries[0].GetMove());
            Assert.AreEqual(13, moveGenerator.HashEntries[0].GetDepth());

            field.MakeMove(startX + 1, startY - 1, 0);
            field.MakeMove(startX + 2, startY - 1, 1);
            moveGenerator.GenerateMoves(0);

            result = moveGenerator.HashEntries.Select(entry => DotsGame.AI.Helper.HashEntryToString(entry)).ToList();
            Assert.AreEqual(Field.GetPosition(startX + 2, startY - 2), moveGenerator.HashEntries[0].GetMove());
            Assert.AreEqual(11, moveGenerator.HashEntries[0].GetDepth());
        }