/// <summary> /// 駒のハンドル(*1)を返します。 /// /// *1…将棋の駒1つ1つに付けられた番号です。 /// /// </summary> /// <param name="syurui"></param> /// <param name="hKomas"></param> /// <returns></returns> public static Fingers InKomasyuruiNow(SkyConst src_Sky, PieceType syurui) { Fingers figKomas = new Fingers(); foreach (Finger figKoma in Finger_Honshogi.Items_KomaOnly) { RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(figKoma).Now); if (Util_Komasyurui14.Matches(syurui, Util_Komahaiyaku184.Syurui(koma.Haiyaku))) { figKomas.Add(figKoma); } } return(figKomas); }
/// <summary> /// 駒の種類(不成として扱います)を指定して、駒を検索します。 /// </summary> /// <param name="okiba"></param> /// <param name="komasyurui"></param> /// <param name="uc_Main"></param> /// <returns>無ければ -1</returns> public static Finger InOkibaSyuruiNowIgnoreCase(SkyConst srcSky, Okiba okiba, PieceType komasyurui) { Finger found = Fingers.Error_1; PieceType syuruiNarazuCase = Util_Komasyurui14.NarazuCaseHandle(komasyurui); foreach (Finger finger in Finger_Honshogi.Items_KomaOnly) { RO_Star koma = Util_Starlightable.AsKoma(srcSky.StarlightIndexOf(finger).Now); if (Conv_SyElement.ToOkiba(koma.Masu) == okiba && Util_Komasyurui14.Matches(koma.ToNarazuCase(), syuruiNarazuCase)) { found = finger; break; } } return(found); }
/// <summary> /// ************************************************************************************************************************ /// 駒のハンドルを返します。 : 置き場、種類 /// ************************************************************************************************************************ /// </summary> /// <param name="okiba"></param> /// <param name="syurui"></param> /// <param name="kifu"></param> /// <returns></returns> public static Fingers InOkibaKomasyuruiNow(SkyConst src_Sky, Okiba okiba, PieceType syurui) { Fingers komas = new Fingers(); foreach (Finger figKoma in Finger_Honshogi.Items_KomaOnly) { RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(figKoma).Now); if ( okiba == Conv_SyElement.ToOkiba(koma.Masu) && Util_Komasyurui14.Matches(syurui, koma.Komasyurui) // Util_Komahaiyaku184.Syurui(koma.Haiyaku) ) { komas.Add(figKoma); } } return(komas); }
/// <summary> /// 将棋盤上での検索 /// </summary> /// <param name="srcAll">候補マス</param> /// <param name="komas"></param> /// <returns></returns> public static bool Query_Koma( Playerside pside, PieceType syurui, SySet <SyElement> srcAll, SkyConst src_Sky,//KifuTree kifu, out Finger foundKoma ) { //SkyConst src_Sky = kifu.CurNode.Value.ToKyokumenConst; bool hit = false; foundKoma = Fingers.Error_1; foreach (New_Basho masu1 in srcAll.Elements)//筋・段。(先後、種類は入っていません) { foreach (Finger koma1 in Finger_Honshogi.Items_KomaOnly) { RO_Star koma2 = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(koma1).Now); if (pside == koma2.Pside && Okiba.ShogiBan == Conv_SyElement.ToOkiba(koma2.Masu) && Util_Komasyurui14.Matches(syurui, Util_Komahaiyaku184.Syurui(koma2.Haiyaku)) && masu1 == koma2.Masu ) { // 候補マスにいた //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> hit = true; foundKoma = koma1; break; } } } return(hit); }