Example #1
0
        /// <summary>
        /// 駒のハンドル(*1)を返します。
        ///
        ///         *1…将棋の駒1つ1つに付けられた番号です。
        ///
        /// </summary>
        /// <param name="syurui"></param>
        /// <param name="hKomas"></param>
        /// <returns></returns>
        public static Fingers InKomasyuruiNow(SkyConst src_Sky, PieceType syurui)
        {
            Fingers figKomas = new Fingers();

            foreach (Finger figKoma in Finger_Honshogi.Items_KomaOnly)
            {
                RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(figKoma).Now);


                if (Util_Komasyurui14.Matches(syurui, Util_Komahaiyaku184.Syurui(koma.Haiyaku)))
                {
                    figKomas.Add(figKoma);
                }
            }

            return(figKomas);
        }
Example #2
0
        /// <summary>
        /// 駒の種類(不成として扱います)を指定して、駒を検索します。
        /// </summary>
        /// <param name="okiba"></param>
        /// <param name="komasyurui"></param>
        /// <param name="uc_Main"></param>
        /// <returns>無ければ -1</returns>
        public static Finger InOkibaSyuruiNowIgnoreCase(SkyConst srcSky, Okiba okiba, PieceType komasyurui)
        {
            Finger found = Fingers.Error_1;

            PieceType syuruiNarazuCase = Util_Komasyurui14.NarazuCaseHandle(komasyurui);

            foreach (Finger finger in Finger_Honshogi.Items_KomaOnly)
            {
                RO_Star koma = Util_Starlightable.AsKoma(srcSky.StarlightIndexOf(finger).Now);

                if (Conv_SyElement.ToOkiba(koma.Masu) == okiba &&
                    Util_Komasyurui14.Matches(koma.ToNarazuCase(), syuruiNarazuCase))
                {
                    found = finger;
                    break;
                }
            }

            return(found);
        }
Example #3
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 駒のハンドルを返します。 : 置き場、種類
        /// ************************************************************************************************************************
        /// </summary>
        /// <param name="okiba"></param>
        /// <param name="syurui"></param>
        /// <param name="kifu"></param>
        /// <returns></returns>
        public static Fingers InOkibaKomasyuruiNow(SkyConst src_Sky, Okiba okiba, PieceType syurui)
        {
            Fingers komas = new Fingers();

            foreach (Finger figKoma in Finger_Honshogi.Items_KomaOnly)
            {
                RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(figKoma).Now);


                if (
                    okiba == Conv_SyElement.ToOkiba(koma.Masu) &&
                    Util_Komasyurui14.Matches(syurui, koma.Komasyurui)   // Util_Komahaiyaku184.Syurui(koma.Haiyaku)
                    )
                {
                    komas.Add(figKoma);
                }
            }

            return(komas);
        }
Example #4
0
        /// <summary>
        /// 将棋盤上での検索
        /// </summary>
        /// <param name="srcAll">候補マス</param>
        /// <param name="komas"></param>
        /// <returns></returns>
        public static bool Query_Koma(
            Playerside pside,
            PieceType syurui,
            SySet <SyElement> srcAll,
            SkyConst src_Sky,//KifuTree kifu,
            out Finger foundKoma
            )
        {
            //SkyConst src_Sky = kifu.CurNode.Value.ToKyokumenConst;

            bool hit = false;

            foundKoma = Fingers.Error_1;


            foreach (New_Basho masu1 in srcAll.Elements)//筋・段。(先後、種類は入っていません)
            {
                foreach (Finger koma1 in Finger_Honshogi.Items_KomaOnly)
                {
                    RO_Star koma2 = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(koma1).Now);


                    if (pside == koma2.Pside &&
                        Okiba.ShogiBan == Conv_SyElement.ToOkiba(koma2.Masu) &&
                        Util_Komasyurui14.Matches(syurui, Util_Komahaiyaku184.Syurui(koma2.Haiyaku)) &&
                        masu1 == koma2.Masu
                        )
                    {
                        // 候補マスにいた
                        //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                        hit       = true;
                        foundKoma = koma1;
                        break;
                    }
                }
            }

            return(hit);
        }