Beispiel #1
0
        public static SyElement OkibaSujiDanToMasu(Okiba okiba, int masuHandle)
        {
            switch (Conv_SyElement.ToOkiba(masuHandle))
            {
            case Okiba.Sente_Komadai:
                masuHandle -= Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(Okiba.Sente_Komadai));
                break;

            case Okiba.Gote_Komadai:
                masuHandle -= Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(Okiba.Gote_Komadai));
                break;

            case Okiba.KomaBukuro:
                masuHandle -= Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(Okiba.KomaBukuro));
                break;

            case Okiba.ShogiBan:
                // ใใฎใ‚“ใพใพ
                break;

            default:
                // ใ‚จใƒฉใƒผ
                break;
            }

            masuHandle = masuHandle + Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(okiba));

            return(Conv_MasuHandle.ToMasu(masuHandle));
        }
Beispiel #2
0
        /// <summary>
        /// ๆฌกใฎ๏ผ‘ๆ‰‹ใƒ‡ใƒผใ‚ฟใ‚’ไฝœใ‚Šใพใ™(*1)
        ///
        ///         *1โ€ฆ็ฌฆๅท๏ผ‘ใ€Œโ–ฒ๏ผ–๏ผ˜้Š€ไธŠใ€ใ‚’ๅ…ƒใซใ€ใ€Œ7968ใ€ใ‚’ไฝœใ‚Šใพใ™ใ€‚
        ///
        /// ๏ผœ[ๅ†็”Ÿ]ใ€[ใ‚ณใƒž้€ใ‚Š]ใงๅ‘ผใณๅ‡บใ•ใ‚Œใพใ™๏ผž
        /// </summary>
        /// <returns></returns>
        public static void ToMove(
            string strPside,      //โ–ฒโ–ณ
            string strSuji,       //123โ€ฆ9ใ€๏ผ‘๏ผ’๏ผ“โ€ฆ๏ผ™ใ€ไธ€ไบŒไธ‰โ€ฆไน
            string strDan,        //123โ€ฆ9ใ€๏ผ‘๏ผ’๏ผ“โ€ฆ๏ผ™ใ€ไธ€ไบŒไธ‰โ€ฆไน
            string strDou,        // โ€œๅŒโ€
            string strSrcSyurui,  //(ๆญฉ|้ฆ™|ๆก‚|โ€ฆ
            string strMigiHidari, // ๅณ|ๅทฆโ€ฆ
            string strAgaruHiku,  // ไธŠ|ๅผ•
            string strNariNarazu, //ๆˆ|ไธๆˆ
            string strDaHyoji,    //ๆ‰“
            out IMove move,
            KifuTree kifu
            )
        {
            Node <IMove, KyokumenWrapper> siteiNode = kifu.CurNode;
            SkyConst src_Sky = siteiNode.Value.KyokumenConst;

            //------------------------------
            // ็ฌฆๅท็ขบๅฎš
            //------------------------------
            MigiHidari migiHidari = Conv_String268.Str_ToMigiHidari(strMigiHidari);
            AgaruHiku  agaruHiku  = Conv_String268.Str_ToAgaruHiku(strAgaruHiku); // ไธŠ|ๅผ•
            NariNarazu nariNarazu = Conv_String268.Nari_ToBool(strNariNarazu);    //ๆˆ
            DaHyoji    daHyoji    = Conv_String268.Str_ToDaHyoji(strDaHyoji);     //ๆ‰“

            PieceType srcSyurui = Conv_String268.Str_ToSyurui(strSrcSyurui);


            //------------------------------
            //
            //------------------------------
            Playerside pside = Conv_String268.Pside_ToEnum(strPside);


            SyElement dstMasu;

            if ("ๅŒ" == strDou)
            {
                // 1ๆ‰‹ๅ‰ใฎ็ญ‹ใ€ๆฎตใ‚’ๆฑ‚ใ‚ใ‚‹ใฎใซไฝฟใ„ใพใ™ใ€‚

                RO_Star koma = Util_Starlightable.AsKoma(siteiNode.Key.Now);

                dstMasu = koma.Masu;
            }
            else
            {
                dstMasu = Util_Masu10.OkibaSujiDanToMasu(
                    Okiba.ShogiBan,
                    Conv_Suji.ToInt(strSuji),
                    Conv_Suji.ToInt(strDan)
                    );
            }

            // TODO: ้ง’ๅฐใซใ‚ใ‚‹ใ‹ใ‚‚ใ—ใ‚Œใชใ„ใ€‚
            Okiba srcOkiba1 = Okiba.ShogiBan; //Okiba.FUMEI_FUGO_YOMI_CHOKUGO;// Okiba.SHOGIBAN;

            if (DaHyoji.Visible == daHyoji)
            {
                if (Playerside.P2 == pside)
                {
                    srcOkiba1 = Okiba.Gote_Komadai;
                }
                else
                {
                    srcOkiba1 = Okiba.Sente_Komadai;
                }
            }

            //
            SyElement dst1 = dstMasu;

            Finger foundKoma = Fingers.Error_1;

            //----------
            // ้ง’ๅฐใฎ้ง’ใ‚’(ๆ˜Ž็คบ็š„ใซ)ๆ‰“ใคใชใ‚‰
            //----------
            bool utsu = false;//้ง’ๅฐใฎ้ง’ใ‚’ๆ‰“ใคใชใ‚‰็œŸ

            if (DaHyoji.Visible == daHyoji)
            {
                utsu = true;
                goto gt_EndShogiban;
            }

            if (PieceType.P == srcSyurui)
            {
                #region ๆญฉ
                //************************************************************
                // ๆญฉ
                //************************************************************

                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //โ”‚  โ”‚  โ”‚  โ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚  โ”‚่‡ณโ”‚  โ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚  โ”‚๏ผฅโ”‚  โ”‚
                //โ””โ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isE = true;

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅผ•(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.R == srcSyurui)
            {
                #region ้ฃ›
                //************************************************************
                // ้ฃ›
                //************************************************************
                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //  โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A0โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚G7โ”‚G6โ”‚G5โ”‚G4โ”‚G3โ”‚G2โ”‚G1โ”‚G0โ”‚่‡ณโ”‚C0โ”‚C1โ”‚C2โ”‚C3โ”‚C4โ”‚C5โ”‚C6โ”‚C7โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E0โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ””โ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isA = true;
                bool isC = true;
                bool isE = true;
                bool isG = true;

                switch (agaruHiku)
                {
                case AgaruHiku.Yoru:
                    isA = false;
                    isE = false;
                    break;

                case AgaruHiku.Agaru:
                    isA = false;
                    isC = false;
                    isG = false;
                    break;

                case AgaruHiku.Hiku:
                    isC = false;
                    isE = false;
                    isG = false;
                    break;
                }

                switch (migiHidari)
                {
                case MigiHidari.Migi:
                    isA = false;
                    isE = false;
                    isG = false;
                    break;

                case MigiHidari.Hidari:
                    isA = false;
                    isC = false;
                    isE = false;
                    break;

                case MigiHidari.Sugu:
                    isA = false;
                    isC = false;
                    isG = false;
                    break;
                }

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isA)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปไธŠ(pside, dst1));
                }
                if (isC)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๅฐ„(pside, dst1));
                }
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๅผ•(pside, dst1));
                }
                if (isG)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆป‘(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.B == srcSyurui)
            {
                #region ่ง’
                //************************************************************
                // ่ง’
                //************************************************************
                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //  โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //  โ”‚H7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B7โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚H6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B6โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚H5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B5โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚H4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B4โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H1โ”‚  โ”‚  โ”‚  โ”‚B1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H0โ”‚  โ”‚B0โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚่‡ณโ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F0โ”‚  โ”‚D0โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F1โ”‚  โ”‚  โ”‚  โ”‚D1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚F4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D4โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚F5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D5โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚F6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D6โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚F7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D7โ”‚
                //  โ””โ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isB = true;
                bool isD = true;
                bool isF = true;
                bool isH = true;

                switch (agaruHiku)
                {
                case AgaruHiku.Yoru:
                    isB = false;
                    isD = false;
                    isF = false;
                    isH = false;
                    break;

                case AgaruHiku.Agaru:
                    isB = false;
                    isH = false;
                    break;

                case AgaruHiku.Hiku:
                    isB = false;
                    isH = false;
                    break;
                }

                switch (migiHidari)
                {
                case MigiHidari.Migi:
                    isF = false;
                    isH = false;
                    break;

                case MigiHidari.Hidari:
                    isB = false;
                    isD = false;
                    break;

                case MigiHidari.Sugu:
                    isD = false;
                    isF = false;
                    break;
                }

                SySet_Default <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isB)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆ˜‡(pside, dst1));
                }
                if (isD)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆฒˆ(pside, dst1));
                }
                if (isF)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆป้™(pside, dst1));
                }
                if (isH)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆตฎ(pside, dst1));
                }

                //----------
                // ๅ€™่ฃœใƒžใ‚น๏ผข
                //----------
                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.L == srcSyurui)
            {
                #region ้ฆ™
                //************************************************************
                // ้ฆ™
                //************************************************************
                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //  โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //  โ”‚  โ”‚่‡ณโ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E0โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E1โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E2โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E3โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E4โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E5โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E6โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚E7โ”‚  โ”‚
                //  โ””โ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isE = true;

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๅผ•(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.N == srcSyurui)
            {
                #region ๆก‚
                //************************************************************
                // ๆก‚
                //************************************************************
                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //โ”Œโ”€โ”ใ€€โ”Œโ”€โ”
                //โ”‚  โ”‚ใ€€โ”‚  โ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚ใ€€โ”‚  โ”‚  โ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚ใ€€โ”‚่‡ณโ”‚  โ”‚ๅ…ˆๆ‰‹ใ‹ใ‚‰่ฆ‹ใŸๅ›ณ
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚ใ€€โ”‚  โ”‚  โ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚๏ผชโ”‚ใ€€โ”‚๏ผฉโ”‚
                //โ””โ”€โ”˜ใ€€โ””โ”€โ”˜
                bool isI = true;
                bool isJ = true;

                switch (agaruHiku)
                {
                case AgaruHiku.Yoru:
                    isI = false;
                    isJ = false;
                    break;

                case AgaruHiku.Agaru:
                    break;

                case AgaruHiku.Hiku:
                    isI = false;
                    isJ = false;
                    break;
                }

                switch (migiHidari)
                {
                case MigiHidari.Migi:
                    isJ = false;
                    break;

                case MigiHidari.Hidari:
                    isI = false;
                    break;

                case MigiHidari.Sugu:
                    isI = false;
                    isJ = false;
                    break;
                }

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isI)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKeimatobi_ๆˆป่ทณ(pside, dst1));
                }
                if (isJ)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKeimatobi_ๆˆป้ง†(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.S == srcSyurui)
            {
                #region ้Š€
                //************************************************************
                // ้Š€
                //************************************************************
                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //โ”‚๏ผจโ”‚  โ”‚๏ผขโ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚ใ€€โ”‚่‡ณโ”‚  โ”‚ๅ…ˆๆ‰‹ใ‹ใ‚‰่ฆ‹ใŸๅ›ณ
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚๏ผฆโ”‚๏ผฅโ”‚๏ผคโ”‚
                //โ””โ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isB = true;
                bool isD = true;
                bool isE = true;
                bool isF = true;
                bool isH = true;

                switch (agaruHiku)
                {
                case AgaruHiku.Yoru:
                    isB = false;
                    isD = false;
                    isE = false;
                    isF = false;
                    isH = false;
                    break;

                case AgaruHiku.Agaru:
                    isB = false;
                    isH = false;
                    break;

                case AgaruHiku.Hiku:
                    isD = false;
                    isE = false;
                    isF = false;
                    break;
                }

                switch (migiHidari)
                {
                case MigiHidari.Migi:
                    isE = false;
                    isF = false;
                    isH = false;
                    break;

                case MigiHidari.Hidari:
                    isB = false;
                    isD = false;
                    isE = false;
                    break;

                case MigiHidari.Sugu:
                    isB = false;
                    isD = false;
                    isF = false;
                    isH = false;
                    break;
                }

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isB)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆ˜‡(pside, dst1));
                }
                if (isD)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆฒˆ(pside, dst1));
                }
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅผ•(pside, dst1));
                }
                if (isF)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆป้™(pside, dst1));
                }
                if (isH)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆตฎ(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (
                PieceType.G == srcSyurui ||
                PieceType.PP == srcSyurui ||
                PieceType.PL == srcSyurui ||
                PieceType.PN == srcSyurui ||
                PieceType.PS == srcSyurui
                )
            {
                #region โ–ณ้‡‘ใ€โ–ณใจ้‡‘ใ€โ–ณๆˆ้ฆ™ใ€โ–ณๆˆๆก‚ใ€โ–ณๆˆ้Š€
                //************************************************************
                // โ–ณ้‡‘ใ€โ–ณใจ้‡‘ใ€โ–ณๆˆ้ฆ™ใ€โ–ณๆˆๆก‚ใ€โ–ณๆˆ้Š€
                //************************************************************
                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //โ”‚  โ”‚๏ผกโ”‚  โ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚๏ผงโ”‚่‡ณโ”‚๏ผฃโ”‚ๅ…ˆๆ‰‹ใ‹ใ‚‰่ฆ‹ใŸๅ›ณ
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚๏ผฆโ”‚๏ผฅโ”‚๏ผคโ”‚
                //โ””โ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isA = true;
                bool isC = true;
                bool isD = true;
                bool isE = true;
                bool isF = true;
                bool isG = true;

                switch (agaruHiku)
                {
                case AgaruHiku.Yoru:
                    isA = false;
                    isD = false;
                    isE = false;
                    isF = false;
                    break;

                case AgaruHiku.Agaru:
                    isA = false;
                    isC = false;
                    isG = false;
                    break;

                case AgaruHiku.Hiku:
                    isC = false;
                    isD = false;
                    isE = false;
                    isF = false;
                    isG = false;
                    break;
                }

                switch (migiHidari)
                {
                case MigiHidari.Migi:
                    isA = false;
                    isE = false;
                    isF = false;
                    isG = false;
                    break;

                case MigiHidari.Hidari:
                    isA = false;
                    isC = false;
                    isD = false;
                    isE = false;
                    break;

                case MigiHidari.Sugu:
                    isA = false;
                    isC = false;
                    isD = false;
                    isF = false;
                    isG = false;
                    break;
                }

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isA)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปไธŠ(pside, dst1));
                }
                if (isC)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅฐ„(pside, dst1));
                }
                if (isD)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆฒˆ(pside, dst1));
                }
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅผ•(pside, dst1));
                }
                if (isF)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆป้™(pside, dst1));
                }
                if (isG)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆป‘(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.K == srcSyurui)
            {
                #region ็Ž‹
                //************************************************************
                // ็Ž‹
                //************************************************************

                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //โ”‚๏ผจโ”‚๏ผกโ”‚๏ผขโ”‚
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚๏ผงโ”‚่‡ณโ”‚๏ผฃโ”‚ๅ…ˆๆ‰‹ใ‹ใ‚‰่ฆ‹ใŸๅ›ณ
                //โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //โ”‚๏ผฆโ”‚๏ผฅโ”‚๏ผคโ”‚
                //โ””โ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isA = true;
                bool isB = true;
                bool isC = true;
                bool isD = true;
                bool isE = true;
                bool isF = true;
                bool isG = true;
                bool isH = true;

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isA)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปไธŠ(pside, dst1));
                }
                if (isB)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆ˜‡(pside, dst1));
                }
                if (isC)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅฐ„(pside, dst1));
                }
                if (isD)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆฒˆ(pside, dst1));
                }
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅผ•(pside, dst1));
                }
                if (isF)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆป้™(pside, dst1));
                }
                if (isG)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆป‘(pside, dst1));
                }
                if (isH)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆตฎ(pside, dst1));
                }

                // ็Ž‹ใฏ๏ผ‘ใคใงใ™ใ€‚
                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.PR == srcSyurui)
            {
                #region ็ซœ
                //************************************************************
                // ็ซœ
                //************************************************************

                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //  โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚A1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚๏ผจโ”‚A0โ”‚๏ผขโ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚G7โ”‚G6โ”‚G5โ”‚G4โ”‚G3โ”‚G2โ”‚G1โ”‚G0โ”‚่‡ณโ”‚C0โ”‚C1โ”‚C2โ”‚C3โ”‚C4โ”‚C5โ”‚C6โ”‚C7โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚๏ผฆโ”‚E0โ”‚๏ผคโ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚E7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ””โ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isA = true;
                bool isB = true;
                bool isC = true;
                bool isD = true;
                bool isE = true;
                bool isF = true;
                bool isG = true;
                bool isH = true;

                switch (agaruHiku)
                {
                case AgaruHiku.Yoru:
                    isA = false;
                    isB = false;
                    isD = false;
                    isE = false;
                    isF = false;
                    isH = false;
                    break;

                case AgaruHiku.Agaru:
                    isA = false;
                    isB = false;
                    isC = false;
                    isG = false;
                    isH = false;
                    break;

                case AgaruHiku.Hiku:
                    isC = false;
                    isD = false;
                    isE = false;
                    isF = false;
                    isG = false;
                    break;
                }

                switch (migiHidari)
                {
                case MigiHidari.Migi:
                    isA = false;
                    isE = false;
                    isF = false;
                    isG = false;
                    isH = false;
                    break;

                case MigiHidari.Hidari:
                    isA = false;
                    isB = false;
                    isC = false;
                    isD = false;
                    isE = false;
                    break;

                case MigiHidari.Sugu:
                    isA = false;
                    isB = false;
                    isC = false;
                    isD = false;
                    isF = false;
                    isG = false;
                    isH = false;
                    break;
                }

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isA)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปไธŠ(pside, dst1));
                }
                if (isB)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆ˜‡(pside, dst1));
                }
                if (isC)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๅฐ„(pside, dst1));
                }
                if (isD)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆฒˆ(pside, dst1));
                }
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๅผ•(pside, dst1));
                }
                if (isF)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆป้™(pside, dst1));
                }
                if (isG)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆป‘(pside, dst1));
                }
                if (isH)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆตฎ(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else if (PieceType.PB == srcSyurui)
            {
                #region ้ฆฌ
                //************************************************************
                // ้ฆฌ
                //************************************************************
                //----------
                // ๅ€™่ฃœใƒžใ‚น
                //----------
                //  โ”Œโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”
                //  โ”‚H7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B7โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚H6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B6โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚H5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B5โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚H4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B4โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚B2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H1โ”‚  โ”‚  โ”‚  โ”‚B1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚H0โ”‚๏ผกโ”‚B0โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚๏ผงโ”‚่‡ณโ”‚๏ผฃโ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F0โ”‚๏ผฅโ”‚D0โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F1โ”‚  โ”‚  โ”‚  โ”‚D1โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D2โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚F3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D3โ”‚  โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //ใ€€โ”‚  โ”‚  โ”‚  โ”‚F4โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D4โ”‚  โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚  โ”‚F5โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D5โ”‚  โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚  โ”‚F6โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D6โ”‚  โ”‚
                //  โ”œโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”ค
                //  โ”‚F7โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚D7โ”‚
                //  โ””โ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”ดโ”€โ”˜
                bool isA = true;
                bool isB = true;
                bool isC = true;
                bool isD = true;
                bool isE = true;
                bool isF = true;
                bool isG = true;
                bool isH = true;

                switch (agaruHiku)
                {
                case AgaruHiku.Yoru:
                    isA = false;
                    isB = false;
                    isD = false;
                    isE = false;
                    isF = false;
                    isH = false;
                    break;

                case AgaruHiku.Agaru:
                    isA = false;
                    isB = false;
                    isC = false;
                    isG = false;
                    isH = false;
                    break;

                case AgaruHiku.Hiku:
                    isC = false;
                    isD = false;
                    isE = false;
                    isF = false;
                    isG = false;
                    break;
                }

                switch (migiHidari)
                {
                case MigiHidari.Migi:
                    isA = false;
                    isE = false;
                    isF = false;
                    isG = false;
                    isH = false;
                    break;

                case MigiHidari.Hidari:
                    isA = false;
                    isB = false;
                    isC = false;
                    isD = false;
                    isE = false;
                    break;

                case MigiHidari.Sugu:
                    isA = false;
                    isB = false;
                    isC = false;
                    isD = false;
                    isF = false;
                    isG = false;
                    isH = false;
                    break;
                }

                SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท");
                if (isA)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปไธŠ(pside, dst1));
                }
                if (isB)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆ˜‡(pside, dst1));
                }
                if (isC)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅฐ„(pside, dst1));
                }
                if (isD)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆฒˆ(pside, dst1));
                }
                if (isE)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๅผ•(pside, dst1));
                }
                if (isF)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆป้™(pside, dst1));
                }
                if (isG)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆˆปๆป‘(pside, dst1));
                }
                if (isH)
                {
                    srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆˆปๆตฎ(pside, dst1));
                }

                if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma))
                {
                    srcOkiba1 = Okiba.ShogiBan;
                    goto gt_EndSyurui;
                }
                #endregion
            }
            else
            {
                #region ใ‚จใƒฉใƒผ
                //************************************************************
                // ใ‚จใƒฉใƒผ
                //************************************************************

                #endregion
            }

