/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }