示例#1
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 元位置。
        /// ************************************************************************************************************************
        /// </summary>
        /// <returns></returns>
        public static IMove Src(IMove move)
        {
            RO_Starbeam result;


            RO_Star srcKoma = Util_Starlightable.AsKoma(move.LongTimeAgo);
            RO_Star dstKoma = Util_Starlightable.AsKoma(move.Now);


            result = new RO_Starbeam(

                new RO_Star(
                    dstKoma.Pside,
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nError), // ソースのソースは未定義。
                    PieceType.None
                    ),

                // ソースの目的地はソース
                new RO_Star(
                    dstKoma.Pside,
                    srcKoma.Masu,
                    srcKoma.Komasyurui
                    ),

                PieceType.None
                );

            return(result);
        }
示例#2
0
        /// <summary>
        /// 動かす駒を移動先へ。
        /// </summary>
        /// <param name="figMovedKoma"></param>
        /// <param name="move">棋譜に記録するために「指す前/指した後」を含めた手。</param>
        /// <param name="obsoluted_kifu_mutable"></param>
        /// <param name="isMakimodosi"></param>
        private static void Do24_UgokasuKoma_IdoSakiHe(
            out Finger figMovedKoma,
            IMove move,
            Playerside kaisi_tebanside,
            SkyConst kaisi_Sky,
            string hint
            ,
            [CallerMemberName] string memberName    = "",
            [CallerFilePath] string sourceFilePath  = "",
            [CallerLineNumber] int sourceLineNumber = 0
            )
        {
            figMovedKoma = Fingers.Error_1;

            //------------------------------------------------------------
            // 選択  :  動かす駒
            //------------------------------------------------------------
            // 進むとき
            //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

            //Debug.Assert(null != move, "Sasu24_UgokasuKoma_IdoSakiHe: 指し手がヌルでした。");
            if (Util_Sky_BoolQuery.IsDaAction(move))// 多分、ここで move がヌルになるエラーがある☆
            {
                //----------
                // 駒台から “打”
                //----------
                RO_Star srcKoma = Util_Starlightable.AsKoma(move.LongTimeAgo);
                RO_Star dstKoma = Util_Starlightable.AsKoma(move.Now);

                // FIXME: 駒台の、どの駒を拾うか?
                figMovedKoma = Util_Sky_FingerQuery.InOkibaSyuruiNowIgnoreCase(
                    kaisi_Sky,
                    Conv_SyElement.ToOkiba(srcKoma.Masu),
                    Util_Komahaiyaku184.Syurui(dstKoma.Haiyaku)
                    );
                Debug.Assert(figMovedKoma != Fingers.Error_1, "駒を動かせなかった?14");
            }
            else
            {
                //----------
                // 将棋盤から
                //----------

                RO_Star srcKoma = Util_Starlightable.AsKoma(move.LongTimeAgo);
                Debug.Assert(!Masu_Honshogi.IsErrorBasho(srcKoma.Masu), "srcKoma.Masuエラー。15");
                RO_Star dstKoma = Util_Starlightable.AsKoma(move.Now);

                figMovedKoma = Util_Sky_FingerQuery.InShogibanMasuNow(
                    kaisi_Sky,
                    dstKoma.Pside,
                    Util_Masu10.OkibaSujiDanToMasu(
                        Conv_SyElement.ToOkiba(Masu_Honshogi.Masus_All[Conv_SyElement.ToMasuNumber(dstKoma.Masu)]),
                        Conv_SyElement.ToMasuNumber(srcKoma.Masu)
                        )
                    );
                Debug.Assert(figMovedKoma != Fingers.Error_1, "駒を動かせなかった?13");
            }
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="src"></param>
        /// <param name="finger1">指した駒、指されていた駒</param>
        /// <param name="light1"></param>
        /// <param name="finger2">取った駒、取っていた駒</param>
        /// <param name="light2"></param>
        /// <returns></returns>
        public static SkyConst NewInstance_OverwriteOrAdd_Light(Sky src, int temezumi_orMinus1, Finger finger1, IMoveHalf light1, Finger finger2, IMoveHalf light2)
        {
            SkyConst result = new SkyConst(src, false, temezumi_orMinus1, new Finger[] { finger1, finger2 }, new IMoveHalf[] { light1, light2 },
                                           // 手得計算
                                           PieceType.None, 0, Masu_Honshogi.Query_Basho(Masu_Honshogi.nError)
                                           );

            return(result);
        }
示例#4
0
        public static SkyConst NewInstance_ReversePside(Sky src, int temezumi_orMinus1)
        {
            SkyConst result = new SkyConst(src, true, temezumi_orMinus1, new Finger[] { Fingers.Error_1 }, new IMoveHalf[] { null },
                                           // 手得計算
                                           PieceType.None, 0, Masu_Honshogi.Query_Basho(Masu_Honshogi.nError)
                                           );

            return(result);
        }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="okiba"></param>
        /// <param name="suji"></param>
        /// <param name="dan"></param>
        /// <returns></returns>
        public static SyElement OkibaSujiDanToMasu(Okiba okiba, int suji, int dan)
        {
            int masuHandle = Util_Masu10.Handle_OkibaSujiDanToMasu(okiba, suji, dan);


            SyElement masu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError);//範囲外が指定されることもあります。

            if (Conv_MasuHandle.Yuko(masuHandle))
            {
                masu = Masu_Honshogi.Masus_All[masuHandle];
            }


            return(masu);
        }
