Exemplo n.º 1
0
        public void MiniMaxEvaluator()
        {
            position  = new FrogsAndToadsPosition(gameString1);
            evaluator = new MiniMaxEvaluator();
            value     = evaluator.LeftEvaluation(position);
            Assert.AreEqual(2, value);

            position  = new FrogsAndToadsPosition(gameString2);
            evaluator = new MiniMaxEvaluator();
            value     = evaluator.LeftEvaluation(position);
            Assert.AreEqual(0, value);
            value = evaluator.LeftEvaluation(position.Reverse() as FrogsAndToadsPosition);
            Assert.AreEqual(0, value);

            position  = new FrogsAndToadsPosition(gameString3);
            evaluator = new MiniMaxEvaluator();
            value     = evaluator.LeftEvaluation(position);
            Assert.AreEqual(2, value);

            position  = new FrogsAndToadsPosition(gameString4);
            evaluator = new MiniMaxEvaluator();
            value     = evaluator.LeftEvaluation(position);
            Assert.AreEqual(3, value);

            position  = new FrogsAndToadsPosition(gameString5);
            evaluator = new MiniMaxEvaluator();
            value     = evaluator.RightEvaluation(position);
            Assert.AreEqual(-3, value);
        }
Exemplo n.º 2
0
        public void CanMovePiece()
        {
            position = new FrogsAndToadsPosition(2, 2, 2);

            try
            {
                int value = -1;
                position.CanMovePiece(value);
                Assert.Fail($"Failed to throw an IndexOutOfRangeException for index {value}.");
            }
            catch (IndexOutOfRangeException)
            { }

            try
            {
                int value = 6;
                position.CanMovePiece(value);
                Assert.Fail($"Failed to throw an IndexOutOfRangeException for index {value}.");
            }
            catch (IndexOutOfRangeException)
            { }

            Assert.IsFalse(position.CanMovePiece(0));
            Assert.IsTrue(position.CanMovePiece(1));
            Assert.IsFalse(position.CanMovePiece(2));
            Assert.IsFalse(position.CanMovePiece(3));
            Assert.IsTrue(position.CanMovePiece(4));
            Assert.IsFalse(position.CanMovePiece(5));
        }
Exemplo n.º 3
0
        public void GetAllPossibleMoves()
        {
            position = new FrogsAndToadsPosition(2, 2, 2);

            possibleMoves = position.GetAllPossibleMoves();
            Assert.AreEqual(2, possibleMoves.Count);
            Assert.IsTrue(_sources.Contains(1));
            Assert.IsTrue(_sources.Contains(4));
            Assert.IsTrue(_targets.Contains(2));
            Assert.IsTrue(_targets.Contains(3));

            _move    = new FrogsAndToadsMove(1, 2);
            position = position.PlayMove(_move);

            _move    = new FrogsAndToadsMove(4, 3);
            position = position.PlayMove(_move);

            possibleMoves = position.GetAllPossibleMoves();
            Assert.AreEqual(4, possibleMoves.Count);
            Assert.IsTrue(_sources.Contains(0));
            Assert.IsTrue(_sources.Contains(2));
            Assert.IsTrue(_sources.Contains(3));
            Assert.IsTrue(_sources.Contains(5));
            Assert.IsTrue(_targets.Contains(1));
            Assert.IsTrue(_targets.Contains(4));
        }
Exemplo n.º 4
0
        public void MiniMax()
        {
            player = new EvaluatingPlayer("", new MiniMaxEvaluator());

            //position = new FrogsAndToadsPosition("T___");
            //result = player.PlayLeft(_options);
            //correctMove = new FrogsAndToadsMove(0, 1);
            //Assert.AreEqual(position.PlayMove(correctMove).ToString(), result.Value.ToString());


            //position = new FrogsAndToadsPosition("T_T_");
            //result = player.PlayLeft(_options);
            //correctMove = new FrogsAndToadsMove(0, 1);
            //Assert.AreEqual(position.PlayMove(correctMove).ToString(), result.Value.ToString());


            //position = new FrogsAndToadsPosition("T_T_F");
            //result = player.PlayLeft(_options);
            //correctMove = new FrogsAndToadsMove(2, 3);
            //Assert.AreEqual(position.PlayMove(correctMove).ToString(), result.Value.ToString());


            position = new FrogsAndToadsPosition("T_T___FF");
            result   = player.PlayLeft(_options);


            //// is  (0 -> 2) the best move?
            //position = new FrogsAndToadsPosition("TF_TF_TF__TF");
            //result = player.PlayLeft(_options);
            //correctMove = new FrogsAndToadsMove(0, 2);
            //Assert.AreEqual(position.PlayMove(correctMove).ToString(), result.Value.ToString());
        }
Exemplo n.º 5
0
        public void SubPosition()
        {
            FrogsAndToadsPosition position = new FrogsAndToadsPosition(2, 2, 2);

            Assert.AreEqual("< T >", position.SubPosition(0, 0).ToString());
            Assert.AreEqual("< T T >", position.SubPosition(0, 1).ToString());
            Assert.AreEqual("< T _ _ F >", position.SubPosition(1, 4).ToString());
        }
Exemplo n.º 6
0
 internal EvaluationData(
     FrogsAndToadsPosition position,
     int depth,
     int bestToad,
     int bestFrog)
 {
     Position = position;
     Depth    = depth;
     BestToad = bestToad;
     BestFrog = bestFrog;
 }
