/// <summary> /// 定跡ファイル読込(インデックス指定) /// </summary> /// <param name="IndexNo"></param> private void BookReadIndex(int IndexNo) { // レコード読み込んでから表示(山内 2016/06/14) btnOutRec.Visible = true; btnRecDel.Visible = true; try { // 情報取得 BookData = clsBook.Kyokumen(IndexNo); // 取得値の表示 // 局面の表示 Review(BookData.Sfen); // 持駒の表示 ReviewHandPiece(BookData.HandPiece); // 手番 textBoxTeban.Text = (BookData.Teban.Equals("b")) ? "先手" : "後手"; // 手数 textBoxCount.Text = BookData.Count.ToString(); // 候補手 txtBoxMove.Text = StringMove(BookData.Move); ChangeColor(BookData.Move); // 候補手に対する応手 txtBoxNextMove.Text = StringMove(BookData.NextMove); // 評価値 txtBoxValue.Text = BookData.Value; // 評価値のテキストボックスの色を変化させる(山内 2016/06/05) if (Convert.ToInt32(txtBoxValue.Text) > 1) { txtBoxValue.BackColor = Color.LightGreen; } else if (Convert.ToInt32(txtBoxValue.Text) < 0) { txtBoxValue.BackColor = Color.LightPink; } // 探索の深さ txtBoxDepth.Text = BookData.Depth; // 使用回数 txtBoxUseCount.Text = BookData.UseCount; // sfen // SFEN文字列に手番と手数表示(山内 2016/06/03) //txtBoxSfen.Text = BookData.Sfen txtBoxSfen.Text = "sfen " + BookData.Sfen + " " + BookData.Teban + " " + BookData.HandPiece + " " + BookData.Count; // コメント編集エリア追加(山内 2016/06/05) txtBoxComment.Text = BookData.Comment; } catch (Exception ex) { MessageBox.Show("定跡ファイル読み込みエラー!" + Environment.NewLine + ex.ToString()); return; } }
public bool BookRead() { string Alldata = string.Empty; string data = string.Empty; string[] info; BookItem SubData = new BookItem(); using (StreamReader sr = new StreamReader(FileName, Encoding.GetEncoding("Shift_JIS"))) { string[] Data = new string[] { }; string text = string.Empty; bool sfenOK = false; int intCommentPosition = 0; while (sr.Peek() > 0) { // 読込 text = sr.ReadLine(); if ((text.Length == 0) || (text.Substring(0, 1).Equals("#"))) { continue; } // 局面か確認 if (text.Substring(0, 5).Equals("sfen ")) { Data = text.Split(' '); if (Data.Length == 5) { sfenOK = true; } else { sfenOK = false; } } else { if (sfenOK) { SubData = new BookItem(); // 局面データの登録 SubData.Sfen = Data[1]; // 局面(sfen) SubData.Teban = Data[2]; // 手番 SubData.HandPiece = Data[3]; // 持駒 SubData.Count = int.Parse(Data[4]); // 手数 // 局面に対するデータ取得 info = text.Split(' '); intCommentPosition = text.IndexOf("//"); SubData.Move = info[0]; // 候補手 SubData.NextMove = info[1]; // 候補手に対する応手 SubData.Value = info[2]; // 評価値 SubData.Depth = info[3]; // 探索の深さ SubData.UseCount = info[4]; // 使用回数 // コメント編集エリア追加(山内 2016/06/05) if (intCommentPosition >= 0) { SubData.Comment = text.Substring(intCommentPosition + 2).Trim(); // コメント } else { SubData.Comment = string.Empty; } // 局面とデータを登録 BookData.Add(SubData); } } } } BookData.Sort((a, b) => a.Count - b.Count); return(true); }