示例#6
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 指定のマスにあるスプライトを返します。(本将棋用)
        /// ************************************************************************************************************************
        /// </summary>
        /// <param name="masu">マス番号</param>
        /// <param name="logTag">ログ名</param>
        /// <returns>スプライト番号。なければエラー番号。</returns>
        public static Fingers InMasuNow(SkyConst src_Sky, SyElement masu)
        {
            Fingers found = new Fingers();

            foreach (Finger finger in Finger_Honshogi.Items_KomaOnly)
            {
                RO_Star koma = Util_Koma.FromFinger(src_Sky, finger);

                if (Masu_Honshogi.Basho_Equals(koma.Masu, masu))
                {
                    found.Add(finger);
                }
            }

            return(found);
        }
示例#7
0
        public static SyElement ToMasu(int masuHandle)
        {
            SyElement masu;

            if (
                !Conv_MasuHandle.Yuko(masuHandle)
                )
            {
                masu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError);
            }
            else
            {
                masu = Masu_Honshogi.Masus_All[masuHandle];
            }

            return(masu);
        }
示例#8
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 駒台の空いている升を返します。
        /// ************************************************************************************************************************
        /// </summary>
        /// <param name="okiba">先手駒台、または後手駒台</param>
        /// <param name="uc_Main">メインパネル</param>
        /// <returns>置ける場所。無ければヌル。</returns>
        public static SyElement GetKomadaiKomabukuroSpace(Okiba okiba, SkyConst src_Sky)
        {
            SyElement akiMasu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError);

            // 先手駒台または後手駒台の、各マスの駒がある場所を調べます。
            bool[] exists = new bool[Util_Masu10.KOMADAI_KOMABUKURO_SPACE_LENGTH];//駒台スペースは40マスです。


            src_Sky.Foreach_Starlights((Finger finger, IMoveHalf komaP, ref bool toBreak) =>
            {
                RO_Star koma = Util_Starlightable.AsKoma(komaP.Now);

                if (Conv_SyElement.ToOkiba(koma.Masu) == okiba)
                {
                    exists[
                        Conv_SyElement.ToMasuNumber(koma.Masu) - Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(okiba))
                    ] = true;
                }
            });


            //駒台スペースは40マスです。
            for (int i = 0; i < Util_Masu10.KOMADAI_KOMABUKURO_SPACE_LENGTH; i++)
            {
                if (!exists[i])
                {
                    akiMasu = Masu_Honshogi.Masus_All[i + Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(okiba))];
                    goto gt_EndMethod;
                }
            }

gt_EndMethod:

            //Logger.Trace($"ゲット駒台駒袋スペース={akiMasu}");

            return(akiMasu);
        }
示例#9
0
        /// <summary>
        /// ロードした内容を確認するときに使います。
        /// </summary>
        /// <returns></returns>
        public static string LogString()
        {
            StringBuilder sb = new StringBuilder();

            foreach (KeyValuePair <Komahaiyaku185, Dictionary <int, Komahaiyaku185> > entry1 in Array_ForcePromotion.HaiyakuMap)
            {
                sb.Append(entry1.Key);
                sb.Append(": ");

                foreach (KeyValuePair <int, Komahaiyaku185> entry2 in entry1.Value)
                {
                    sb.Append(
                        Util_Masu10.ToSujiKanji(Masu_Honshogi.Query_Basho(entry2.Key))
                        );
                    sb.Append(".");
                    sb.Append(entry2.Value);
                    sb.Append(" ");
                }

                sb.AppendLine();
            }

            return(sb.ToString());
        }
示例#10
0
        public static New_Basho Query_Basho(int masuNumber)
        {
            ulong bitfield = BashoImpl.ToBitfield(masuNumber);

            return(Masu_Honshogi.Query_Basho(bitfield));
        }
