/// <summary> /// SBookをGikou形式に変換して保存する /// </summary> /// <param name="book"></param> /// <param name="filename"></param> public static void ExportGikou(this SBook book, string filename) { // GikouBook gikouBook = new GikouBook(); { SPosition position = new SPosition(); book.ClearCount(); int cnt = 0; foreach (SBookState state in book.BookStates) { if (state.Count == 0 && ((state.Id == 0) || (state.Position != string.Empty))) { if (state.Position != string.Empty) { Sfen.PositionFromString(position, state.Position); } // 指し手の出力 ルートからの局面以外はやねうら王2016には正しく認識されない WriteMoves(state, position, gikouBook); } cnt++; } } gikouBook.Save(filename); }
/// <summary> /// SBookをYaneuraou book形式に変換して保存する /// </summary> /// <param name="book"></param> /// <param name="filename"></param> public static void ExportYaneuraOUbook(this SBook book, string filename) { // using (StreamWriter wr = new StreamWriter(filename, false, Encoding.UTF8)) { wr.WriteLine("#YANEURAOU-DB2016 1.00"); SPosition position = new SPosition(); book.ClearCount(); int cnt = 0; foreach (SBookState state in book.BookStates) { if (state.Count == 0 && ((state.Id == 0) || (state.Position != string.Empty))) { if (state.Position != string.Empty) { Sfen.PositionFromString(position, state.Position); } // 指し手の出力 ルートからの局面以外はやねうら王2016には正しく認識されない WriteMoves(state, position, wr, 1); } cnt++; } } }
/// <summary> /// SBookをAperyBookに変換して保存する /// </summary> /// <param name="book"></param> /// <param name="filename"></param> public static void ExportApery(this SBook book, string filename) { // 初期局面の出力 AperyBook aperyBook = new AperyBook(); SPosition position = new SPosition(); book.ClearCount(); int cnt = 0; foreach (SBookState state in book.BookStates) { if (state.Position != string.Empty) { // 局面が入っている場合 Sfen.PositionFromString(position, state.Position); } // 指し手出力 if (state.Count == 0 && ((state.Id == 0) || (state.Position != string.Empty))) { WriteMoves(state, position, aperyBook); } cnt++; } aperyBook.Save(filename); }