/// <summary> /// ************************************************************************************************************************ /// 元位置。 /// ************************************************************************************************************************ /// </summary> /// <returns></returns> public static IMove Src(IMove move) { RO_Starbeam result; RO_Star srcKoma = Util_Starlightable.AsKoma(move.LongTimeAgo); RO_Star dstKoma = Util_Starlightable.AsKoma(move.Now); result = new RO_Starbeam( new RO_Star( dstKoma.Pside, Masu_Honshogi.Query_Basho(Masu_Honshogi.nError), // ソースのソースは未定義。 PieceType.None ), // ソースの目的地はソース new RO_Star( dstKoma.Pside, srcKoma.Masu, srcKoma.Komasyurui ), PieceType.None ); return(result); }
public static SkyConst NewInstance_ReversePside(Sky src, int temezumi_orMinus1) { SkyConst result = new SkyConst(src, true, temezumi_orMinus1, new Finger[] { Fingers.Error_1 }, new IMoveHalf[] { null }, // 手得計算 PieceType.None, 0, Masu_Honshogi.Query_Basho(Masu_Honshogi.nError) ); return(result); }
/// <summary> /// /// </summary> /// <param name="src"></param> /// <param name="finger1">指した駒、指されていた駒</param> /// <param name="light1"></param> /// <param name="finger2">取った駒、取っていた駒</param> /// <param name="light2"></param> /// <returns></returns> public static SkyConst NewInstance_OverwriteOrAdd_Light(Sky src, int temezumi_orMinus1, Finger finger1, IMoveHalf light1, Finger finger2, IMoveHalf light2) { SkyConst result = new SkyConst(src, false, temezumi_orMinus1, new Finger[] { finger1, finger2 }, new IMoveHalf[] { light1, light2 }, // 手得計算 PieceType.None, 0, Masu_Honshogi.Query_Basho(Masu_Honshogi.nError) ); return(result); }
/// <summary> /// /// </summary> /// <param name="okiba"></param> /// <param name="suji"></param> /// <param name="dan"></param> /// <returns></returns> public static SyElement OkibaSujiDanToMasu(Okiba okiba, int suji, int dan) { int masuHandle = Util_Masu10.Handle_OkibaSujiDanToMasu(okiba, suji, dan); SyElement masu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError);//範囲外が指定されることもあります。 if (Conv_MasuHandle.Yuko(masuHandle)) { masu = Masu_Honshogi.Masus_All[masuHandle]; } return(masu); }
public static SyElement ToMasu(int masuHandle) { SyElement masu; if ( !Conv_MasuHandle.Yuko(masuHandle) ) { masu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError); } else { masu = Masu_Honshogi.Masus_All[masuHandle]; } return(masu); }
/// <summary> /// ************************************************************************************************************************ /// 駒台の空いている升を返します。 /// ************************************************************************************************************************ /// </summary> /// <param name="okiba">先手駒台、または後手駒台</param> /// <param name="uc_Main">メインパネル</param> /// <returns>置ける場所。無ければヌル。</returns> public static SyElement GetKomadaiKomabukuroSpace(Okiba okiba, SkyConst src_Sky) { SyElement akiMasu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError); // 先手駒台または後手駒台の、各マスの駒がある場所を調べます。 bool[] exists = new bool[Util_Masu10.KOMADAI_KOMABUKURO_SPACE_LENGTH];//駒台スペースは40マスです。 src_Sky.Foreach_Starlights((Finger finger, IMoveHalf komaP, ref bool toBreak) => { RO_Star koma = Util_Starlightable.AsKoma(komaP.Now); if (Conv_SyElement.ToOkiba(koma.Masu) == okiba) { exists[ Conv_SyElement.ToMasuNumber(koma.Masu) - Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(okiba)) ] = true; } }); //駒台スペースは40マスです。 for (int i = 0; i < Util_Masu10.KOMADAI_KOMABUKURO_SPACE_LENGTH; i++) { if (!exists[i]) { akiMasu = Masu_Honshogi.Masus_All[i + Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(okiba))]; goto gt_EndMethod; } } gt_EndMethod: //Logger.Trace($"ゲット駒台駒袋スペース={akiMasu}"); return(akiMasu); }
/// <summary> /// ロードした内容を確認するときに使います。 /// </summary> /// <returns></returns> public static string LogString() { StringBuilder sb = new StringBuilder(); foreach (KeyValuePair <Komahaiyaku185, Dictionary <int, Komahaiyaku185> > entry1 in Array_ForcePromotion.HaiyakuMap) { sb.Append(entry1.Key); sb.Append(": "); foreach (KeyValuePair <int, Komahaiyaku185> entry2 in entry1.Value) { sb.Append( Util_Masu10.ToSujiKanji(Masu_Honshogi.Query_Basho(entry2.Key)) ); sb.Append("."); sb.Append(entry2.Value); sb.Append(" "); } sb.AppendLine(); } return(sb.ToString()); }
public static New_Basho Query_Basho(int masuNumber) { ulong bitfield = BashoImpl.ToBitfield(masuNumber); return(Masu_Honshogi.Query_Basho(bitfield)); }
/// <summary> /// 一手指します。 /// </summary> /// <param name="ittesasuArg"></param> /// <param name="ittesasu_mutable"></param> /// <param name="ittesasuResult"></param> /// <param name="memberName"></param> /// <param name="sourceFilePath"></param> /// <param name="sourceLineNumber"></param> public static void Before1( IttesasuArg ittesasuArg, out IttesasuResult ittesasuResult, string hint , [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0 ) { //------------------------------ // 用意 //------------------------------ ittesasuResult = new IttesasuResultImpl(Fingers.Error_1, Fingers.Error_1, null, PieceType.None, null); SkyConst kaisi_Sky = ittesasuArg.KaisiKyokumen.KyokumenConst; // 一手指し開始局面(不変) Node <IMove, KyokumenWrapper> editNodeRef; // 編集対象ノード(巻き戻し時と、進む時で異なる) //------------------------------ // 符号(局面)の追加 //------------------------------ { //進むときは、必ずノードの追加と、カレントの移動がある。 //現局面ノードのクローンを作成します。 editNodeRef = new KifuNodeImpl(ittesasuArg.KorekaranoMove, new KyokumenWrapper( SkyConst.NewInstance_ReversePside(kaisi_Sky, ittesasuArg.KorekaranoTemezumi_orMinus1)) ); ittesasuResult.Susunda_Sky_orNull = editNodeRef.Value.KyokumenConst; } //------------------------------ // 動かす駒を移動先へ。 //------------------------------ Debug.Assert(null != ittesasuArg.KorekaranoMove, "これからの指し手がヌルでした。"); Finger figMovedKoma; Util_IttesasuRoutine.Do24_UgokasuKoma_IdoSakiHe( out figMovedKoma, ittesasuArg.KorekaranoMove, ittesasuArg.KaisiTebanside, kaisi_Sky, hint ); ittesasuResult.FigMovedKoma = figMovedKoma; //動かした駒更新 Debug.Assert(Fingers.Error_1 != ittesasuResult.FigMovedKoma, "動かした駒がない☆!?エラーだぜ☆!"); RO_Star korekaranoKoma = Util_Starlightable.AsKoma(ittesasuArg.KorekaranoMove.Now); IMoveHalf afterStar; { afterStar = Util_IttesasuRoutine.Do36_KomaOnDestinationMasu( korekaranoKoma.Komasyurui, ittesasuArg.KorekaranoMove, ittesasuResult.Susunda_Sky_orNull ); } // Sky 局面データは、この関数の途中で何回か変更されます。ローカル変数に退避しておくと、同期が取れなくなります。 //------------------------------------------------------------ // 駒を取る //------------------------------------------------------------ Finger figFoodKoma = Fingers.Error_1; RO_Star food_koma = null; Playerside food_pside = Playerside.Empty; SyElement food_akiMasu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError); { Util_IttesasuRoutine.Do61_KomaToru( afterStar, ittesasuResult.Susunda_Sky_orNull, out figFoodKoma, out food_koma, out food_pside, out food_akiMasu ); if (Fingers.Error_1 != figFoodKoma) { //>>>>> 指した先に駒があったなら ittesasuResult.FoodKomaSyurui = food_koma.Komasyurui; } else { ittesasuResult.FoodKomaSyurui = PieceType.None; } } Debug.Assert(figMovedKoma != Fingers.Error_1, "駒を動かせなかった?1"); if (Fingers.Error_1 != figFoodKoma) { //------------------------------------------------------------ // 指した駒と、取った駒の移動 //------------------------------------------------------------ //------------------------------ // 局面データの書き換え //------------------------------ ittesasuResult.Susunda_Sky_orNull = SkyConst.NewInstance_OverwriteOrAdd_Light( ittesasuResult.Susunda_Sky_orNull, ittesasuArg.KorekaranoTemezumi_orMinus1, // // 指した駒 // figMovedKoma, //指した駒番号 afterStar, //指した駒 // // 取った駒 // figFoodKoma, new RO_Starlight( new RO_Star( food_pside, food_akiMasu, //駒台の空きマスへ food_koma.ToNarazuCase() // 取られた駒の種類。表面を上に向ける。 ) ) ); } else { //------------------------------------------------------------ // 指した駒の移動 //------------------------------------------------------------ ittesasuResult.Susunda_Sky_orNull = SkyConst.NewInstance_OverwriteOrAdd_Light( ittesasuResult.Susunda_Sky_orNull, //駒を取って変化しているかもしれない? ittesasuArg.KorekaranoTemezumi_orMinus1, // これから作る局面の、手目済み。 // // 指した駒 // figMovedKoma, afterStar, // // 手得計算 // korekaranoKoma.Komasyurui, 0,// TODO: suji or index korekaranoKoma.Masu ); } editNodeRef.Value.SetKyokumen(ittesasuResult.Susunda_Sky_orNull); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // この時点で、必ず現局面データに差替えあり // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // 局面データに変更があったものとして進めます。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ittesasuResult.FigFoodKoma = figFoodKoma; //取った駒更新 // // ノード ittesasuResult.Set_SyuryoNode_OrNull = editNodeRef;// この変数を返すのがポイント。棋譜とは別に、現局面。 }
/// <summary> /// ************************************************************************************************************************ /// 駒を、平手の初期配置に並べます。 /// ************************************************************************************************************************ /// </summary> public static SkyConst New_Hirate(Playerside kaisiPside) { SkyBuffer dst_Sky = new SkyBuffer(kaisiPside, 0//初期局面は 0手目済み ); Finger figKoma; figKoma = Finger_Honshogi.SenteOh; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban59_5九), PieceType.K))); //先手王 figKoma = (int)Finger_Honshogi.GoteOh; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban51_5一), PieceType.K))); //後手王 figKoma = (int)Finger_Honshogi.Hi1; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban28_2八), PieceType.R)));//飛 figKoma = (int)Finger_Honshogi.Hi2; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban82_8二), PieceType.R))); figKoma = (int)Finger_Honshogi.Kaku1; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban88_8八), PieceType.B)));//角 figKoma = (int)Finger_Honshogi.Kaku2; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban22_2二), PieceType.B))); figKoma = (int)Finger_Honshogi.Kin1; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban49_4九), PieceType.G)));//金 figKoma = (int)Finger_Honshogi.Kin2; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban69_6九), PieceType.G))); figKoma = (int)Finger_Honshogi.Kin3; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban41_4一), PieceType.G))); figKoma = (int)Finger_Honshogi.Kin4; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban61_6一), PieceType.G))); figKoma = (int)Finger_Honshogi.Gin1; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban39_3九), PieceType.S)));//銀 figKoma = (int)Finger_Honshogi.Gin2; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban79_7九), PieceType.S))); figKoma = (int)Finger_Honshogi.Gin3; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban31_3一), PieceType.S))); figKoma = (int)Finger_Honshogi.Gin4; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban71_7一), PieceType.S))); figKoma = (int)Finger_Honshogi.Kei1; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban29_2九), PieceType.N)));//桂 figKoma = (int)Finger_Honshogi.Kei2; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban89_8九), PieceType.N))); figKoma = (int)Finger_Honshogi.Kei3; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban21_2一), PieceType.N))); figKoma = (int)Finger_Honshogi.Kei4; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban81_8一), PieceType.N))); figKoma = (int)Finger_Honshogi.Kyo1; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban19_1九), PieceType.L)));//香 figKoma = (int)Finger_Honshogi.Kyo2; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban99_9九), PieceType.L))); figKoma = (int)Finger_Honshogi.Kyo3; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一), PieceType.L))); figKoma = (int)Finger_Honshogi.Kyo4; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban91_9一), PieceType.L))); figKoma = (int)Finger_Honshogi.Fu1; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban17_1七), PieceType.P)));//歩 figKoma = (int)Finger_Honshogi.Fu2; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban27_2七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu3; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban37_3七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu4; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban47_4七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu5; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban57_5七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu6; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban67_6七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu7; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban77_7七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu8; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban87_8七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu9; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban97_9七), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu10; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban13_1三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu11; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban23_2三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu12; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban33_3三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu13; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban43_4三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu14; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban53_5三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu15; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban63_6三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu16; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban73_7三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu17; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban83_8三), PieceType.P))); figKoma = (int)Finger_Honshogi.Fu18; dst_Sky.PutOverwriteOrAdd_Starlight(figKoma, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nban93_9三), PieceType.P))); //LarabeLogger.GetInstance().WriteAddMemo(logTag, "平手局面にセットしたぜ☆"); return(SkyConst.NewInstance(dst_Sky, -1//dst_skyでもう変えてあるのでそのまま。 )); }
public static SkyConst New_Komabukuro(Playerside kaisiPside) { SkyBuffer buf_Sky = new SkyBuffer(kaisiPside, 0// 初期局面扱いで、 0手目済みとしておく。 ); buf_Sky.Clear(); Finger finger = 0; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(/*finger,*/ new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01), PieceType.K)));// Kh185.n051_底奇王 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro02), PieceType.K)));// Kh185.n051_底奇王 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro03), PieceType.R)));// Kh185.n061_飛 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro04), PieceType.R)));// Kh185.n061_飛 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro05), PieceType.B)));// Kh185.n072_奇角 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro06), PieceType.B)));// Kh185.n072_奇角 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro07), PieceType.G)));// Kh185.n038_底偶金 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro08), PieceType.G)));// Kh185.n038_底偶金 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro09), PieceType.G)));// Kh185.n038_底偶金 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro10), PieceType.G)));// Kh185.n038_底偶金 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro11), PieceType.S)));// Kh185.n023_底奇銀 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro12), PieceType.S)));// Kh185.n023_底奇銀 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro13), PieceType.S)));// Kh185.n023_底奇銀 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro14), PieceType.S)));// Kh185.n023_底奇銀 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro15), PieceType.N)));// Kh185.n007_金桂 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro16), PieceType.N)));// Kh185.n007_金桂 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro17), PieceType.N)));// Kh185.n007_金桂 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro18), PieceType.N)));// Kh185.n007_金桂 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro19), PieceType.L)));// Kh185.n002_香 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro20), PieceType.L)));// Kh185.n002_香 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro21), PieceType.L)));// Kh185.n002_香 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro22), PieceType.L)));// Kh185.n002_香 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro23), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro24), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro25), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro26), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro27), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro28), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro29), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro30), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro31), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro32), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro33), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro34), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro35), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro36), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro37), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro38), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro39), PieceType.P)));// Kh185.n001_歩 finger++; buf_Sky.PutOverwriteOrAdd_Starlight(finger, new RO_Starlight(new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro40), PieceType.P)));// Kh185.n001_歩 finger++; // 以上、全40駒。 Debug.Assert(buf_Sky.Starlights.Count == 40); return(SkyConst.NewInstance(buf_Sky, -1//buf_skyで設定済みなのでそのまま。 )); }
/// <summary> /// /// </summary> /// <param name="filepath1"></param> /// <returns></returns> public static bool Load(string filepath1) { bool successful = false; string filepath2 = Path.Combine(Application.StartupPath, filepath1); List <List <string> > rows = null; if (!File.Exists(filepath2)) { MessageBox.Show($"ファイルがありません。\nfilepath2=[{filepath2}]", "情報"); rows = null; goto gt_EndMethod; } rows = Util_Csv.ReadCsv(filepath2); // 最初の1行は削除。 rows.RemoveRange(0, 1); Michi187Array.Items.Clear(); // 構文解析は大雑把です。 // (1)空セルは無視します。 // (2)「@DEFINE」セルが処理開始の合図です。 // (3)次のセルには集合の名前です。「味方陣」「平野部」「敵陣」のいずれかです。 // (4)次のセルは「=」です。 // (5)次のセルは「{」です。 // (6)次に「}」セルが出てくるまで、符号のセルが連続します。「1九」「1八」など。 // (7)「}」セルで、@DEFINEの処理は終了です。 foreach (List <string> row in rows) { // 2列目は、道名。 SySet <SyElement> michi187 = new SySet_Ordered <SyElement>(row[1].Trim()); SySet <SyElement> michiPart = null; // 各行の先頭1列目(連番)と2列目(道名)は削除。 row.RemoveRange(0, 2); bool isPart_Define = false; //@DEFINEパート bool isPart_Define_Member = false; //符号パート foreach (string cell1 in row) { string cell = cell1.Trim(); if (cell == "") { goto gt_Next1; } if (isPart_Define) { if (cell == "=") { goto gt_Next1; } if (cell == "{") { isPart_Define_Member = true; goto gt_Next1; } if (cell == "}") { isPart_Define_Member = false; isPart_Define = false; goto gt_Next1; } if (isPart_Define_Member) { // 「1一」を「1」に変換します。 SyElement masu81 = Masu_Honshogi.Query_Basho(Conv_Sy.Query_Bitfield(cell)); michiPart.AddElement(masu81); } else { switch (cell) { case "味方陣": michiPart = new SySet_Ordered <SyElement>("味方陣"); michi187.AddSupersets(michiPart); goto gt_Next1; case "平野部": michiPart = new SySet_Ordered <SyElement>("平野部"); michi187.AddSupersets(michiPart); goto gt_Next1; case "敵陣": michiPart = new SySet_Ordered <SyElement>("敵陣"); michi187.AddSupersets(michiPart); goto gt_Next1; default: throw new Exception($"未定義のキーワードです。[{cell}]"); } } } else { if (cell == "@DEFINE") { isPart_Define = true; goto gt_Next1; } } gt_Next1: ; } Michi187Array.Items.Add(michi187); } successful = true; gt_EndMethod: return(successful); }
/// <summary> /// 平手初期局面、2P(盤の上側)。 /// </summary> /// <returns></returns> public static TedokuHistory New_HirateSyokikyokumen_2P() { TedokuHistory result = new TedokuHistoryConst( new List <SyElement>[] {//歩 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban13_1三) }, //1三 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban23_2三) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban33_3三) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban43_4三) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban53_5三) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban63_6三) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban73_7三) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban83_8三) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban93_9三) }, }, new List <SyElement>[] {//香 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban91_9一) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement>[] {//桂 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban21_2一) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban81_8一) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement>[] {//銀 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban31_3一) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban71_7一) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement>[] {//金 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban41_4一) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban61_6一) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement> {//玉 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban51_5一) }, new List <SyElement>[] {//飛 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban82_8二) }, new List <SyElement> { }, }, new List <SyElement>[] {//角 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban22_2二) }, new List <SyElement> { }, } ); return(result); }
/// <summary> /// 平手初期局面、1P(盤の下側)。 /// </summary> /// <returns></returns> public static TedokuHistory New_HirateSyokikyokumen_1P() { TedokuHistory result = new TedokuHistoryConst( new List <SyElement>[] {//歩 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban17_1七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban27_2七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban37_3七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban47_4七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban57_5七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban67_6七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban77_7七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban87_8七) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban97_9七) }, }, new List <SyElement>[] {//香 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban19_1九) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban99_9九) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement>[] {//桂 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban29_2九) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban89_8九) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement>[] {//銀 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban39_3九) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban79_7九) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement>[] {//金 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban49_4九) }, new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban69_6九) }, new List <SyElement> { }, new List <SyElement> { }, }, new List <SyElement> {//玉 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban59_5九) }, new List <SyElement>[] {//飛 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban28_2八) }, new List <SyElement> { }, }, new List <SyElement>[] {//角 new List <SyElement> { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban88_8八) }, new List <SyElement> { }, } ); return(result); }
static Masu_Honshogi() { Masu_Honshogi.bitfieldBashoDictionary = new Dictionary <ulong, New_Basho>(); //盤上1筋 { int[] array = new int[] { Masu_Honshogi.nban11_1一, Masu_Honshogi.nban12_1二, Masu_Honshogi.nban13_1三, Masu_Honshogi.nban14_1四, Masu_Honshogi.nban15_1五, Masu_Honshogi.nban16_1六, Masu_Honshogi.nban17_1七, Masu_Honshogi.nban18_1八, Masu_Honshogi.nban19_1九, }; foreach (int masuNumber in array) { BAN_SUJIS[1].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上2筋 { int[] array = new int[] { Masu_Honshogi.nban21_2一, Masu_Honshogi.nban22_2二, Masu_Honshogi.nban23_2三, Masu_Honshogi.nban24_2四, Masu_Honshogi.nban25_2五, Masu_Honshogi.nban26_2六, Masu_Honshogi.nban27_2七, Masu_Honshogi.nban28_2八, Masu_Honshogi.nban29_2九, }; foreach (int masuNumber in array) { BAN_SUJIS[2].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上3筋 { int[] array = new int[] { Masu_Honshogi.nban31_3一, Masu_Honshogi.nban32_3二, Masu_Honshogi.nban33_3三, Masu_Honshogi.nban34_3四, Masu_Honshogi.nban35_3五, Masu_Honshogi.nban36_3六, Masu_Honshogi.nban37_3七, Masu_Honshogi.nban38_3八, Masu_Honshogi.nban39_3九, }; foreach (int masuNumber in array) { BAN_SUJIS[3].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上4筋 { int[] array = new int[] { Masu_Honshogi.nban41_4一, Masu_Honshogi.nban42_4二, Masu_Honshogi.nban43_4三, Masu_Honshogi.nban44_4四, Masu_Honshogi.nban45_4五, Masu_Honshogi.nban46_4六, Masu_Honshogi.nban47_4七, Masu_Honshogi.nban48_4八, Masu_Honshogi.nban49_4九, }; foreach (int masuNumber in array) { BAN_SUJIS[4].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上5筋 { int[] array = new int[] { Masu_Honshogi.nban51_5一, Masu_Honshogi.nban52_5二, Masu_Honshogi.nban53_5三, Masu_Honshogi.nban54_5四, Masu_Honshogi.nban55_5五, Masu_Honshogi.nban56_5六, Masu_Honshogi.nban57_5七, Masu_Honshogi.nban58_5八, Masu_Honshogi.nban59_5九, }; foreach (int masuNumber in array) { BAN_SUJIS[5].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上6筋 { int[] array = new int[] { Masu_Honshogi.nban61_6一, Masu_Honshogi.nban62_6二, Masu_Honshogi.nban63_6三, Masu_Honshogi.nban64_6四, Masu_Honshogi.nban65_6五, Masu_Honshogi.nban66_6六, Masu_Honshogi.nban67_6七, Masu_Honshogi.nban68_6八, Masu_Honshogi.nban69_6九, }; foreach (int masuNumber in array) { BAN_SUJIS[6].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上7筋 { int[] array = new int[] { Masu_Honshogi.nban71_7一, Masu_Honshogi.nban72_7二, Masu_Honshogi.nban73_7三, Masu_Honshogi.nban74_7四, Masu_Honshogi.nban75_7五, Masu_Honshogi.nban76_7六, Masu_Honshogi.nban77_7七, Masu_Honshogi.nban78_7八, Masu_Honshogi.nban79_7九, }; foreach (int masuNumber in array) { BAN_SUJIS[7].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上8筋 { int[] array = new int[] { Masu_Honshogi.nban81_8一, Masu_Honshogi.nban82_8二, Masu_Honshogi.nban83_8三, Masu_Honshogi.nban84_8四, Masu_Honshogi.nban85_8五, Masu_Honshogi.nban86_8六, Masu_Honshogi.nban87_8七, Masu_Honshogi.nban88_8八, Masu_Honshogi.nban89_8九, }; foreach (int masuNumber in array) { BAN_SUJIS[8].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } //盤上9筋 { int[] array = new int[] { Masu_Honshogi.nban91_9一, Masu_Honshogi.nban92_9二, Masu_Honshogi.nban93_9三, Masu_Honshogi.nban94_9四, Masu_Honshogi.nban95_9五, Masu_Honshogi.nban96_9六, Masu_Honshogi.nban97_9七, Masu_Honshogi.nban98_9八, Masu_Honshogi.nban99_9九, }; foreach (int masuNumber in array) { BAN_SUJIS[9].AddElement(Masu_Honshogi.Query_Basho(masuNumber)); } } Masu_Honshogi.masus_All = new SyElement[] { Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 0),//1一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 1), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 2), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 3), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 4), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 5), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 6), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 7), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 8), //1九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 9), //[9]2一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 10), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 11), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 12), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 13), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 14), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 15), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 16), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 17), //2九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 18), //[18]3一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 19), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 20), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 21), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 22), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 23), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 24), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 25), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 26), //3九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 27), //[27]4一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 28), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 29), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 30), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 31), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 32), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 33), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 34), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 35), //4九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 36), //[36]5一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 37), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 38), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 39), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 40), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 41), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 42), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 43), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 44), //5九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 45), //[45]6一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 46), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 47), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 48), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 49), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 50), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 51), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 52), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 53), //6九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 54), //[54]7一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 55), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 56), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 57), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 58), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 59), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 60), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 61), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 62), //7九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 63), //[63]8一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 64), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 65), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 66), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 67), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 68), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 69), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 70), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 71), //8九 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 72), //[72]9一 Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 73), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 74), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 75), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 76), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 77), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 78), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 79), Masu_Honshogi.Query_Basho(Masu_Honshogi.nban11_1一 + 80),//[80]9九 //先手駒台 Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 0),//[81] Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 1), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 2), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 3), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 4), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 5), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 6), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 7), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 8), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 9), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 10), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 11), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 12), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 13), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 14), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 15), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 16), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 17), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 18), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 19), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 20), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 21), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 22), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 23), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 24), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 25), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 26), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 27), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 28), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 29), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 30), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 31), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 32), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 33), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 34), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 35), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 36), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 37), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 38), Masu_Honshogi.Query_Basho(Masu_Honshogi.nsen01 + 39), //後手駒台 Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 0),//[121] Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 1), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 2), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 3), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 4), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 5), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 6), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 7), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 8), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 9), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 10), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 11), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 12), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 13), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 14), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 15), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 16), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 17), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 18), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 19), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 20), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 21), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 22), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 23), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 24), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 25), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 26), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 27), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 28), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 29), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 30), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 31), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 32), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 33), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 34), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 35), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 36), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 37), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 38), Masu_Honshogi.Query_Basho(Masu_Honshogi.ngo01 + 39), //駒袋 Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 0),//[161] fukuro01 Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 1), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 2), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 3), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 4), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 5), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 6), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 7), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 8), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 9), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 10), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 11), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 12), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 13), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 14), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 15), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 16), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 17), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 18), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 19), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 20), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 21), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 22), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 23), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 24), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 25), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 26), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 27), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 28), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 29), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 30), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 31), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 32), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 33), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 34), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 35), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 36), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 37), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 38), Masu_Honshogi.Query_Basho(Masu_Honshogi.nfukuro01 + 39), Masu_Honshogi.Query_Basho(Masu_Honshogi.nError)//[201] }; Masu_Honshogi.items_81 = new SyElement[81]; for (int i = 0; i < 81; i++) { Masu_Honshogi.items_81[i] = Masu_Honshogi.masus_All[i]; } }
/// <summary> /// 駒を取る動き。 /// </summary> private static void Do61_KomaToru( IMoveHalf dst, SkyConst susunda_Sky_orNull_before,//駒を取られたとき、局面を変更します。 out Finger out_figFoodKoma, out RO_Star out_food_koma, out Playerside pside, out SyElement akiMasu ) { RO_Star dstKoma = Util_Starlightable.AsKoma(dst.Now); //---------- // 将棋盤上のその場所に駒はあるか //---------- out_figFoodKoma = Util_Sky_FingersQuery.InMasuNow(susunda_Sky_orNull_before, dstKoma.Masu).ToFirst();//盤上 if (Fingers.Error_1 != out_figFoodKoma) { //>>>>> 指した先に駒があったなら // // 取られる駒 // out_food_koma = Util_Starlightable.AsKoma(susunda_Sky_orNull_before.StarlightIndexOf(out_figFoodKoma).Now); #if DEBUG Logger.Trace($"駒取った={out_food_koma.Komasyurui}{Environment.NewLine}"); #endif // // 取られる駒は、駒置き場の空きマスに移動させます。 // Okiba okiba; switch (dstKoma.Pside) { case Playerside.P1: { okiba = Okiba.Sente_Komadai; pside = Playerside.P1; } break; case Playerside.P2: { okiba = Okiba.Gote_Komadai; pside = Playerside.P2; } break; default: { //>>>>> エラー: 先後がおかしいです。 throw new Exception($@"エラー: 先後がおかしいです。 dst.Pside={dstKoma.Pside}"); } } // // 駒台に駒を置く動き // { // 駒台の空きスペース akiMasu = Util_IttesasuRoutine.GetKomadaiKomabukuroSpace(okiba, susunda_Sky_orNull_before); if (Masu_Honshogi.IsErrorBasho(akiMasu)) { //>>>>> エラー: 駒台に空きスペースがありませんでした。 throw new Exception($@"エラー: 駒台に空きスペースがありませんでした。 駒台={Okiba.Gote_Komadai}"); } //>>>>> 駒台に空きスペースがありました。 } } else { out_food_koma = null; pside = Playerside.Empty; akiMasu = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError); } }
private void StringToObject() { this.masubetuKoma_banjo = new Dictionary <int, RO_Star>(); // 将棋の駒40個の場所を確認します。 this.RO_SfenStartpos.Foreach_Masu201((int masuHandle, string masuString, ref bool toBreak) => { switch (masuString) { case "P": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.P)); break; case "L": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.L)); break; case "N": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.N)); break; case "S": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.S)); break; case "G": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.G)); break; case "K": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.K)); break; case "R": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.R)); break; case "B": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.B)); break; case "+P": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PP)); break; case "+L": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PL)); break; case "+N": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PN)); break; case "+S": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PS)); break; case "+R": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PR)); break; case "+B": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P1, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PB)); break; case "p": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.P)); break; case "l": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.L)); break; case "n": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.N)); break; case "s": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.S)); break; case "g": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.G)); break; case "k": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.K)); break; case "r": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.R)); break; case "b": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.B)); break; case "+p": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PP)); break; case "+l": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PL)); break; case "+n": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PN)); break; case "+s": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PS)); break; case "+r": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PR)); break; case "+b": this.masubetuKoma_banjo.Add(masuHandle, new RO_Star(Playerside.P2, Masu_Honshogi.Query_Basho(masuHandle), PieceType.PB)); break; case "": // 空っぽの升。 break; default: throw new Exception($"未対応のmoji=[{masuString}]"); } }); Debug.Assert(this.masubetuKoma_banjo.Count == 40, $"将棋の駒の数が40個ではありませんでした。[{this.masubetuKoma_banjo.Count}]"); }