示例#11
0
        /// <summary>
        /// 平手初期局面、1P(盤の下側)。
        /// </summary>
        /// <returns></returns>
        public static TedokuHistory New_HirateSyokikyokumen_1P()
        {
            TedokuHistory result = new TedokuHistoryConst(
                new List <SyElement>[] {//歩
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban17_1七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban27_2七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban37_3七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban47_4七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban57_5七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban67_6七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban77_7七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban87_8七)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban97_9七)
                },
            },
                new List <SyElement>[] {//香
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban19_1九)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban99_9九)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//桂
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban29_2九)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban89_8九)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//銀
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban39_3九)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban79_7九)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//金
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban49_4九)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban69_6九)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement> {//玉
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban59_5九)
            },
                new List <SyElement>[] {//飛
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban28_2八)
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//角
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban88_8八)
                },
                new List <SyElement> {
                },
            }
                );

            return(result);
        }
示例#12
0
        /// <summary>
        /// 平手初期局面、2P(盤の上側)。
        /// </summary>
        /// <returns></returns>
        public static TedokuHistory New_HirateSyokikyokumen_2P()
        {
            TedokuHistory result = new TedokuHistoryConst(
                new List <SyElement>[] {//歩
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban13_1三)
                },                                                                           //1三
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban23_2三)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban33_3三)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban43_4三)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban53_5三)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban63_6三)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban73_7三)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban83_8三)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban93_9三)
                },
            },
                new List <SyElement>[] {//香
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban91_9一)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//桂
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban21_2一)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban81_8一)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//銀
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban31_3一)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban71_7一)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//金
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban41_4一)
                },
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban61_6一)
                },
                new List <SyElement> {
                },
                new List <SyElement> {
                },
            },
                new List <SyElement> {//玉
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban51_5一)
            },
                new List <SyElement>[] {//飛
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban82_8二)
                },
                new List <SyElement> {
                },
            },
                new List <SyElement>[] {//角
                new List <SyElement> {
                    Masu_Honshogi.Query_Basho(Masu_Honshogi.nban22_2二)
                },
                new List <SyElement> {
                },
            }
                );

            return(result);
        }
示例#13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filepath1"></param>
        /// <returns></returns>
        public static bool Load(string filepath1)
        {
            bool successful = false;

            string filepath2 = Path.Combine(Application.StartupPath, filepath1);


            List <List <string> > rows = null;

            if (!File.Exists(filepath2))
            {
                MessageBox.Show($"ファイルがありません。\nfilepath2=[{filepath2}]", "情報");
                rows = null;
                goto gt_EndMethod;
            }

            rows = Util_Csv.ReadCsv(filepath2);



            // 最初の1行は削除。
            rows.RemoveRange(0, 1);



            Michi187Array.Items.Clear();

            // 構文解析は大雑把です。
            // (1)空セルは無視します。
            // (2)「@DEFINE」セルが処理開始の合図です。
            // (3)次のセルには集合の名前です。「味方陣」「平野部」「敵陣」のいずれかです。
            // (4)次のセルは「=」です。
            // (5)次のセルは「{」です。
            // (6)次に「}」セルが出てくるまで、符号のセルが連続します。「1九」「1八」など。
            // (7)「}」セルで、@DEFINEの処理は終了です。
            foreach (List <string> row in rows)
            {
                // 2列目は、道名。
                SySet <SyElement> michi187  = new SySet_Ordered <SyElement>(row[1].Trim());
                SySet <SyElement> michiPart = null;

                // 各行の先頭1列目(連番)と2列目(道名)は削除。
                row.RemoveRange(0, 2);

                bool isPart_Define        = false; //@DEFINEパート
                bool isPart_Define_Member = false; //符号パート

                foreach (string cell1 in row)
                {
                    string cell = cell1.Trim();

                    if (cell == "")
                    {
                        goto gt_Next1;
                    }

                    if (isPart_Define)
                    {
                        if (cell == "=")
                        {
                            goto gt_Next1;
                        }

                        if (cell == "{")
                        {
                            isPart_Define_Member = true;
                            goto gt_Next1;
                        }

                        if (cell == "}")
                        {
                            isPart_Define_Member = false;
                            isPart_Define        = false;
                            goto gt_Next1;
                        }

                        if (isPart_Define_Member)
                        {
                            // 「1一」を「1」に変換します。
                            SyElement masu81 = Masu_Honshogi.Query_Basho(Conv_Sy.Query_Bitfield(cell));
                            michiPart.AddElement(masu81);
                        }
                        else
                        {
                            switch (cell)
                            {
                            case "味方陣": michiPart = new SySet_Ordered <SyElement>("味方陣"); michi187.AddSupersets(michiPart); goto gt_Next1;

                            case "平野部": michiPart = new SySet_Ordered <SyElement>("平野部"); michi187.AddSupersets(michiPart); goto gt_Next1;

                            case "敵陣": michiPart = new SySet_Ordered <SyElement>("敵陣"); michi187.AddSupersets(michiPart); goto gt_Next1;

                            default: throw new Exception($"未定義のキーワードです。[{cell}]");
                            }
                        }
                    }
                    else
                    {
                        if (cell == "@DEFINE")
                        {
                            isPart_Define = true;
                            goto gt_Next1;
                        }
                    }

gt_Next1:
                    ;
                }

                Michi187Array.Items.Add(michi187);
            }

            successful = true;

gt_EndMethod:
            return(successful);
        }
