public static bool IsKomabukuro(Komahaiyaku185 haiyaku) { bool result = false; switch (haiyaku) { case Komahaiyaku185.n172_駒袋歩: case Komahaiyaku185.n173_駒袋香: case Komahaiyaku185.n174_駒袋桂: case Komahaiyaku185.n175_駒袋銀: case Komahaiyaku185.n176_駒袋金: case Komahaiyaku185.n177_駒袋王: case Komahaiyaku185.n178_駒袋飛: case Komahaiyaku185.n179_駒袋角: case Komahaiyaku185.n180_駒袋竜: case Komahaiyaku185.n181_駒袋馬: case Komahaiyaku185.n182_駒袋と金: case Komahaiyaku185.n183_駒袋杏: case Komahaiyaku185.n184_駒袋圭: case Komahaiyaku185.n185_駒袋全: result = true; break; } return(result); }
public RO_Star(Playerside pside, SyElement masu, Komahaiyaku185 haiyaku) { this.startype = BoardItem.Koma; this.pside = pside; this.masu = masu; this.komasyurui = Util_Komahaiyaku184.Syurui(haiyaku); }
private void PaintText(Graphics g, RO_Star komaKs, Point location) { if (null == komaKs) { goto gt_EndMethod; } Komahaiyaku185 haiyaku = komaKs.Haiyaku; if (haiyaku == Komahaiyaku185.n000_未設定) { // 配役未設定時は、普通に駒を描画します。 g.DrawString(komaKs.Text_Label, new Font(FontFamily.GenericSerif, 20.0f), Brushes.Black, location); } else { // 配役設定時は、絵修飾字を描画します。 string text = Util_Komahaiyaku184.Name2[(int)haiyaku]; string text1; string text2; string text3; if (4 < text.Length) { text1 = text.Substring(0, 2); text2 = text.Substring(2, 2); text3 = text.Substring(4, text.Length - 4); } else if (2 < text.Length) { text1 = text.Substring(0, 2); text2 = text.Substring(2, text.Length - 2); text3 = ""; } else { text1 = text; text2 = ""; text3 = ""; } // 1行目 g.DrawString(text1, new Font(FontFamily.GenericSerif, 10.0f), Brushes.Black, location); // 2行目 g.DrawString(text2, new Font(FontFamily.GenericSerif, 10.0f), Brushes.Black, new Point(location.X, location.Y + 11)); // 3行目 g.DrawString(text3, new Font(FontFamily.GenericSerif, 10.0f), Brushes.Black, new Point(location.X, location.Y + 22)); } gt_EndMethod: ; }
public static bool IsKomadai(Komahaiyaku185 haiyaku) { bool result = false; switch (haiyaku) { case Komahaiyaku185.n164_歩打: case Komahaiyaku185.n165_香打: case Komahaiyaku185.n166_桂打: case Komahaiyaku185.n167_銀打: case Komahaiyaku185.n168_金打: case Komahaiyaku185.n169_王打: case Komahaiyaku185.n170_飛打: case Komahaiyaku185.n171_角打: result = true; break; } return(result); }
/// <summary> /// /// </summary> /// <returns>マス番号</returns> public static int Move_RandomChoice(Komahaiyaku185 haiyaku) { int result; if (Util_Komahaiyaku184.KukanMasus[haiyaku].Count <= 0) { result = -1; goto gt_EndMethod; } SySet <SyElement> michi187 = Util_Komahaiyaku184.KukanMasus[haiyaku][KwRandom.Random.Next(Util_Komahaiyaku184.KukanMasus[haiyaku].Count)]; List <int> elements = new List <int>(); foreach (New_Basho element in michi187.Elements) { elements.Add(element.MasuNumber); } result = elements[KwRandom.Random.Next(elements.Count)]; gt_EndMethod: return(result); }
/// <summary> /// 種類。 /// </summary> public static PieceType Syurui(Komahaiyaku185 haiyaku) { return(Util_Komahaiyaku184.syurui[(int)haiyaku]); }
/// <summary> /// ロードした内容を確認するときに使います。 /// </summary> /// <returns></returns> public static string LogHtml() { StringBuilder sb = new StringBuilder(); sb.AppendLine("<html>"); sb.AppendLine("<head>"); sb.AppendLine(" <title>強制転成表</title>"); sb.AppendLine(" <style type=\"text/css\">"); sb.AppendLine(" /* 将棋盤 */"); sb.AppendLine(" table{"); sb.AppendLine(" border-collapse:collapse;"); sb.AppendLine(" border:2px #2b2b2b solid;"); sb.AppendLine(" }"); sb.AppendLine(" td{"); sb.AppendLine(" border:1px #2b2b2b solid;"); sb.AppendLine(" background-color:#ffcc55;"); sb.AppendLine(" width:48px; height:48px;"); sb.AppendLine(" }"); sb.AppendLine(" </style>"); sb.AppendLine("</head>"); sb.AppendLine("<body>"); foreach (KeyValuePair <Komahaiyaku185, Dictionary <int, Komahaiyaku185> > entry1 in Array_ForcePromotion.HaiyakuMap) { sb.Append("<h1>"); sb.Append(entry1.Key); sb.AppendLine("</h1>"); sb.Append("<table>"); // 9一~1一、9二~1二、…9九~1九の順だぜ☆ for (int dan = 1; dan <= 9; dan++) { sb.AppendLine("<tr>"); sb.Append(" "); for (int suji = 9; suji >= 1; suji--) { SyElement masu = Util_Masu10.OkibaSujiDanToMasu(Okiba.ShogiBan, suji, dan); sb.Append("<td>"); if (entry1.Value.ContainsKey(Conv_SyElement.ToMasuNumber(masu))) { // 強制転成が起こるマスなら、画像を出します。 Komahaiyaku185 kh184 = entry1.Value[Conv_SyElement.ToMasuNumber(masu)]; int haiyakuHandle = (int)kh184; sb.Append("<img src=\"../Data/img/train"); if (haiyakuHandle < 10) { sb.Append("00"); } else if (haiyakuHandle < 100) { sb.Append("0"); } sb.Append(haiyakuHandle); sb.Append(".png\" />"); } sb.Append("</td>"); } sb.AppendLine(); sb.AppendLine("</tr>"); } sb.AppendLine("</table>"); } sb.AppendLine("</body>"); sb.AppendLine("</html>"); return(sb.ToString()); }
/// <summary> /// 配役と、升から、次の強制転成配役を求めます。 /// /// /// </summary> /// <param name="currentHaiyaku"></param> /// <param name="masuHandle"></param> /// <returns>転生しないなら 未設定 を返します。</returns> public static Komahaiyaku185 MasuHandleTo_ForcePromotionHaiyaku(IEngineConf engineConf, Komahaiyaku185 currentHaiyaku, int masuHandle, string hint) { Komahaiyaku185 result; Dictionary <int, Komahaiyaku185> map2 = Array_ForcePromotion.HaiyakuMap[currentHaiyaku]; if ( null == map2 || !map2.ContainsKey(masuHandle) ) { result = Komahaiyaku185.n000_未設定; goto gt_EndMethod; } result = map2[masuHandle];//null非許容型 { var logFilePath = engineConf.GetResourceFullPath("N20DebugForcePromotionLog"); StringBuilder sbLog = new StringBuilder(); if (File.Exists(logFilePath)) { sbLog.Append(File.ReadAllText(logFilePath)); } sbLog.AppendLine(); sbLog.AppendLine(hint); sbLog.AppendLine($" 現在の配役=[{currentHaiyaku}]"); sbLog.AppendLine($" masuHandle=[{masuHandle}]"); sbLog.AppendLine($" 強制転成後の配役=[{result}]"); File.WriteAllText(logFilePath, sbLog.ToString()); } gt_EndMethod: return(result); }
public static List <List <string> > Load(string path, Encoding encoding) { StringBuilder sbLog = new StringBuilder(); List <List <string> > rows = new List <List <string> >(); foreach (string line in File.ReadAllLines(path, encoding)) { rows.Add(CsvLineParserImpl.UnescapeLineToFieldList(line, ',')); } // 最初の2行は削除。 rows.RemoveRange(0, 2); // 各行の先頭3列は削除。 foreach (List <string> row in rows) { row.RemoveRange(0, 3); } //------------------------------ // データ部だけが残っています。 //------------------------------ // コメント行、データ行が交互に出てきます。 // コメント行を削除します。 List <List <string> > rows2; { rows2 = new List <List <string> >(); int rowCount1 = 0; foreach (List <string> row in rows) { // 奇数行がデータです。 if (rowCount1 % 2 == 1) { rows2.Add(row); } rowCount1++; } } #if DEBUG // デバッグ出力 { StringBuilder sb = new StringBuilder(); foreach (List <string> row2 in rows2) { foreach (string field in row2) { sb.Append(field); sb.Append(","); } sb.AppendLine(); } string filepath_HaiyakuLoad1 = EngineConf.GetResourceFullPath("OutputSyuruiToHaiyaku01DataRowOnly"); File.WriteAllText(filepath_HaiyakuLoad1, sb.ToString()); } #endif Data_KomahaiyakuTransition.map = new Dictionary <PieceType, Komahaiyaku185[]>(); int rowCount2 = 0; Komahaiyaku185[] table81 = null; foreach (List <string> row2 in rows2) { if (rowCount2 % 9 == 0) { table81 = new Komahaiyaku185[81]; int syuruiNumber = rowCount2 / 9 + 1; if (15 <= syuruiNumber) { goto gt_EndMethod; } Data_KomahaiyakuTransition.map.Add(Array_Komasyurui.Items_AllElements[syuruiNumber], table81); } //---------- // テーブル作り //---------- int columnCount = 0; foreach (string column in row2) { // 空っぽの列は無視します。 if ("" == column) { goto gt_NextColumn; } // 空っぽでない列の値を覚えます。 // 数値型のはずです。 int cellValue; if (!int.TryParse(column, out cellValue)) { throw new Exception($@"エラー。 path=[{path}] 「配役転換表」に、int型数値でないものが指定されていました。 rowCount=[{rowCount2}] columnCount=[{columnCount}"); } int masuHandle = (8 - columnCount) * 9 + (rowCount2 % 9);//0~80 sbLog.AppendLine($"({rowCount2},{columnCount})[{masuHandle}]{cellValue}"); table81[masuHandle] = Array_Komahaiyaku185.Items[cellValue]; gt_NextColumn: columnCount++; } rowCount2++; } gt_EndMethod: #if DEBUG { string filepath_HaiyakuLoad2 = EngineConf.GetResourceFullPath("OutputSyuruiToHaiyaku02Load"); File.WriteAllText(filepath_HaiyakuLoad2, sbLog.ToString()); } #endif return(rows); }
public static void Assert_Honshogi(SkyConst src_Sky) { Debug.Assert(src_Sky.Count == 40, $"siteiSky.Starlights.Count=[{src_Sky.Count}]");//将棋の駒の数 ////デバッグ //{ // StringBuilder sb = new StringBuilder(); // for (int i = 0; i < 40; i++) // { // sb.Append("駒{i}.種類=[{((RO_Star_KomaKs)siteiSky.StarlightIndexOf(i).Now).Syurui}]\n"); // } // MessageBox.Show(sb.ToString()); //} // 王 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(0).Now).Komasyurui == PieceType.K, $"駒0.種類=[{((RO_Star)src_Sky.StarlightIndexOf(0).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(1).Now).Komasyurui == PieceType.K, $"駒1.種類=[{((RO_Star)src_Sky.StarlightIndexOf(1).Now).Komasyurui}]"); // 飛車 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(2).Now).Komasyurui == PieceType.R || ((RO_Star)src_Sky.StarlightIndexOf(2).Now).Komasyurui == PieceType.PR, $"駒2.種類=[{((RO_Star)src_Sky.StarlightIndexOf(2).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(3).Now).Komasyurui == PieceType.R || ((RO_Star)src_Sky.StarlightIndexOf(3).Now).Komasyurui == PieceType.PR, $"駒3.種類=[{((RO_Star)src_Sky.StarlightIndexOf(3).Now).Komasyurui}]"); // 角 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(4).Now).Komasyurui == PieceType.B || ((RO_Star)src_Sky.StarlightIndexOf(4).Now).Komasyurui == PieceType.PB, $"駒4.種類=[{((RO_Star)src_Sky.StarlightIndexOf(4).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(5).Now).Komasyurui == PieceType.B || ((RO_Star)src_Sky.StarlightIndexOf(5).Now).Komasyurui == PieceType.PB, $"駒5.種類=[{((RO_Star)src_Sky.StarlightIndexOf(5).Now).Komasyurui}]"); // 金 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(6).Now).Komasyurui == PieceType.G, $"駒6.種類=[{((RO_Star)src_Sky.StarlightIndexOf(6).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(7).Now).Komasyurui == PieceType.G, $"駒7.種類=[{((RO_Star)src_Sky.StarlightIndexOf(7).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(8).Now).Komasyurui == PieceType.G, $"駒8.種類=[{((RO_Star)src_Sky.StarlightIndexOf(8).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(9).Now).Komasyurui == PieceType.G, $"駒9.種類=[{((RO_Star)src_Sky.StarlightIndexOf(9).Now).Komasyurui}]"); // 銀 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(10).Now).Komasyurui == PieceType.S || ((RO_Star)src_Sky.StarlightIndexOf(10).Now).Komasyurui == PieceType.PS, $"駒10.種類=[{((RO_Star)src_Sky.StarlightIndexOf(10).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(11).Now).Komasyurui == PieceType.S || ((RO_Star)src_Sky.StarlightIndexOf(11).Now).Komasyurui == PieceType.PS, $"駒11.種類=[{((RO_Star)src_Sky.StarlightIndexOf(11).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(12).Now).Komasyurui == PieceType.S || ((RO_Star)src_Sky.StarlightIndexOf(12).Now).Komasyurui == PieceType.PS, $"駒12.種類=[{((RO_Star)src_Sky.StarlightIndexOf(12).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(13).Now).Komasyurui == PieceType.S || ((RO_Star)src_Sky.StarlightIndexOf(13).Now).Komasyurui == PieceType.PS, $"駒13.種類=[{((RO_Star)src_Sky.StarlightIndexOf(13).Now).Komasyurui}]"); // 桂 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(14).Now).Komasyurui == PieceType.N || ((RO_Star)src_Sky.StarlightIndexOf(14).Now).Komasyurui == PieceType.PN, $"駒14.種類=[{((RO_Star)src_Sky.StarlightIndexOf(14).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(15).Now).Komasyurui == PieceType.N || ((RO_Star)src_Sky.StarlightIndexOf(15).Now).Komasyurui == PieceType.PN, $"駒15.種類=[{((RO_Star)src_Sky.StarlightIndexOf(15).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(16).Now).Komasyurui == PieceType.N || ((RO_Star)src_Sky.StarlightIndexOf(16).Now).Komasyurui == PieceType.PN, $"駒16.種類=[{((RO_Star)src_Sky.StarlightIndexOf(16).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(17).Now).Komasyurui == PieceType.N || ((RO_Star)src_Sky.StarlightIndexOf(17).Now).Komasyurui == PieceType.PN, $"駒17.種類=[{((RO_Star)src_Sky.StarlightIndexOf(17).Now).Komasyurui}]"); // 香 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(18).Now).Komasyurui == PieceType.L || ((RO_Star)src_Sky.StarlightIndexOf(18).Now).Komasyurui == PieceType.PL, $"駒18.種類=[{((RO_Star)src_Sky.StarlightIndexOf(18).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(19).Now).Komasyurui == PieceType.L || ((RO_Star)src_Sky.StarlightIndexOf(19).Now).Komasyurui == PieceType.PL, $"駒19.種類=[{((RO_Star)src_Sky.StarlightIndexOf(19).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(20).Now).Komasyurui == PieceType.L || ((RO_Star)src_Sky.StarlightIndexOf(20).Now).Komasyurui == PieceType.PL, $"駒20.種類=[{((RO_Star)src_Sky.StarlightIndexOf(20).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(21).Now).Komasyurui == PieceType.L || ((RO_Star)src_Sky.StarlightIndexOf(21).Now).Komasyurui == PieceType.PL, $"駒21.種類=[{((RO_Star)src_Sky.StarlightIndexOf(21).Now).Komasyurui}]"); // 歩 Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(22).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(22).Now).Komasyurui == PieceType.PP, "駒22.種類=[{((RO_Star)src_Sky.StarlightIndexOf(22).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(23).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(23).Now).Komasyurui == PieceType.PP, "駒23.種類=[{((RO_Star)src_Sky.StarlightIndexOf(23).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(24).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(24).Now).Komasyurui == PieceType.PP, "駒24.種類=[{((RO_Star)src_Sky.StarlightIndexOf(24).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(25).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(25).Now).Komasyurui == PieceType.PP, "駒25.種類=[{((RO_Star)src_Sky.StarlightIndexOf(25).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(26).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(26).Now).Komasyurui == PieceType.PP, "駒26.種類=[{((RO_Star)src_Sky.StarlightIndexOf(26).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(27).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(27).Now).Komasyurui == PieceType.PP, "駒27.種類=[{((RO_Star)src_Sky.StarlightIndexOf(27).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(28).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(28).Now).Komasyurui == PieceType.PP, "駒28.種類=[{((RO_Star)src_Sky.StarlightIndexOf(28).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(29).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(29).Now).Komasyurui == PieceType.PP, "駒29.種類=[{((RO_Star)src_Sky.StarlightIndexOf(29).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(30).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(30).Now).Komasyurui == PieceType.PP, "駒30.種類=[{((RO_Star)src_Sky.StarlightIndexOf(30).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(31).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(31).Now).Komasyurui == PieceType.PP, "駒31.種類=[{((RO_Star)src_Sky.StarlightIndexOf(31).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(32).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(32).Now).Komasyurui == PieceType.PP, "駒32.種類=[{((RO_Star)src_Sky.StarlightIndexOf(32).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(33).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(33).Now).Komasyurui == PieceType.PP, "駒33.種類=[{((RO_Star)src_Sky.StarlightIndexOf(33).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(34).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(34).Now).Komasyurui == PieceType.PP, "駒34.種類=[{((RO_Star)src_Sky.StarlightIndexOf(34).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(35).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(35).Now).Komasyurui == PieceType.PP, "駒35.種類=[{((RO_Star)src_Sky.StarlightIndexOf(35).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(36).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(36).Now).Komasyurui == PieceType.PP, "駒36.種類=[{((RO_Star)src_Sky.StarlightIndexOf(36).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(37).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(37).Now).Komasyurui == PieceType.PP, "駒37.種類=[{((RO_Star)src_Sky.StarlightIndexOf(37).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(38).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(38).Now).Komasyurui == PieceType.PP, "駒38.種類=[{((RO_Star)src_Sky.StarlightIndexOf(38).Now).Komasyurui}]"); Debug.Assert(((RO_Star)src_Sky.StarlightIndexOf(39).Now).Komasyurui == PieceType.P || ((RO_Star)src_Sky.StarlightIndexOf(39).Now).Komasyurui == PieceType.PP, "駒39.種類=[{((RO_Star)src_Sky.StarlightIndexOf(39).Now).Komasyurui}]"); for (int i = 0; i < 40; i++) { RO_Star koma = (RO_Star)src_Sky.StarlightIndexOf(0).Now; Komahaiyaku185 haiyaku = koma.Haiyaku; if (Okiba.ShogiBan == Conv_SyElement.ToOkiba(koma.Masu)) { Debug.Assert(!Util_KomahaiyakuEx184.IsKomabukuro(haiyaku), "将棋盤の上に、配役:駒袋 があるのはおかしい。"); } //if( // haiyaku==Kh185.n164_歩打 // ) //{ //} //koma.Syurui //Debug.Assert((.Syurui == Ks14.H06_Oh, $"駒0.種類=[{((RO_Star_Koma)siteiSky.StarlightIndexOf(0).Now).Syurui}]"); //sb.Append($"駒{i}.種類=[{((RO_Star_KomaKs)siteiSky.StarlightIndexOf(i).Now).Syurui}]\n"); } }