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]); }
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); }
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]); }
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()); }