Ejemplo n.º 1
0
        /// <summary>
        /// 盤上の駒を指したぜ☆(^▽^)(打つ以外の指し手☆)
        ///
        /// 指し手に、取った駒を記録するのは止めるぜ☆(^~^)局面データの方に入れておこう☆(^▽^)
        /// </summary>
        /// <param name="ms_src"></param>
        /// <param name="ms_dst"></param>
        /// <param name="natta"></param>
        /// <returns></returns>
        public static Move ToMove01aNarazuSasi(Masu ms_src, Masu ms_dst, Kyokumen.Sindanyo kys)
        {
            Debug.Assert(kys.IsBanjoOrError(ms_src), $"ms_src=[{ms_src}] kys.MASUS=[{kys.MASU_YOSOSU}]");
            Debug.Assert(kys.IsBanjo(ms_dst), "盤外に指したぜ☆?");

            // バリュー
            int v = 0;

            // 筋と段☆(^▽^)盤外なら 0 だぜ☆(^▽^)
            SetSrcMasu_WithoutErrorCheck(ref v, ms_src);

            // 「打」のときは何もしないぜ☆(^▽^)

            SetDstMasu_WithoutErrorCheck(ref v, ms_dst);

            // 打った駒なし

            // 成らない☆(^▽^)

            return((Move)v);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 盤上の駒を指したぜ☆(^▽^)(打つ以外の指し手☆)
        ///
        /// 指し手に、取った駒を記録するのは止めるぜ☆(^~^)局面データの方に入れておこう☆(^▽^)
        /// </summary>
        /// <param name="ms_src"></param>
        /// <param name="ms_dst"></param>
        /// <param name="natta"></param>
        /// <returns></returns>
        public static Move ToMove01bNariSasi(Masu ms_src, Masu ms_dst, Kyokumen.Sindanyo kys)
        {
            Debug.Assert(kys.IsBanjoOrError(ms_src), "");
            Debug.Assert(kys.IsBanjo(ms_dst), "盤外に指したぜ☆?");

            // バリュー
            int v = 0;

            // 筋と段☆(^▽^)盤外なら 0 だぜ☆(^▽^)
            SetSrcMasu_WithoutErrorCheck(ref v, ms_src);

            // 「打」のときは何もしないぜ☆(^▽^)

            SetDstMasu_WithoutErrorCheck(ref v, ms_dst);

            // 打った駒なし

            // 成った☆(^▽^)
            v |= 1 << MoveShift.Natta;

            return((Move)v);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ms">どの(0~80)升に</param>
        /// <param name="km">先後付きの駒</param>
        /// <returns></returns>
        public static ulong GetBanjoKey(Masu ms, Koma km, Kyokumen.Sindanyo kys)
        {
            var optionalPiece = OptionalPiece.From(km);

            Debug.Assert(Conv_Koma.IsOk(optionalPiece), "");

            if (Dirty)
            {
                Tukurinaosi(kys);
            }

            if (!Conv_Koma.IsOk(optionalPiece))
            {
                throw new Exception("エラー☆(>_<) 盤上の駒じゃないぜ☆");
            }
            else if (kys.IsBanjo(ms))
            {
                return(m_banjoKeys_[(int)ms, (int)km]);
            }
            else
            {
                throw new Exception("エラー☆(>_<) 盤上のどこに置いてある駒なんだぜ☆");
            }
        }