gt_EndShogiban:

            if (Fingers.Error_1 == foundKoma && utsu)
            {
                // ้ง’ๅฐใฎ้ง’ใ‚’(ๆ˜Ž็คบ็š„ใซ)ๆ‰“ใกใพใ™ใ€‚
                //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


                Fingers komas = Util_Sky_FingersQuery.InOkibaPsideKomasyuruiNow(
                    siteiNode.Value.KyokumenConst, srcOkiba1, pside, srcSyurui);//(2015-08-05 01:04)ๅค‰ๆ›ด
                //Fingers komas = Util_Sky051Fingers.Fingers_ByOkibaPsideSyuruiNow_OldSpec(
                //    siteiNode.Value.ToKyokumenConst, srcOkiba1, pside, srcSyurui);

                if (0 < komas.Count)
                {
                    switch (pside)
                    {
                    case Playerside.P2:
                        srcOkiba1 = Okiba.Gote_Komadai;
                        break;

                    case Playerside.P1:
                        srcOkiba1 = Okiba.Sente_Komadai;
                        break;

                    default:
                        srcOkiba1 = Okiba.Empty;
                        break;
                    }

                    foundKoma = komas[0];
                    goto gt_EndSyurui;
                }
            }

gt_EndSyurui:


            int srcMasuHandle1;

            if (Fingers.Error_1 != foundKoma)
            {
                // ๅฐ†ๆฃ‹็›คใฎไธŠใซ้ง’ใŒใ‚ใ‚Šใพใ—ใŸใ€‚
                //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(foundKoma).Now);

                srcMasuHandle1 = Conv_SyElement.ToMasuNumber(koma.Masu);
            }
            else
            {
                // ๏ผˆ็ฌฆๅทใซๆ›ธใ‹ใ‚Œใฆใ„ใพใ›ใ‚“ใŒ๏ผ‰ใ€Œๆ‰“ใ€ใฎใจใใ€‚
                //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                switch (pside)
                {
                case Playerside.P2:
                    srcOkiba1 = Okiba.Gote_Komadai;
                    break;

                case Playerside.P1:
                    srcOkiba1 = Okiba.Sente_Komadai;
                    break;

                default:
                    srcOkiba1 = Okiba.Empty;
                    break;
                }


                Debug.Assert(0 < siteiNode.Value.KyokumenConst.Count, "ๆ˜Ÿใฎๅ…‰ใŒ 1ๅ€‹ๆœชๆบ€ใ€‚");

                // ้ง’ๅฐใ‹ใ‚‰ใ€่ฉฒๅฝ“ใ™ใ‚‹้ง’ใ‚’ๆŽขใ—ใพใ™ใ€‚
                Fingers daiKomaFgs = Util_Sky_FingersQuery.InOkibaPsideKomasyuruiNow(
                    siteiNode.Value.KyokumenConst, srcOkiba1, pside, srcSyurui);//(2015-08-05 01:04)ๅค‰ๆ›ด
                //Fingers daiKomaFgs = Util_Sky051Fingers.Fingers_ByOkibaPsideSyuruiNow_OldSpec(
                //    siteiNode.Value.ToKyokumenConst, srcOkiba1, pside, srcSyurui);//(2014-10-04 12:46)ๅค‰ๆ›ด


                Debug.Assert(0 < daiKomaFgs.Count, $"ใƒ•ใ‚ฃใƒณใ‚ฌใƒผใ‚บใŒ 1ๅ€‹ๆœชๆบ€ใ€‚ srcOkiba1=[{srcOkiba1}] pside=[{pside}] srcSyurui=[{srcSyurui}]");

                // 1ๅ€‹ใฏใƒ’ใƒƒใƒˆใ™ใ‚‹ใฏใš
                Finger hitKoma = daiKomaFgs[0];//โ–ฒ๏ผ[ใ‚ณใƒž้€ใ‚Š]ใƒœใ‚ฟใƒณใ‚’้€ฃๆ‰“ใ™ใ‚‹ใจใ€ใ‚จใƒฉใƒผใซใชใ‚Šใพใ™ใ€‚



                RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(hitKoma).Now);

                srcMasuHandle1 = Conv_SyElement.ToMasuNumber(koma.Masu);
            }


            PieceType dstSyurui;
            if (NariNarazu.Nari == nariNarazu)
            {
                // ๆˆใ‚Šใพใ™
                dstSyurui = Util_Komasyurui14.NariCaseHandle[(int)srcSyurui];
            }
            else
            {
                // ใใฎใพใพใงใ™ใ€‚
                dstSyurui = srcSyurui;
            }


            // ๏ผ‘ๆ‰‹ใ‚’ใ€ใƒ‡ใƒผใ‚ฟใซใ—ใพใ™ใ€‚
            move = new RO_Starbeam(
                //foundKoma,//TODO:

                new RO_Star(
                    pside,
                    Conv_MasuHandle.ToMasu(srcMasuHandle1),
                    srcSyurui
                    ),

                new RO_Star(
                    pside,
                    dstMasu,//็ฌฆๅทใฏๅฐ†ๆฃ‹็›คใฎๅ‡็›ฎใงใ™ใ€‚
                    dstSyurui
                    ),

                PieceType.None // ็ฌฆๅทใ‹ใ‚‰ใฏใ€ๅ–ใฃใŸ้ง’ใฎ็จฎ้กžใฏๅˆ†ใ‹ใ‚‰ใชใ„ใ‚“ใ ใœโ˜†ใ€€ใ ใŒใƒใ‚ฐใงใฏใชใ„โ˜†ใ€€ใ‚ใจใง่ชฟในใ‚‹โ˜†
                );
        }