Beispiel #1
0
        /// <summary>
        /// Gets the next target search
        /// </summary>
        /// <param name="current">Next Node</param>
        public Search Next(PositionNode current)
        {
            sbyte nextPlayer = board.NextPlayer(CurrentPlayer);

            Search next = new Search(board, current, RootPlayer, nextPlayer);

            if (current.RolledDoubles)
            {
                next.NextPlayer = next.CurrentPlayer;

                next.DoublesCount = DoublesCount + 1;
                if (next.DoublesCount >= 3)
                {
                    current.Value.RemoveFrontMarble(next.CurrentPlayer);
                    next.DoublesCount = 0;

                    next.NextPlayer = board.NextPlayer(next.CurrentPlayer);
                }
            }
            else
            {
                next.DoublesCount = 0;
            }

            return(next);
        }
Beispiel #2
0
    public void CreatePosition(PositionNode parent, Position positionToCreate, string parentPositionName)
    {
        PositionNode newNode = new PositionNode();

        newNode.Position = positionToCreate;
        if (Root == null)
        {
            Root = newNode;
            return;
        }

        if (parent == null)
        {
            return;
        }

        if (parent.Position.Name == parentPositionName)
        {
            if (parent.Left == null)
            {
                parent.Left = newNode;
                return;
            }
            parent.Right = newNode;
            return;
        }

        CreatePosition(parent.Left, positionToCreate, parentPositionName);
        CreatePosition(parent.Right, positionToCreate, parentPositionName);
    }
Beispiel #3
0
    public float Addsalaries(PositionNode from)
    {
        if (from == null)
        {
            return(0);
        }

        return(from.Position.Salary + Addsalaries(from.Left) + Addsalaries(from.Right));
    }
Beispiel #4
0
        /// <summary>
        /// Creates a new search
        /// </summary>
        /// <param name="board">Board</param>
        /// <param name="node">Current node</param>
        /// <param name="rootPlayer">Root player</param>
        /// <param name="currentPlayer">Current player</param>
        public Search(Board board, PositionNode node, sbyte rootPlayer, sbyte currentPlayer)
        {
            this.board = board;

            RootPlayer    = rootPlayer;
            CurrentPlayer = currentPlayer;

            Node = node;

            DoublesCount = 0;
        }
Beispiel #5
0
    public void PrintTree(PositionNode from)
    {
        if (from == null)
        {
            return;
        }


        Console.WriteLine($"{from.Position.Name} : ${from.Position.Salary}");
        PrintTree(from.Left);
        PrintTree(from.Right);
    }
 private void AssertPosition(string expectedFile, int expectedPosition, PositionNode was)
 {
     Assert.AreEqual(expectedFile + ":" + expectedPosition, was != null ? was.file.path + ":" + was.position : "null",
                     _executor.GetDebugText());
 }
Beispiel #7
0
 private void Update(PositionNode node, float time)
 {
 }