private static void ReadGikouBook(SBook book, GikouBook gbook ,SPosition pos) { long key = ExportGikouBook.ComputeKey(pos, gbook); SBookState state = book.GetBookState(pos.PositionToString(1)); if (state != null && state.Moves.Count != 0) { // すでに登録されてる? return; } // 局面登録 book.Add(pos, null, 0, 0, 0); List<GikouBookEntry> entrys = gbook.GetEntry(key); if (entrys != null) { foreach (GikouBookEntry en in entrys) { MoveData move = ConvertMove(pos.Turn, en.Move); book.Add(pos, move, (int)en.Frequency, en.Score, 1); } foreach (GikouBookEntry en in entrys) { MoveData move = ConvertMove(pos.Turn, en.Move); pos.Move(move); ReadGikouBook(book, gbook, pos); pos.UnMove(move, null); } } }
public static SBook Import(string filename) { SBook book = new SBook(); SPosition pos = new SPosition(); try { GikouBook gbook = new GikouBook(filename); ReadGikouBook(book, gbook, pos); } catch (Exception ex) { throw ex; } return book; }