Пример #1
0
        /// <summary>
        /// 不成
        /// </summary>
        public static bool IsFunari(RO_Starlight ms)
        {
            bool result;

            RO_Star koma = Util_Starlightable.AsKoma(ms.Now);

            result = !Util_Komasyurui14.FlagNari[(int)Util_Komahaiyaku184.Syurui(koma.Haiyaku)];

            return(result);
        }
Пример #2
0
        /// <summary>
        /// 外字を利用した、デバッグ用の駒の名前1文字だぜ☆
        /// </summary>
        /// <returns></returns>
        public static char ToGaiji(RO_Starlight ms)
        {
            char result;

            RO_Star koma = Util_Starlightable.AsKoma(ms.Now);

            result = Util_Komasyurui14.ToGaiji(Util_Komahaiyaku184.Syurui(koma.Haiyaku), koma.Pside);

            return(result);
        }
Пример #3
0
        /// <summary>
        /// 成ケース
        /// </summary>
        /// <returns></returns>
        public static PieceType ToNariCase(RO_Starlight ms)
        {
            PieceType result;

            RO_Star koma = Util_Starlightable.AsKoma(ms.Now);

            result = Util_Komasyurui14.NariCaseHandle[(int)Util_Komahaiyaku184.Syurui(koma.Haiyaku)];

            return(result);
        }
Пример #4
0
        /// <summary>
        /// 駒台の上にあれば真。
        /// </summary>
        /// <returns></returns>
        public static bool OnKomadai(RO_Starlight ms)
        {
            bool result;

            RO_Star koma = Util_Starlightable.AsKoma(ms.Now);

            result = (Okiba.Sente_Komadai | Okiba.Gote_Komadai).HasFlag(
                Conv_SyElement.ToOkiba(koma.Masu));

            return(result);
        }
Пример #5
0
        /// <summary>
        /// 先後一致判定。
        /// </summary>
        /// <param name="ms2"></param>
        /// <returns></returns>
        public static bool MatchPside(RO_Starlight ms1, RO_Starlight ms2)
        {
            bool result;

            RO_Star koma1 = Util_Starlightable.AsKoma(ms1.Now);
            RO_Star koma2 = Util_Starlightable.AsKoma(ms2.Now);


            result = koma1.Pside == koma2.Pside;

            return(result);
        }
Пример #6
0
        /// <summary>
        /// [巻戻し]時の、駒台にもどる動きを吸収。
        /// </summary>
        /// <param name="syurui2"></param>
        /// <param name="move">棋譜に記録するために「指す前/指した後」を含めた手。</param>
        /// <param name="kifu"></param>
        /// <param name="isMakimodosi"></param>
        /// <returns></returns>
        private static IMoveHalf Do37_KomaOnDestinationMasu(
            PieceType syurui2,
            IMove move,
            SkyConst src_Sky
            )
        {
            IMoveHalf dst;

            RO_Star srcKoma = Util_Starlightable.AsKoma(move.LongTimeAgo); //移動元
            RO_Star dstKoma = Util_Starlightable.AsKoma(move.Now);         //移動先


            SyElement masu;

            if (
                Okiba.Gote_Komadai == Conv_SyElement.ToOkiba(srcKoma.Masu) ||
                Okiba.Sente_Komadai == Conv_SyElement.ToOkiba(srcKoma.Masu)
                )
            {
                //>>>>> 1手前が駒台なら

                // 駒台の空いている場所
                masu = Util_IttesasuRoutine.GetKomadaiKomabukuroSpace(Conv_SyElement.ToOkiba(srcKoma.Masu), src_Sky);
                // 必ず空いている場所があるものとします。
            }
            else
            {
                //>>>>> 1手前が将棋盤上なら

                // その位置
                masu = srcKoma.Masu;//戻し先
            }



            dst = new RO_Starlight(
                //move.Finger,
                new RO_Star(dstKoma.Pside,
                            masu,//戻し先
                            syurui2)
                );

            return(dst);
        }
Пример #7
0
        /// <summary>
        /// [巻戻し]時の、駒台にもどる動きを吸収。
        /// </summary>
        /// <param name="syurui2"></param>
        /// <param name="move">棋譜に記録するために「指す前/指した後」を含めた手。</param>
        /// <param name="kifu"></param>
        /// <param name="isMakimodosi"></param>
        /// <returns></returns>
        private static IMoveHalf Do36_KomaOnDestinationMasu(
            PieceType syurui2,
            IMove move,
            SkyConst src_Sky)
        {
            IMoveHalf dst;

            RO_Star srcKoma = Util_Starlightable.AsKoma(move.LongTimeAgo); //移動元
            RO_Star dstKoma = Util_Starlightable.AsKoma(move.Now);         //移動先

            // 次の位置


            dst = new RO_Starlight(
                new RO_Star(dstKoma.Pside,
                            dstKoma.Masu,
                            syurui2)
                );

            return(dst);
        }