Пример #1
0
        /// <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;
            }
        }
Пример #2
0
        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);
        }