private void FillTree(ChipNode chipNode, int level) { if (level >= Deep) { return; } BoardService boardService = new BoardService(); boardService.InitBoard(new Board(chipNode.Board)); boardService.FlipChips(new Chip(chipNode.Chip), chipNode.Chip.OwnerId); List <Chip> availableChips = boardService.GetAvailableSteps(Players. Where(player => player.Id != chipNode.Chip.OwnerId). Select(player => player.Id).FirstOrDefault()); if (availableChips.Count == 0) { return; } foreach (Chip chip in availableChips) { ChipNode nextChipNode = new ChipNode(new Board(boardService.Board), new Chip(chip), level); chipNode.NextChips.Add(nextChipNode); FillTree(nextChipNode, level + 1); nextChipNode.SetCoefficient(); } }
private void FillChipNextList(ChipNode chipNode, List <Chip> nextChips) { Level++; foreach (Chip chip in nextChips) { chipNode.NextChips.Add(new ChipNode(new Board(chipNode.Board), chip, Level)); } }
/// <summary> /// Method that fill tree. /// </summary> /// <param name="chipNode">Root node.</param> public void FillTree(ChipNode chipNode) { Level++; foreach (ChipNode chip in chipNode.NextChips) { FillTree(chip, Level); chip.SetCoefficient(); } chipNode.SetCoefficient(); }