示例#14
0
        /// <summary>
        /// 駒を取る動き。
        /// </summary>
        private static void Do61_KomaToru(
            IMoveHalf dst,
            SkyConst susunda_Sky_orNull_before,//駒を取られたとき、局面を変更します。
            out Finger out_figFoodKoma,
            out RO_Star out_food_koma,
            out Playerside pside,
            out SyElement akiMasu
            )
        {
            RO_Star dstKoma = Util_Starlightable.AsKoma(dst.Now);

            //----------
            // 将棋盤上のその場所に駒はあるか
            //----------
            out_figFoodKoma = Util_Sky_FingersQuery.InMasuNow(susunda_Sky_orNull_before, dstKoma.Masu).ToFirst();//盤上


            if (Fingers.Error_1 != out_figFoodKoma)
            {
                //>>>>> 指した先に駒があったなら

                //
                // 取られる駒
                //
                out_food_koma = Util_Starlightable.AsKoma(susunda_Sky_orNull_before.StarlightIndexOf(out_figFoodKoma).Now);
#if DEBUG
                Logger.Trace($"駒取った={out_food_koma.Komasyurui}{Environment.NewLine}");
#endif
                //
                // 取られる駒は、駒置き場の空きマスに移動させます。
                //
                Okiba okiba;
                switch (dstKoma.Pside)
                {
                case Playerside.P1:
                {
                    okiba = Okiba.Sente_Komadai;
                    pside = Playerside.P1;
                }
                break;

                case Playerside.P2:
                {
                    okiba = Okiba.Gote_Komadai;
                    pside = Playerside.P2;
                }
                break;

                default:
                {
                    //>>>>> エラー: 先後がおかしいです。
                    throw new Exception($@"エラー: 先後がおかしいです。
dst.Pside={dstKoma.Pside}");
                }
                }

                //
                // 駒台に駒を置く動き
                //
                {
                    // 駒台の空きスペース
                    akiMasu = Util_IttesasuRoutine.GetKomadaiKomabukuroSpace(okiba, susunda_Sky_orNull_before);


                    if (Masu_Honshogi.IsErrorBasho(akiMasu))
                    {
                        //>>>>> エラー: 駒台に空きスペースがありませんでした。
                        throw new Exception($@"エラー: 駒台に空きスペースがありませんでした。
駒台={Okiba.Gote_Komadai}");
                    }
                    //>>>>> 駒台に空きスペースがありました。
                }
            }
            else
            {
                out_food_koma = null;
                pside         = Playerside.Empty;
                akiMasu       = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError);
            }
        }
示例#15
0
        public static SkyConst New_Komabukuro(Playerside kaisiPside)
        {
            SkyBuffer buf_Sky = new SkyBuffer(kaisiPside,
                                              0// 初期局面扱いで、 0手目済みとしておく。
                                              );

            buf_Sky.Clear();

            Finger finger = 0;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(/*finger,*/ new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01), PieceType.K)));// Kh185.n051_底奇王
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro02), PieceType.K)));// Kh185.n051_底奇王
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro03), PieceType.R)));// Kh185.n061_飛
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro04), PieceType.R)));// Kh185.n061_飛
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro05), PieceType.B)));// Kh185.n072_奇角
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro06), PieceType.B)));// Kh185.n072_奇角
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro07), PieceType.G)));// Kh185.n038_底偶金
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro08), PieceType.G)));// Kh185.n038_底偶金
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro09), PieceType.G)));// Kh185.n038_底偶金
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro10), PieceType.G)));// Kh185.n038_底偶金
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro11), PieceType.S)));// Kh185.n023_底奇銀
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro12), PieceType.S)));// Kh185.n023_底奇銀
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro13), PieceType.S)));// Kh185.n023_底奇銀
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro14), PieceType.S)));// Kh185.n023_底奇銀
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro15), PieceType.N)));// Kh185.n007_金桂
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro16), PieceType.N)));// Kh185.n007_金桂
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro17), PieceType.N)));// Kh185.n007_金桂
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro18), PieceType.N)));// Kh185.n007_金桂
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro19), PieceType.L)));// Kh185.n002_香
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro20), PieceType.L)));// Kh185.n002_香
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro21), PieceType.L)));// Kh185.n002_香
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro22), PieceType.L)));// Kh185.n002_香
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro23), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro24), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro25), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro26), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro27), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro28), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro29), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro30), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro31), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro32), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro33), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro34), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro35), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro36), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro37), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro38), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro39), PieceType.P)));// Kh185.n001_歩
            finger++;

            buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro40), PieceType.P)));// Kh185.n001_歩
            finger++;

            // 以上、全40駒。
            Debug.Assert(buf_Sky.Starlights.Count == 40);

            return(SkyConst.NewInstance(buf_Sky,
                                        -1//buf_skyで設定済みなのでそのまま。
                                        ));
        }
