public static SyElement OkibaSujiDanToMasu(Okiba okiba, int masuHandle) { switch (Conv_SyElement.ToOkiba(masuHandle)) { case Okiba.Sente_Komadai: masuHandle -= Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(Okiba.Sente_Komadai)); break; case Okiba.Gote_Komadai: masuHandle -= Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(Okiba.Gote_Komadai)); break; case Okiba.KomaBukuro: masuHandle -= Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(Okiba.KomaBukuro)); break; case Okiba.ShogiBan: // ใใฎใใพใพ break; default: // ใจใฉใผ break; } masuHandle = masuHandle + Conv_SyElement.ToMasuNumber(Conv_Okiba.GetFirstMasuFromOkiba(okiba)); return(Conv_MasuHandle.ToMasu(masuHandle)); }
/// <summary> /// ๆฌกใฎ๏ผๆใใผใฟใไฝใใพใ(*1) /// /// *1โฆ็ฌฆๅท๏ผใโฒ๏ผ๏ผ้ไธใใๅ ใซใใ7968ใใไฝใใพใใ /// /// ๏ผ[ๅ็]ใ[ใณใ้ใ]ใงๅผใณๅบใใใพใ๏ผ /// </summary> /// <returns></returns> public static void ToMove( string strPside, //โฒโณ string strSuji, //123โฆ9ใ๏ผ๏ผ๏ผโฆ๏ผใไธไบไธโฆไน string strDan, //123โฆ9ใ๏ผ๏ผ๏ผโฆ๏ผใไธไบไธโฆไน string strDou, // โๅโ string strSrcSyurui, //(ๆญฉ|้ฆ|ๆก|โฆ string strMigiHidari, // ๅณ|ๅทฆโฆ string strAgaruHiku, // ไธ|ๅผ string strNariNarazu, //ๆ|ไธๆ string strDaHyoji, //ๆ out IMove move, KifuTree kifu ) { Node <IMove, KyokumenWrapper> siteiNode = kifu.CurNode; SkyConst src_Sky = siteiNode.Value.KyokumenConst; //------------------------------ // ็ฌฆๅท็ขบๅฎ //------------------------------ MigiHidari migiHidari = Conv_String268.Str_ToMigiHidari(strMigiHidari); AgaruHiku agaruHiku = Conv_String268.Str_ToAgaruHiku(strAgaruHiku); // ไธ|ๅผ NariNarazu nariNarazu = Conv_String268.Nari_ToBool(strNariNarazu); //ๆ DaHyoji daHyoji = Conv_String268.Str_ToDaHyoji(strDaHyoji); //ๆ PieceType srcSyurui = Conv_String268.Str_ToSyurui(strSrcSyurui); //------------------------------ // //------------------------------ Playerside pside = Conv_String268.Pside_ToEnum(strPside); SyElement dstMasu; if ("ๅ" == strDou) { // 1ๆๅใฎ็ญใๆฎตใๆฑใใใฎใซไฝฟใใพใใ RO_Star koma = Util_Starlightable.AsKoma(siteiNode.Key.Now); dstMasu = koma.Masu; } else { dstMasu = Util_Masu10.OkibaSujiDanToMasu( Okiba.ShogiBan, Conv_Suji.ToInt(strSuji), Conv_Suji.ToInt(strDan) ); } // TODO: ้งๅฐใซใใใใใใใชใใ Okiba srcOkiba1 = Okiba.ShogiBan; //Okiba.FUMEI_FUGO_YOMI_CHOKUGO;// Okiba.SHOGIBAN; if (DaHyoji.Visible == daHyoji) { if (Playerside.P2 == pside) { srcOkiba1 = Okiba.Gote_Komadai; } else { srcOkiba1 = Okiba.Sente_Komadai; } } // SyElement dst1 = dstMasu; Finger foundKoma = Fingers.Error_1; //---------- // ้งๅฐใฎ้งใ(ๆ็คบ็ใซ)ๆใคใชใ //---------- bool utsu = false;//้งๅฐใฎ้งใๆใคใชใ็ if (DaHyoji.Visible == daHyoji) { utsu = true; goto gt_EndShogiban; } if (PieceType.P == srcSyurui) { #region ๆญฉ //************************************************************ // ๆญฉ //************************************************************ //---------- // ๅ่ฃใใน //---------- //โโโฌโโฌโโ //โ โ โ โ //โโโผโโผโโค //โ โ่ณโ โ //โโโผโโผโโค //โ โ๏ผฅโ โ //โโโดโโดโโ bool isE = true; SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isE) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅผ(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.R == srcSyurui) { #region ้ฃ //************************************************************ // ้ฃ //************************************************************ //---------- // ๅ่ฃใใน //---------- // โโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโ // โ โ โ โ โ โ โ โ โA7โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA6โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA5โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA4โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โ โ โ โ โ โA3โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA2โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA1โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA0โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โG7โG6โG5โG4โG3โG2โG1โG0โ่ณโC0โC1โC2โC3โC4โC5โC6โC7โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE0โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE1โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE2โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE3โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โ โ โ โ โ โE4โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE5โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE6โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE7โ โ โ โ โ โ โ โ โ // โโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโ bool isA = true; bool isC = true; bool isE = true; bool isG = true; switch (agaruHiku) { case AgaruHiku.Yoru: isA = false; isE = false; break; case AgaruHiku.Agaru: isA = false; isC = false; isG = false; break; case AgaruHiku.Hiku: isC = false; isE = false; isG = false; break; } switch (migiHidari) { case MigiHidari.Migi: isA = false; isE = false; isG = false; break; case MigiHidari.Hidari: isA = false; isC = false; isE = false; break; case MigiHidari.Sugu: isA = false; isC = false; isG = false; break; } SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isA) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปไธ(pside, dst1)); } if (isC) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๅฐ(pside, dst1)); } if (isE) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๅผ(pside, dst1)); } if (isG) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆป(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.B == srcSyurui) { #region ่ง //************************************************************ // ่ง //************************************************************ //---------- // ๅ่ฃใใน //---------- // โโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโ // โH7โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โB7โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โH6โ โ โ โ โ โ โ โ โ โ โ โ โ โB6โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โH5โ โ โ โ โ โ โ โ โ โ โ โB5โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โH4โ โ โ โ โ โ โ โ โ โB4โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โ โH3โ โ โ โ โ โ โ โB3โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โH2โ โ โ โ โ โB2โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โH1โ โ โ โB1โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โH0โ โB0โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โ่ณโ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โF0โ โD0โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โF1โ โ โ โD1โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โF2โ โ โ โ โ โD2โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โF3โ โ โ โ โ โ โ โD3โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โF4โ โ โ โ โ โ โ โ โ โD4โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โF5โ โ โ โ โ โ โ โ โ โ โ โD5โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โF6โ โ โ โ โ โ โ โ โ โ โ โ โ โD6โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โF7โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โD7โ // โโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโ bool isB = true; bool isD = true; bool isF = true; bool isH = true; switch (agaruHiku) { case AgaruHiku.Yoru: isB = false; isD = false; isF = false; isH = false; break; case AgaruHiku.Agaru: isB = false; isH = false; break; case AgaruHiku.Hiku: isB = false; isH = false; break; } switch (migiHidari) { case MigiHidari.Migi: isF = false; isH = false; break; case MigiHidari.Hidari: isB = false; isD = false; break; case MigiHidari.Sugu: isD = false; isF = false; break; } SySet_Default <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isB) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆ(pside, dst1)); } if (isD) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆฒ(pside, dst1)); } if (isF) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆป้(pside, dst1)); } if (isH) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆตฎ(pside, dst1)); } //---------- // ๅ่ฃใใน๏ผข //---------- if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.L == srcSyurui) { #region ้ฆ //************************************************************ // ้ฆ //************************************************************ //---------- // ๅ่ฃใใน //---------- // โโโฌโโฌโโ // โ โ่ณโ โ // โโโผโโผโโค // โ โE0โ โ // โโโผโโผโโค // โ โE1โ โ // โโโผโโผโโค // โ โE2โ โ // โโโผโโผโโค // โ โE3โ โ // โโโผโโผโโค // โ โE4โ โ // โโโผโโผโโค // โ โE5โ โ // โโโผโโผโโค // โ โE6โ โ // โโโผโโผโโค // โ โE7โ โ // โโโดโโดโโ bool isE = true; SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isE) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๅผ(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.N == srcSyurui) { #region ๆก //************************************************************ // ๆก //************************************************************ //---------- // ๅ่ฃใใน //---------- //โโโใโโโ //โ โใโ โ //โโโผโโผโโค //โใโ โ โ //โโโผโโผโโค //โใโ่ณโ โๅ ๆใใ่ฆใๅณ //โโโผโโผโโค //โใโ โ โ //โโโผโโผโโค //โ๏ผชโใโ๏ผฉโ //โโโใโโโ bool isI = true; bool isJ = true; switch (agaruHiku) { case AgaruHiku.Yoru: isI = false; isJ = false; break; case AgaruHiku.Agaru: break; case AgaruHiku.Hiku: isI = false; isJ = false; break; } switch (migiHidari) { case MigiHidari.Migi: isJ = false; break; case MigiHidari.Hidari: isI = false; break; case MigiHidari.Sugu: isI = false; isJ = false; break; } SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isI) { srcAll.AddSupersets(KomanoKidou.SrcKeimatobi_ๆป่ทณ(pside, dst1)); } if (isJ) { srcAll.AddSupersets(KomanoKidou.SrcKeimatobi_ๆป้ง(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.S == srcSyurui) { #region ้ //************************************************************ // ้ //************************************************************ //---------- // ๅ่ฃใใน //---------- //โโโฌโโฌโโ //โ๏ผจโ โ๏ผขโ //โโโผโโผโโค //โใโ่ณโ โๅ ๆใใ่ฆใๅณ //โโโผโโผโโค //โ๏ผฆโ๏ผฅโ๏ผคโ //โโโดโโดโโ bool isB = true; bool isD = true; bool isE = true; bool isF = true; bool isH = true; switch (agaruHiku) { case AgaruHiku.Yoru: isB = false; isD = false; isE = false; isF = false; isH = false; break; case AgaruHiku.Agaru: isB = false; isH = false; break; case AgaruHiku.Hiku: isD = false; isE = false; isF = false; break; } switch (migiHidari) { case MigiHidari.Migi: isE = false; isF = false; isH = false; break; case MigiHidari.Hidari: isB = false; isD = false; isE = false; break; case MigiHidari.Sugu: isB = false; isD = false; isF = false; isH = false; break; } SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isB) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆ(pside, dst1)); } if (isD) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆฒ(pside, dst1)); } if (isE) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅผ(pside, dst1)); } if (isF) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆป้(pside, dst1)); } if (isH) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆตฎ(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if ( PieceType.G == srcSyurui || PieceType.PP == srcSyurui || PieceType.PL == srcSyurui || PieceType.PN == srcSyurui || PieceType.PS == srcSyurui ) { #region โณ้ใโณใจ้ใโณๆ้ฆใโณๆๆกใโณๆ้ //************************************************************ // โณ้ใโณใจ้ใโณๆ้ฆใโณๆๆกใโณๆ้ //************************************************************ //---------- // ๅ่ฃใใน //---------- //โโโฌโโฌโโ //โ โ๏ผกโ โ //โโโผโโผโโค //โ๏ผงโ่ณโ๏ผฃโๅ ๆใใ่ฆใๅณ //โโโผโโผโโค //โ๏ผฆโ๏ผฅโ๏ผคโ //โโโดโโดโโ bool isA = true; bool isC = true; bool isD = true; bool isE = true; bool isF = true; bool isG = true; switch (agaruHiku) { case AgaruHiku.Yoru: isA = false; isD = false; isE = false; isF = false; break; case AgaruHiku.Agaru: isA = false; isC = false; isG = false; break; case AgaruHiku.Hiku: isC = false; isD = false; isE = false; isF = false; isG = false; break; } switch (migiHidari) { case MigiHidari.Migi: isA = false; isE = false; isF = false; isG = false; break; case MigiHidari.Hidari: isA = false; isC = false; isD = false; isE = false; break; case MigiHidari.Sugu: isA = false; isC = false; isD = false; isF = false; isG = false; break; } SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isA) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปไธ(pside, dst1)); } if (isC) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅฐ(pside, dst1)); } if (isD) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆฒ(pside, dst1)); } if (isE) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅผ(pside, dst1)); } if (isF) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆป้(pside, dst1)); } if (isG) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆป(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.K == srcSyurui) { #region ็ //************************************************************ // ็ //************************************************************ //---------- // ๅ่ฃใใน //---------- //โโโฌโโฌโโ //โ๏ผจโ๏ผกโ๏ผขโ //โโโผโโผโโค //โ๏ผงโ่ณโ๏ผฃโๅ ๆใใ่ฆใๅณ //โโโผโโผโโค //โ๏ผฆโ๏ผฅโ๏ผคโ //โโโดโโดโโ bool isA = true; bool isB = true; bool isC = true; bool isD = true; bool isE = true; bool isF = true; bool isG = true; bool isH = true; SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isA) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปไธ(pside, dst1)); } if (isB) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆ(pside, dst1)); } if (isC) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅฐ(pside, dst1)); } if (isD) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆฒ(pside, dst1)); } if (isE) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅผ(pside, dst1)); } if (isF) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆป้(pside, dst1)); } if (isG) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆป(pside, dst1)); } if (isH) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆตฎ(pside, dst1)); } // ็ใฏ๏ผใคใงใใ if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.PR == srcSyurui) { #region ็ซ //************************************************************ // ็ซ //************************************************************ //---------- // ๅ่ฃใใน //---------- // โโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโ // โ โ โ โ โ โ โ โ โA7โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA6โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA5โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA4โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โ โ โ โ โ โA3โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA2โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โA1โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ๏ผจโA0โ๏ผขโ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โG7โG6โG5โG4โG3โG2โG1โG0โ่ณโC0โC1โC2โC3โC4โC5โC6โC7โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ๏ผฆโE0โ๏ผคโ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE1โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE2โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE3โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โ โ โ โ โ โE4โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE5โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE6โ โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ โE7โ โ โ โ โ โ โ โ โ // โโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโ bool isA = true; bool isB = true; bool isC = true; bool isD = true; bool isE = true; bool isF = true; bool isG = true; bool isH = true; switch (agaruHiku) { case AgaruHiku.Yoru: isA = false; isB = false; isD = false; isE = false; isF = false; isH = false; break; case AgaruHiku.Agaru: isA = false; isB = false; isC = false; isG = false; isH = false; break; case AgaruHiku.Hiku: isC = false; isD = false; isE = false; isF = false; isG = false; break; } switch (migiHidari) { case MigiHidari.Migi: isA = false; isE = false; isF = false; isG = false; isH = false; break; case MigiHidari.Hidari: isA = false; isB = false; isC = false; isD = false; isE = false; break; case MigiHidari.Sugu: isA = false; isB = false; isC = false; isD = false; isF = false; isG = false; isH = false; break; } SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isA) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปไธ(pside, dst1)); } if (isB) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆ(pside, dst1)); } if (isC) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๅฐ(pside, dst1)); } if (isD) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆฒ(pside, dst1)); } if (isE) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๅผ(pside, dst1)); } if (isF) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆป้(pside, dst1)); } if (isG) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆป(pside, dst1)); } if (isH) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆตฎ(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else if (PieceType.PB == srcSyurui) { #region ้ฆฌ //************************************************************ // ้ฆฌ //************************************************************ //---------- // ๅ่ฃใใน //---------- // โโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโ // โH7โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โB7โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โH6โ โ โ โ โ โ โ โ โ โ โ โ โ โB6โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โH5โ โ โ โ โ โ โ โ โ โ โ โB5โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โH4โ โ โ โ โ โ โ โ โ โB4โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โ โH3โ โ โ โ โ โ โ โB3โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โH2โ โ โ โ โ โB2โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โH1โ โ โ โB1โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โH0โ๏ผกโB0โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โ๏ผงโ่ณโ๏ผฃโ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โ โF0โ๏ผฅโD0โ โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โ โF1โ โ โ โD1โ โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โ โF2โ โ โ โ โ โD2โ โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โ โ โF3โ โ โ โ โ โ โ โD3โ โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค //ใโ โ โ โF4โ โ โ โ โ โ โ โ โ โD4โ โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โ โF5โ โ โ โ โ โ โ โ โ โ โ โD5โ โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โ โF6โ โ โ โ โ โ โ โ โ โ โ โ โ โD6โ โ // โโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโผโโค // โF7โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โD7โ // โโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโ bool isA = true; bool isB = true; bool isC = true; bool isD = true; bool isE = true; bool isF = true; bool isG = true; bool isH = true; switch (agaruHiku) { case AgaruHiku.Yoru: isA = false; isB = false; isD = false; isE = false; isF = false; isH = false; break; case AgaruHiku.Agaru: isA = false; isB = false; isC = false; isG = false; isH = false; break; case AgaruHiku.Hiku: isC = false; isD = false; isE = false; isF = false; isG = false; break; } switch (migiHidari) { case MigiHidari.Migi: isA = false; isE = false; isF = false; isG = false; isH = false; break; case MigiHidari.Hidari: isA = false; isB = false; isC = false; isD = false; isE = false; break; case MigiHidari.Sugu: isA = false; isB = false; isC = false; isD = false; isF = false; isG = false; isH = false; break; } SySet <SyElement> srcAll = new SySet_Default <SyElement>("J็ฌฆๅท"); if (isA) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปไธ(pside, dst1)); } if (isB) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆ(pside, dst1)); } if (isC) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅฐ(pside, dst1)); } if (isD) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆฒ(pside, dst1)); } if (isE) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๅผ(pside, dst1)); } if (isF) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆป้(pside, dst1)); } if (isG) { srcAll.AddSupersets(KomanoKidou.SrcIppo_ๆปๆป(pside, dst1)); } if (isH) { srcAll.AddSupersets(KomanoKidou.SrcKantu_ๆปๆตฎ(pside, dst1)); } if (Query341_OnSky.Query_Koma(pside, srcSyurui, srcAll, kifu.CurNode.Value.KyokumenConst, out foundKoma)) { srcOkiba1 = Okiba.ShogiBan; goto gt_EndSyurui; } #endregion } else { #region ใจใฉใผ //************************************************************ // ใจใฉใผ //************************************************************ #endregion } gt_EndShogiban: if (Fingers.Error_1 == foundKoma && utsu) { // ้งๅฐใฎ้งใ(ๆ็คบ็ใซ)ๆใกใพใใ //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Fingers komas = Util_Sky_FingersQuery.InOkibaPsideKomasyuruiNow( siteiNode.Value.KyokumenConst, srcOkiba1, pside, srcSyurui);//(2015-08-05 01:04)ๅคๆด //Fingers komas = Util_Sky051Fingers.Fingers_ByOkibaPsideSyuruiNow_OldSpec( // siteiNode.Value.ToKyokumenConst, srcOkiba1, pside, srcSyurui); if (0 < komas.Count) { switch (pside) { case Playerside.P2: srcOkiba1 = Okiba.Gote_Komadai; break; case Playerside.P1: srcOkiba1 = Okiba.Sente_Komadai; break; default: srcOkiba1 = Okiba.Empty; break; } foundKoma = komas[0]; goto gt_EndSyurui; } } gt_EndSyurui: int srcMasuHandle1; if (Fingers.Error_1 != foundKoma) { // ๅฐๆฃ็คใฎไธใซ้งใใใใพใใใ //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(foundKoma).Now); srcMasuHandle1 = Conv_SyElement.ToMasuNumber(koma.Masu); } else { // ๏ผ็ฌฆๅทใซๆธใใใฆใใพใใใ๏ผใๆใใฎใจใใ //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> switch (pside) { case Playerside.P2: srcOkiba1 = Okiba.Gote_Komadai; break; case Playerside.P1: srcOkiba1 = Okiba.Sente_Komadai; break; default: srcOkiba1 = Okiba.Empty; break; } Debug.Assert(0 < siteiNode.Value.KyokumenConst.Count, "ๆใฎๅ ใ 1ๅๆชๆบใ"); // ้งๅฐใใใ่ฉฒๅฝใใ้งใๆขใใพใใ Fingers daiKomaFgs = Util_Sky_FingersQuery.InOkibaPsideKomasyuruiNow( siteiNode.Value.KyokumenConst, srcOkiba1, pside, srcSyurui);//(2015-08-05 01:04)ๅคๆด //Fingers daiKomaFgs = Util_Sky051Fingers.Fingers_ByOkibaPsideSyuruiNow_OldSpec( // siteiNode.Value.ToKyokumenConst, srcOkiba1, pside, srcSyurui);//(2014-10-04 12:46)ๅคๆด Debug.Assert(0 < daiKomaFgs.Count, $"ใใฃใณใฌใผใบใ 1ๅๆชๆบใ srcOkiba1=[{srcOkiba1}] pside=[{pside}] srcSyurui=[{srcSyurui}]"); // 1ๅใฏใใใใใใฏใ Finger hitKoma = daiKomaFgs[0];//โฒ๏ผ[ใณใ้ใ]ใใฟใณใ้ฃๆใใใจใใจใฉใผใซใชใใพใใ RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(hitKoma).Now); srcMasuHandle1 = Conv_SyElement.ToMasuNumber(koma.Masu); } PieceType dstSyurui; if (NariNarazu.Nari == nariNarazu) { // ๆใใพใ dstSyurui = Util_Komasyurui14.NariCaseHandle[(int)srcSyurui]; } else { // ใใฎใพใพใงใใ dstSyurui = srcSyurui; } // ๏ผๆใใใใผใฟใซใใพใใ move = new RO_Starbeam( //foundKoma,//TODO: new RO_Star( pside, Conv_MasuHandle.ToMasu(srcMasuHandle1), srcSyurui ), new RO_Star( pside, dstMasu,//็ฌฆๅทใฏๅฐๆฃ็คใฎๅ็ฎใงใใ dstSyurui ), PieceType.None // ็ฌฆๅทใใใฏใๅใฃใ้งใฎ็จฎ้กใฏๅใใใชใใใ ใโใใ ใใใฐใงใฏใชใโใใใจใง่ชฟในใโ ); }