Ejemplo n.º 1
0
        /// <summary>
        /// ファイルの容量が大きくなったので、分割するぜ☆(^~^)
        /// 低速にはなるが、たくさん記憶するためのものだぜ☆
        /// </summary>
        /// <returns>分けた残りの定跡</returns>
        public void Bunkatu(out Seiseki[] out_bunkatu, out string[] out_bunkatupartNames)
        {
            out_bunkatupartNames = new string[] { "(P1)", "(P2)" };
            Seiseki seP2 = new Seiseki();

            // 削除するキー
            List <ulong> removeKeys = new List <ulong>();

            foreach (KeyValuePair <ulong, SeisekiKyokumen> seKy in this.KyItems)
            {
                var(exists1, phase1) = seKy.Value.CurrentOptionalPhase.Match;
                if (exists1 && phase1 == Phase.White)
                {
                    removeKeys.Add(seKy.Key);

                    foreach (KeyValuePair <Move, SeisekiMove> seSs in seKy.Value.SsItems)
                    {
                        seP2.AddMove(
                            seKy.Value.Fen,
                            seKy.Key,
                            seKy.Value.CurrentOptionalPhase,
                            seSs.Key,
                            seSs.Value.Version,
                            seSs.Value.Kati,
                            seSs.Value.Hikiwake,
                            seSs.Value.Make
                            );
                    }
                }
            }

            foreach (ulong key in removeKeys)
            {
                this.KyItems.Remove(key);
            }

            out_bunkatu = new Seiseki[] { this,//[0]はthisにしろだぜ☆(^▽^)
                                          seP2 };
        }