示例#16
0
        static Masu_Honshogi()
        {
            Masu_Honshogi.bitfieldBashoDictionary = new Dictionary <ulong, New_Basho>();

            //盤上1筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban11_1一,
                    Masu_Honshogi.nban12_1二,
                    Masu_Honshogi.nban13_1三,
                    Masu_Honshogi.nban14_1四,
                    Masu_Honshogi.nban15_1五,
                    Masu_Honshogi.nban16_1六,
                    Masu_Honshogi.nban17_1七,
                    Masu_Honshogi.nban18_1八,
                    Masu_Honshogi.nban19_1九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[1].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上2筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban21_2一,
                    Masu_Honshogi.nban22_2二,
                    Masu_Honshogi.nban23_2三,
                    Masu_Honshogi.nban24_2四,
                    Masu_Honshogi.nban25_2五,
                    Masu_Honshogi.nban26_2六,
                    Masu_Honshogi.nban27_2七,
                    Masu_Honshogi.nban28_2八,
                    Masu_Honshogi.nban29_2九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[2].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上3筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban31_3一,
                    Masu_Honshogi.nban32_3二,
                    Masu_Honshogi.nban33_3三,
                    Masu_Honshogi.nban34_3四,
                    Masu_Honshogi.nban35_3五,
                    Masu_Honshogi.nban36_3六,
                    Masu_Honshogi.nban37_3七,
                    Masu_Honshogi.nban38_3八,
                    Masu_Honshogi.nban39_3九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[3].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上4筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban41_4一,
                    Masu_Honshogi.nban42_4二,
                    Masu_Honshogi.nban43_4三,
                    Masu_Honshogi.nban44_4四,
                    Masu_Honshogi.nban45_4五,
                    Masu_Honshogi.nban46_4六,
                    Masu_Honshogi.nban47_4七,
                    Masu_Honshogi.nban48_4八,
                    Masu_Honshogi.nban49_4九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[4].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上5筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban51_5一,
                    Masu_Honshogi.nban52_5二,
                    Masu_Honshogi.nban53_5三,
                    Masu_Honshogi.nban54_5四,
                    Masu_Honshogi.nban55_5五,
                    Masu_Honshogi.nban56_5六,
                    Masu_Honshogi.nban57_5七,
                    Masu_Honshogi.nban58_5八,
                    Masu_Honshogi.nban59_5九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[5].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上6筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban61_6一,
                    Masu_Honshogi.nban62_6二,
                    Masu_Honshogi.nban63_6三,
                    Masu_Honshogi.nban64_6四,
                    Masu_Honshogi.nban65_6五,
                    Masu_Honshogi.nban66_6六,
                    Masu_Honshogi.nban67_6七,
                    Masu_Honshogi.nban68_6八,
                    Masu_Honshogi.nban69_6九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[6].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上7筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban71_7一,
                    Masu_Honshogi.nban72_7二,
                    Masu_Honshogi.nban73_7三,
                    Masu_Honshogi.nban74_7四,
                    Masu_Honshogi.nban75_7五,
                    Masu_Honshogi.nban76_7六,
                    Masu_Honshogi.nban77_7七,
                    Masu_Honshogi.nban78_7八,
                    Masu_Honshogi.nban79_7九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[7].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上8筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban81_8一,
                    Masu_Honshogi.nban82_8二,
                    Masu_Honshogi.nban83_8三,
                    Masu_Honshogi.nban84_8四,
                    Masu_Honshogi.nban85_8五,
                    Masu_Honshogi.nban86_8六,
                    Masu_Honshogi.nban87_8七,
                    Masu_Honshogi.nban88_8八,
                    Masu_Honshogi.nban89_8九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[8].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }
            //盤上9筋
            {
                int[] array = new int[] {
                    Masu_Honshogi.nban91_9一,
                    Masu_Honshogi.nban92_9二,
                    Masu_Honshogi.nban93_9三,
                    Masu_Honshogi.nban94_9四,
                    Masu_Honshogi.nban95_9五,
                    Masu_Honshogi.nban96_9六,
                    Masu_Honshogi.nban97_9七,
                    Masu_Honshogi.nban98_9八,
                    Masu_Honshogi.nban99_9九,
                };
                foreach (int masuNumber in array)
                {
                    BAN_SUJIS[9].AddElement(Masu_Honshogi.Query_Basho(masuNumber));
                }
            }

            Masu_Honshogi.masus_All = new SyElement[] {
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 0),//1一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 1),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 2),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 3),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 4),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 5),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 6),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 7),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 8), //1九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 9), //[9]2一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 10),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 11),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 12),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 13),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 14),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 15),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 16),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 17), //2九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 18), //[18]3一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 19),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 20),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 21),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 22),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 23),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 24),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 25),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 26), //3九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 27), //[27]4一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 28),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 29),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 30),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 31),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 32),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 33),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 34),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 35), //4九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 36), //[36]5一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 37),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 38),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 39),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 40),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 41),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 42),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 43),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 44), //5九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 45), //[45]6一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 46),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 47),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 48),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 49),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 50),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 51),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 52),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 53), //6九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 54), //[54]7一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 55),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 56),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 57),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 58),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 59),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 60),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 61),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 62), //7九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 63), //[63]8一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 64),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 65),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 66),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 67),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 68),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 69),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 70),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 71), //8九

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 72), //[72]9一
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 73),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 74),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 75),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 76),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 77),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 78),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 79),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 80),//[80]9九

                //先手駒台
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 0),//[81]
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 1),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 2),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 3),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 4),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 5),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 6),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 7),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 8),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 9),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 10),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 11),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 12),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 13),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 14),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 15),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 16),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 17),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 18),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 19),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 20),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 21),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 22),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 23),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 24),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 25),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 26),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 27),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 28),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 29),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 30),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 31),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 32),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 33),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 34),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 35),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 36),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 37),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 38),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 39),

                //後手駒台
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 0),//[121]
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 1),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 2),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 3),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 4),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 5),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 6),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 7),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 8),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 9),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 10),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 11),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 12),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 13),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 14),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 15),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 16),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 17),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 18),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 19),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 20),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 21),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 22),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 23),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 24),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 25),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 26),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 27),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 28),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 29),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 30),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 31),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 32),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 33),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 34),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 35),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 36),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 37),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 38),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 39),

                //駒袋
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 0),//[161] fukuro01
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 1),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 2),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 3),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 4),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 5),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 6),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 7),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 8),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 9),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 10),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 11),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 12),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 13),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 14),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 15),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 16),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 17),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 18),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 19),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 20),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 21),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 22),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 23),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 24),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 25),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 26),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 27),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 28),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 29),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 30),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 31),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 32),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 33),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 34),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 35),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 36),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 37),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 38),
                Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 39),

                Masu_Honshogi.Query_Basho(Masu_Honshogi.nError)//[201]
            };

            Masu_Honshogi.items_81 = new SyElement[81];
            for (int i = 0; i < 81; i++)
            {
                Masu_Honshogi.items_81[i] = Masu_Honshogi.masus_All[i];
            }
        }