Exemplo n.º 7
0
        public void EvaluateEndPosition()
        {
            MiniMaxEvaluator evaluator = new MiniMaxEvaluator();

            position = new FrogsAndToadsPosition("TT__");
            Assert.AreEqual(4, evaluator.EvaluateEndPositionForToads(position));

            position = new FrogsAndToadsPosition("__F_F______");
            Assert.AreEqual(-5, evaluator.EvaluateEndPositionForFrogs(position));

            position = new FrogsAndToadsPosition("TFTFF__TTFF___T_T___TTFTFFFF_TTT___");
            int result = evaluator.EvaluateEndPositionForToads(position);

            Assert.AreEqual(0 + 7 + 9, result);
        }
Exemplo n.º 8
0
        public void EvaluateToadMoves()
        {
            position = new FrogsAndToadsPosition(gameString6);
            MiniMaxEvaluator evaluator = new MiniMaxEvaluator();
            var x = evaluator.EvaluateToadMoves(position);

            Assert.AreEqual(2, x.Count);
            Assert.AreEqual(-2, x.First().value);
            Assert.AreEqual(1, x.Skip(1).First().value);

            position = position.PlayMove(new FrogsAndToadsMove(0, 2));
            x        = evaluator.EvaluateToadMoves(position.Reverse());
            Assert.AreEqual(2, x.Count);
            Assert.AreEqual(2, x.First().value);
            Assert.AreEqual(-1, x.Skip(1).First().value);
        }
Exemplo n.º 9
0
        public void PlayMove()
        {
            position = new FrogsAndToadsPosition(2, 2, 2);

            _move    = new FrogsAndToadsMove(1, 2);
            position = position.PlayMove(_move);
            Assert.AreEqual("< T _ T _ F F >", position.ToString());

            _move    = new FrogsAndToadsMove(4, 3);
            position = position.PlayMove(_move);
            Assert.AreEqual("< T _ T F _ F >", position.ToString());

            _move    = new FrogsAndToadsMove(2, 4);
            position = position.PlayMove(_move);
            Assert.AreEqual("< T _ _ F T F >", position.ToString());
        }
Exemplo n.º 10
0
        public void MiniMiniMax()
        {
            player   = new MiniMiniMaxPlayer("");
            position = new FrogsAndToadsPosition("T_TF_F");

            result      = player.PlayLeft(_options);
            correctMove = new FrogsAndToadsMove(2, 4);
            Assert.AreEqual(position.PlayMove(correctMove).ToString(), result.Value.ToString());

            position    = new FrogsAndToadsPosition("T_TT_F");
            result      = player.PlayLeft(_options);
            correctMove = new FrogsAndToadsMove(3, 4);
            Assert.AreEqual(position.PlayMove(correctMove).ToString(), result.Value.ToString());

            position    = new FrogsAndToadsPosition("T__TF_");
            result      = player.PlayLeft(_options);
            correctMove = new FrogsAndToadsMove(0, 1);
            Assert.AreEqual(position.PlayMove(correctMove).ToString(), result.Value.ToString());
        }
Exemplo n.º 11
0
        public void GetSubPositions()
        {
            List <FrogsAndToadsPosition> subPositions;

            position     = new FrogsAndToadsPosition("TF__TF_");
            subPositions = position.GetSubPositions();
            Assert.AreEqual("< T F _ _ T F _ >", subPositions.First().ToString());


            position     = new FrogsAndToadsPosition("T__TTFF___F");
            subPositions = position.GetSubPositions();
            Assert.AreEqual(2, subPositions.Count);
            Assert.AreEqual("< T _ _ >", subPositions[0].ToString());
            Assert.AreEqual("< _ _ _ F >", subPositions[1].ToString());

            position     = new FrogsAndToadsPosition("TFTFF__TTFF_TF_T___TTFTFFFFTTF_FT");
            subPositions = position.GetSubPositions();
            Assert.AreEqual(3, subPositions.Count);
            Assert.AreEqual("< _ _ >", subPositions[0].ToString());
            Assert.AreEqual("< _ T F _ T _ _ _ >", subPositions[1].ToString());
            Assert.AreEqual("< T T F _ F T >", subPositions[2].ToString());
        }
Exemplo n.º 12
0
        public void Construction()
        {
            FrogsAndToadsPosition position1 = new FrogsAndToadsPosition(1, 1, 1);
            FrogsAndToadsPosition position2 = new FrogsAndToadsPosition(2, 1, 1);
            FrogsAndToadsPosition position3 = new FrogsAndToadsPosition(3, 1, 2);
            FrogsAndToadsPosition position4 = new FrogsAndToadsPosition(4, 2, 3);
            FrogsAndToadsPosition position5 = new FrogsAndToadsPosition("TF__FTT");

            Assert.AreEqual("< T _ F >", position1.ToString());
            Assert.AreEqual("< T T _ F >", position2.ToString());
            Assert.AreEqual("< T T T _ F F >", position3.ToString());
            Assert.AreEqual("< T T T T _ _ F F F >", position4.ToString());
            Assert.AreEqual("< T F _ _ F T T >", position5.ToString());

            try
            {
                string value = "TF_x_FTT";
                FrogsAndToadsPosition bad = new FrogsAndToadsPosition(value);
                Assert.Fail($"Failed to throw an ArgumentException with positionString = {value}");
            }
            catch (ArgumentException)
            { }
        }
Exemplo n.º 13
0
 public void StaticConstructor()
 {
     position = FrogsAndToadsPosition.MakeInitialPosition();
     Assert.AreEqual("< T _ F >", position.ToString());
 }