Example #1
0
        /// <summary>
        /// ファイルからGameResultTableを読み込む。
        ///
        /// // 解釈できなかった行はnullになっている。
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public List <GameResultData> ReadOrCreate(string filePath)
        {
            var csv  = CsvReadOrCreate(filePath);
            var list = new List <GameResultData>();

            foreach (var line in csv)
            {
                list.Add(GameResultData.FromLine(line));
            }
            return(list);
        }
Example #2
0
        /// <summary>
        /// CSV形式で読み込んだ1行から、この構造体を構築する。
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static GameResultData FromLine(List <string> list)
        {
            // データ壊れてない?おかしすぎ。この行をskipすべき。
            if (list.Count < 11)
            {
                return(null);
            }

            try
            {
                var result = new GameResultData();
                result.PlayerNames[0]    = list[0];
                result.PlayerNames[1]    = list[1];
                result.StartTime         = DateTime.Parse(list[2]);
                result.EndTime           = DateTime.Parse(list[3]);
                result.LastMove          = Util.MoveFromString(list[4]);
                result.LastColor         = Util.FromUsiColor(list[5].FirstChar());
                result.KifuFileName      = list[6];
                result.GamePly           = int.Parse(list[7]);
                result.BoardType         = Util.FromBoardTypeString(list[8]);
                result.TimeSettingString = list[9];
                result.Comment           = list[10];

                // あとから追加になったfieldは以前は存在していなかったものなので慎重に読み込む。

                if (list.Count < 12 || !bool.TryParse(list[11], out result.Handicapped))
                {
                    result.Handicapped = false;
                }

                return(result);
            } catch
            {
                return(null);
            }
        }
Example #3
0
 /// <summary>
 /// CSVファイルに1行追加する。
 /// </summary>
 /// <param name="filePath"></param>
 /// <param name="data"></param>
 public void AppendLine(string filePath, GameResultData data)
 {
     AppendLine(filePath, data.ToList());
 }