示例#17
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 駒を、平手の初期配置に並べます。
        /// ************************************************************************************************************************
        /// </summary>
        public static SkyConst New_Hirate(Playerside kaisiPside)
        {
            SkyBuffer dst_Sky = new SkyBuffer(kaisiPside,
                                              0//初期局面は 0手目済み
                                              );
            Finger figKoma;

            figKoma = Finger_Honshogi.SenteOh;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban59_5九), PieceType.K))); //先手王
            figKoma = (int)Finger_Honshogi.GoteOh;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban51_5一), PieceType.K))); //後手王

            figKoma = (int)Finger_Honshogi.Hi1;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban28_2八), PieceType.R)));//飛
            figKoma = (int)Finger_Honshogi.Hi2;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban82_8二), PieceType.R)));

            figKoma = (int)Finger_Honshogi.Kaku1;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban88_8八), PieceType.B)));//角
            figKoma = (int)Finger_Honshogi.Kaku2;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban22_2二), PieceType.B)));

            figKoma = (int)Finger_Honshogi.Kin1;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban49_4九), PieceType.G)));//金
            figKoma = (int)Finger_Honshogi.Kin2;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban69_6九), PieceType.G)));
            figKoma = (int)Finger_Honshogi.Kin3;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban41_4一), PieceType.G)));
            figKoma = (int)Finger_Honshogi.Kin4;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban61_6一), PieceType.G)));

            figKoma = (int)Finger_Honshogi.Gin1;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban39_3九), PieceType.S)));//銀
            figKoma = (int)Finger_Honshogi.Gin2;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban79_7九), PieceType.S)));
            figKoma = (int)Finger_Honshogi.Gin3;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban31_3一), PieceType.S)));
            figKoma = (int)Finger_Honshogi.Gin4;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban71_7一), PieceType.S)));

            figKoma = (int)Finger_Honshogi.Kei1;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban29_2九), PieceType.N)));//桂
            figKoma = (int)Finger_Honshogi.Kei2;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban89_8九), PieceType.N)));
            figKoma = (int)Finger_Honshogi.Kei3;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban21_2一), PieceType.N)));
            figKoma = (int)Finger_Honshogi.Kei4;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban81_8一), PieceType.N)));

            figKoma = (int)Finger_Honshogi.Kyo1;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban19_1九), PieceType.L)));//香
            figKoma = (int)Finger_Honshogi.Kyo2;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban99_9九), PieceType.L)));
            figKoma = (int)Finger_Honshogi.Kyo3;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一), PieceType.L)));
            figKoma = (int)Finger_Honshogi.Kyo4;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban91_9一), PieceType.L)));

            figKoma = (int)Finger_Honshogi.Fu1;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban17_1七), PieceType.P)));//歩
            figKoma = (int)Finger_Honshogi.Fu2;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban27_2七), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu3;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban37_3七), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu4;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban47_4七), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu5;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban57_5七), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu6;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban67_6七), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu7;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban77_7七), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu8;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban87_8七), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu9;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban97_9七), PieceType.P)));

            figKoma = (int)Finger_Honshogi.Fu10;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban13_1三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu11;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban23_2三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu12;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban33_3三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu13;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban43_4三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu14;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban53_5三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu15;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban63_6三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu16;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban73_7三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu17;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban83_8三), PieceType.P)));
            figKoma = (int)Finger_Honshogi.Fu18;
            dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban93_9三), PieceType.P)));


            //LarabeLogger.GetInstance().WriteAddMemo(logTag, "平手局面にセットしたぜ☆");

            return(SkyConst.NewInstance(dst_Sky,
                                        -1//dst_skyでもう変えてあるのでそのまま。
                                        ));
        }
