Пример #1
0
        private void genJumps(Gameboard gb, Fairway fw)
        {
            int      x, y;
            TreeNode root = fw.Queen ? genQueJumpTree(gb, fw) : genWalJumpTree(gb, fw);

            fw.Ranks = new List <int>();
            fw.Dests = new List <string>();
            fw.Overs = new List <string>();
            List <string> routes = root.allRoutes(root);

            foreach (var route in routes)
            {
                var r = new List <string>(route.Split('-'));
                r.RemoveAll(c => c.Equals(""));
                int    rank = 0;
                string dest = "";
                string over = "";
                for (int i = 0; i < r.Count; i += 2)
                {
                    x     = Convert.ToInt32(r[i].Substring(1)) - 1;
                    y     = Convert.ToInt32(r[i][0]) - 'A';
                    rank += gb.Board[x, y].Queen ? 3 : 2;
                    if (over == "")
                    {
                        over = r[i];
                    }
                    else
                    {
                        over = over + "-" + r[i];
                    }

                    if (dest == "")
                    {
                        dest = r[i + 1];
                    }
                    else
                    {
                        dest = dest + "-" + r[i + 1];
                    }
                }
                if (rank > 0 && dest != "" && over != "")
                {
                    fw.Ranks.Add(rank);
                    fw.Dests.Add(dest);
                    fw.Overs.Add(over);
                }
            }
            fw.Jump = fw.Ranks.Count > 0 ? true : false;
        }