///// <summary> ///// ///// </summary> ///// <param name="out_restString"></param> ///// <param name="commandline">B3といった文字列☆</param> ///// <returns></returns> //public static bool TryParseMs( // string commandline, // Kyokumen ky, // ref int caret, // out Masu result //) //{ // //「B4」形式と想定 // // テキスト形式の符号「A4 …」の最初の1要素を、切り取ってトークンに分解します。 // //------------------------------------------------------------ // // リスト作成 // //------------------------------------------------------------ // Match m = Itiran_FenParser.GetMasuMovePattern(Option_Application.Optionlist.USI).Match(commandline, caret); // if (m.Success) // { // Util_String.SkipMatch(commandline, ref caret, m); // // 符号1「B4」を元に、Masu を作ります。 // // 盤上の駒を動かしたぜ☆ // result = Med_Parser.FenSujiDan_Masu( // Option_Application.Optionlist.USI, // m.Groups[1].Value, //ABCabc か、 ZKH // m.Groups[2].Value //1234 か、 * // ); // return true; // } // // 「B4B3」形式ではなかった☆(^△^)!? 次の一手が読めない☆ // result = ky.MASU_ERROR; // return false; //} /// <summary> /// 筋 /// </summary> /// <param name="isSfen"></param> /// <param name="suji"></param> /// <returns></returns> public static int FenSuji_Int(bool isSfen, string suji) { if (isSfen) { if (!int.TryParse(suji, out int iSuji)) { throw new Exception($"パース失敗 suji=[{suji}]"); } return(Option_Application.Optionlist.BanYokoHaba + 1 - iSuji); } else { return(Conv_Kihon.AlphabetToInt(suji)); } }
/// <summary> /// 段 /// </summary> /// <param name="isSfen"></param> /// <param name="suji"></param> /// <returns></returns> public static int FenDan_Int(bool isSfen, string dan) { if (isSfen) { return(Conv_Kihon.AlphabetToInt(dan)); } else { if (!int.TryParse(dan, out int iDan)) { throw new Exception($"パース失敗 dan=[{ dan }]"); } return(iDan); } }