示例#18
0
        /// <summary>
        /// 一手指します。
        /// </summary>
        /// <param name="ittesasuArg"></param>
        /// <param name="ittesasu_mutable"></param>
        /// <param name="ittesasuResult"></param>
        /// <param name="memberName"></param>
        /// <param name="sourceFilePath"></param>
        /// <param name="sourceLineNumber"></param>
        public static void Before1(
            IttesasuArg ittesasuArg,
            out IttesasuResult ittesasuResult,
            string hint
            ,
            [CallerMemberName] string memberName    = "",
            [CallerFilePath] string sourceFilePath  = "",
            [CallerLineNumber] int sourceLineNumber = 0
            )
        {
            //------------------------------
            // 用意
            //------------------------------
            ittesasuResult = new IttesasuResultImpl(Fingers.Error_1, Fingers.Error_1, null, PieceType.None, null);
            SkyConst kaisi_Sky = ittesasuArg.KaisiKyokumen.KyokumenConst; // 一手指し開始局面(不変)
            Node <IMove, KyokumenWrapper> editNodeRef;                    // 編集対象ノード(巻き戻し時と、進む時で異なる)

            //------------------------------
            // 符号(局面)の追加
            //------------------------------
            {
                //進むときは、必ずノードの追加と、カレントの移動がある。

                //現局面ノードのクローンを作成します。
                editNodeRef = new KifuNodeImpl(ittesasuArg.KorekaranoMove, new KyokumenWrapper(
                                                   SkyConst.NewInstance_ReversePside(kaisi_Sky, ittesasuArg.KorekaranoTemezumi_orMinus1))
                                               );
                ittesasuResult.Susunda_Sky_orNull = editNodeRef.Value.KyokumenConst;
            }

            //------------------------------
            // 動かす駒を移動先へ。
            //------------------------------
            Debug.Assert(null != ittesasuArg.KorekaranoMove, "これからの指し手がヌルでした。");
            Finger figMovedKoma;

            Util_IttesasuRoutine.Do24_UgokasuKoma_IdoSakiHe(
                out figMovedKoma,
                ittesasuArg.KorekaranoMove,
                ittesasuArg.KaisiTebanside,
                kaisi_Sky,
                hint
                );
            ittesasuResult.FigMovedKoma = figMovedKoma; //動かした駒更新
            Debug.Assert(Fingers.Error_1 != ittesasuResult.FigMovedKoma, "動かした駒がない☆!?エラーだぜ☆!");

            RO_Star   korekaranoKoma = Util_Starlightable.AsKoma(ittesasuArg.KorekaranoMove.Now);
            IMoveHalf afterStar;
            {
                afterStar = Util_IttesasuRoutine.Do36_KomaOnDestinationMasu(
                    korekaranoKoma.Komasyurui,
                    ittesasuArg.KorekaranoMove,
                    ittesasuResult.Susunda_Sky_orNull
                    );
            }

            // Sky 局面データは、この関数の途中で何回か変更されます。ローカル変数に退避しておくと、同期が取れなくなります。

            //------------------------------------------------------------
            // 駒を取る
            //------------------------------------------------------------
            Finger     figFoodKoma  = Fingers.Error_1;
            RO_Star    food_koma    = null;
            Playerside food_pside   = Playerside.Empty;
            SyElement  food_akiMasu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError);

            {
                Util_IttesasuRoutine.Do61_KomaToru(
                    afterStar,
                    ittesasuResult.Susunda_Sky_orNull,
                    out figFoodKoma,
                    out food_koma,
                    out food_pside,
                    out food_akiMasu
                    );

                if (Fingers.Error_1 != figFoodKoma)
                {
                    //>>>>> 指した先に駒があったなら
                    ittesasuResult.FoodKomaSyurui = food_koma.Komasyurui;
                }
                else
                {
                    ittesasuResult.FoodKomaSyurui = PieceType.None;
                }
            }
            Debug.Assert(figMovedKoma != Fingers.Error_1, "駒を動かせなかった?1");

            if (Fingers.Error_1 != figFoodKoma)
            {
                //------------------------------------------------------------
                // 指した駒と、取った駒の移動
                //------------------------------------------------------------

                //------------------------------
                // 局面データの書き換え
                //------------------------------
                ittesasuResult.Susunda_Sky_orNull = SkyConst.NewInstance_OverwriteOrAdd_Light(
                    ittesasuResult.Susunda_Sky_orNull,
                    ittesasuArg.KorekaranoTemezumi_orMinus1,
                    //
                    // 指した駒
                    //
                    figMovedKoma, //指した駒番号
                    afterStar,    //指した駒
                                  //
                                  // 取った駒
                                  //
                    figFoodKoma,
                    new RO_Starlight(
                        new RO_Star(
                            food_pside,
                            food_akiMasu,            //駒台の空きマスへ
                            food_koma.ToNarazuCase() // 取られた駒の種類。表面を上に向ける。
                            )
                        )
                    );
            }
            else
            {
                //------------------------------------------------------------
                // 指した駒の移動
                //------------------------------------------------------------

                ittesasuResult.Susunda_Sky_orNull = SkyConst.NewInstance_OverwriteOrAdd_Light(
                    ittesasuResult.Susunda_Sky_orNull,       //駒を取って変化しているかもしれない?
                    ittesasuArg.KorekaranoTemezumi_orMinus1, // これから作る局面の、手目済み。
                                                             //
                                                             // 指した駒
                                                             //
                    figMovedKoma,
                    afterStar,
                    //
                    // 手得計算
                    //
                    korekaranoKoma.Komasyurui,
                    0,// TODO: suji or index
                    korekaranoKoma.Masu
                    );
            }
            editNodeRef.Value.SetKyokumen(ittesasuResult.Susunda_Sky_orNull);
            // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            // この時点で、必ず現局面データに差替えあり
            // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            //
            // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            // 局面データに変更があったものとして進めます。
            // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

            ittesasuResult.FigFoodKoma = figFoodKoma; //取った駒更新

            //
            // ノード
            ittesasuResult.Set_SyuryoNode_OrNull = editNodeRef;// この変数を返すのがポイント。棋譜とは別に、現局面。
        }
示例#19
0
        private void StringToObject()
        {
            this.masubetuKoma_banjo = new Dictionary <int, RO_Star>();

            // 将棋の駒40個の場所を確認します。

            this.RO_SfenStartpos.Foreach_Masu201((int masuHandle, string masuString, ref bool toBreak) =>
            {
                switch (masuString)
                {
                case "P": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.P)); break;

                case "L": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.L)); break;

                case "N": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.N)); break;

                case "S": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.S)); break;

                case "G": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.G)); break;

                case "K": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.K)); break;

                case "R": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.R)); break;

                case "B": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.B)); break;

                case "+P": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PP)); break;

                case "+L": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PL)); break;

                case "+N": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PN)); break;

                case "+S": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PS)); break;

                case "+R": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PR)); break;

                case "+B": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PB)); break;

                case "p": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.P)); break;

                case "l": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.L)); break;

                case "n": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.N)); break;

                case "s": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.S)); break;

                case "g": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.G)); break;

                case "k": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.K)); break;

                case "r": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.R)); break;

                case "b": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.B)); break;

                case "+p": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PP)); break;

                case "+l": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PL)); break;

                case "+n": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PN)); break;

                case "+s": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PS)); break;

                case "+r": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PR)); break;

                case "+b": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PB)); break;

                case "":
                    // 空っぽの升。
                    break;

                default:
                    throw new Exception($"未対応のmoji=[{masuString}]");
                }
            });

            Debug.Assert(this.masubetuKoma_banjo.Count == 40, $"将棋の駒の数が40個ではありませんでした。[{this.masubetuKoma_banjo.Count}]");
        }