示例#1
0
        /// <summary>
        /// SFEN文字列と、出力ファイル名を指定することで、局面の画像ログを出力します。
        /// </summary>
        /// <param name="sfenstring"></param>
        /// <param name="outFileFullName"></param>
        /// <param name="reportEnvironment"></param>
        /// <returns></returns>
        public static bool Write2(
            IEngineConf engineConf,
            string sfenstring,
            string outFileFullName,
            ReportEnvironment reportEnvironment
            )
        {
            bool successful = true;


            //System.Windows.Forms.MessageBox.Show(sfenstring + "\n" + outFile, "局面PNG書き出し");

            //
            // SFEN → RO_SfenStartpos
            //
            ISfenPosition2 ro_SfenStartpos;
            string         rest;

            if (!SfenStringReader.ReadString(sfenstring, out rest, out ro_SfenStartpos))
            {
                //System.Windows.Forms.MessageBox.Show(sfenstring,"sfenstringパース失敗");
                successful = false;
                goto gt_EndMethod;
            }

            KyokumenPngWriterImpl.Write1(
                engineConf,
                ro_SfenStartpos.ToKyokumen1(),
                outFileFullName,
                reportEnvironment
                );

gt_EndMethod:
            return(successful);
        }
示例#2
0
 /// <summary>
 /// コンストラクターです。
 /// </summary>
 public Shape_Abstract(IEngineConf engineConf, string widgetName, int x, int y, int width, int height)
 {
     EngineConf      = engineConf;
     this.widgetName = widgetName;
     this.Visible    = true;
     this.bounds     = new Rectangle(x, y, width, height);
 }
示例#3
0
 /// <summary>
 /// ************************************************************************************************************************
 /// コンストラクターです。
 /// ************************************************************************************************************************
 /// </summary>
 /// <param name="label"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 public Shape_BtnBoxImpl(IEngineConf engineConf, string widgetName)
     : base(engineConf, widgetName, 0, 0, 70, 35)
 {
     this.Text     = "";
     this.FontSize = 20.0f;
     this.Fugo     = "";
 }
示例#4
0
        /// <summary>
        /// 生成後、OwnerFormをセットしてください。
        /// </summary>
        public MainGui_CsharpImpl(IEngineConf engineConf)
        {
            this.EngineConf = engineConf;

            this.model_Manual = new Model_ManualImpl();
            this.server       = new Server_Impl(this.model_Manual.GuiSkyConst, this.model_Manual.GuiTemezumi, new Receiver_ForCsharpVsImpl());

            this.Widgets = new Dictionary <string, UserWidget>();

            this.consoleWindowGui = new SubGuiImpl(this);

            this.TimedA = new TimedA_EngineCapture(this);
            this.TimedB_MouseCapture = new TimedB_MouseCapture(this);
            this.TimedC = new TimedC_SaiseiCapture(this);

            this.Data_Settei_Csv = new Data_Settei_Csv();
            this.WidgetLoaders   = new List <WidgetsLoader>();
            this.RepaintRequest  = new RepaintRequestImpl();

            //----------
            // ビュー
            //----------
            //
            //      ボタンや将棋盤などを描画するツールを、事前準備しておきます。
            //
            this.shape_PnlTaikyoku = new Shape_PnlTaikyokuImpl(engineConf, "#TaikyokuPanel", this);

            //Logger.Trace("つまんでいる駒を放します。(1)");
            this.SetFigTumandeiruKoma(-1);

            //----------
            // [出力切替]初期値
            //----------
            this.syuturyokuKirikae = SyuturyokuKirikae.Japanese;
        }
示例#5
0
        /// <summary>
        /// PP 盤上の駒
        /// </summary>
        /// <param name="fv"></param>
        /// <param name="fvDirectory"></param>
        public static void Write_PP_Banjo(IEngineConf engineConf, FeatureVector fv, string fvDirectory)
        {
            // P1が盤上の駒
            {
                PpItem_P1[] p1Items = new PpItem_P1[] {
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv04PP1pInFvDir")), "1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv05PP1pInFvDir")), "1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv06pp1pInFvDir")), "1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv07pp1pInFvDir")), "1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv08pp1pInFvDir")), "1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv09pp1pInFvDir")), "1P飛", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv10pp1pInFvDir")), "1P角", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___),

                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv18pp2pInFvDir")), "2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv19pp2pInFvDir")), "2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv20pp2pInFvDir")), "2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv21pp2pInFvDir")), "2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv22pp2pInFvDir")), "2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv23pp2pInFvDir")), "2P飛", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv24pp2pInFvDir")), "2P角", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___),
                };
                foreach (PpItem_P1 item in p1Items)
                {
                    File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Banjo.Format_PP_P1Banjo(fv, item.Title, item.P1_base));
                    //sb.AppendLine(item.Filepath);
                }
            }
        }
示例#6
0
        /// <summary>
        /// このクラスを使う前にセットしてください。
        /// </summary>
        public static void Init(IEngineConf engineConf)
        {
            EngineConf = engineConf;

            /*
             * AddLog(LogTags.NarabeNetwork, new LogRecord("../../Logs/#将棋GUI_ネットワーク", true, false));
             * // ログ。将棋エンジンきふわらべで汎用に使います。
             * AddLog(LogTags.Engine, new LogRecord("../../Logs/#将棋エンジン_汎用", true, false));
             * // ログ。送受信内容の記録専用です。
             * AddLog(LogTags.Client, new LogRecord("../../Logs/#将棋エンジン_クライアント", true, false));
             * // ログ。思考ルーチン専用です。
             * AddLog(LogTags.MousouRireki, new LogRecord("../../Logs/#将棋エンジン_妄想履歴", true, false));
             */

            /*
             * OutputForcePromotion = DataEntry(profilePath, toml, "OutputForcePromotion");
             * OutputPieceTypeToHaiyaku = DataEntry(profilePath, toml, "OutputPieceTypeToHaiyaku");
             * HaichiTenkanHyoOnlyDataLog = DataEntry(profilePath, toml, "HaichiTenkanHyoOnlyDataLog");
             * HaichiTenkanHyoAllLog = DataEntry(profilePath, toml, "HaichiTenkanHyoAllLog");
             */


            LatestPositionLogPng = LogEntry("LatestPositionLogPng");
            MousouRireki         = LogEntry("MousouRireki");
            GuiDefault           = LogEntry("GuiRecordLog");
            LinkedList           = LogEntry("LinkedListLog");
            GuiPaint             = LogEntry("GuiPaint");

            /*
             * LegalMove = LogEntry(engineConf, "LegalMoveLog");
             * LegalMoveEvasion = LogEntry(engineConf, "LegalMoveEvasionLog");
             */
            GenMove = LogEntry("GenMoveLog");
        }
示例#7
0
        /// <summary>
        /// 生成後、OwnerFormをセットしてください。
        /// </summary>
        public KifuNarabeImpl(IEngineConf engineConf)
        {
            this.EngineConf = engineConf;

            this.TimedA = new TimedA(this);
            this.TimedB = new TimedB(this);
            this.TimedC = new TimedC(this);

            this.WidgetLoaders = new List <WidgetsLoader>();
            this.ResponseData  = new ResponseImpl();

            //----------
            // モデル
            //----------
            this.model_PnlTaikyoku = new GameViewModel();


            //----------
            // ブラシ
            //----------
            //
            //      ボタンや将棋盤などを描画するツールを、事前準備しておきます。
            //
            this.shape_PnlTaikyoku = new Shape_PnlTaikyokuImpl();
        }
示例#8
0
        /// <summary>
        /// PP 5枚の持駒
        /// </summary>
        /// <param name="fv"></param>
        /// <param name="fvDirectory"></param>
        public static void Write_PP_5Mai(IEngineConf engineConf, FeatureVector fv, string fvDirectory)
        {
            var profilePath = System.Configuration.ConfigurationManager.AppSettings["Profile"];
            var toml        = Toml.ReadFile(Path.Combine(profilePath, "Engine.toml"));

            //StringBuilder sb = new StringBuilder();

            {
                PpItem_P1[] p1Items = new PpItem_P1[] {
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv12PP1pInFvDir")), "1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv13PP1pInFvDir")), "1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv14PP1pInFvDir")), "1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv15PP1pInFvDir")), "1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv26PP2pInFvDir")), "2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv27PP2pInFvDir")), "2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv28PP2pInFvDir")), "2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv29PP2pInFvDir")), "2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____),
                };
                foreach (PpItem_P1 item in p1Items)
                {
                    File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Moti.Format_PP_P1Moti_5Mai(fv, item.Title, item.P1_base));
                    //sb.AppendLine(item.Filepath);
                }
            }
        }
示例#9
0
        /// <summary>
        /// 盤1個分のログ。
        /// </summary>
        private void Log_Board(
            IEngineConf engineConf,
            string nodePath,
            KifuNode node,
            KifuTree kifu,
            string logDirectory,
            ReportEnvironment reportEnvironment
            )
        {
            // 出力先
            string basename = $"#{((int)node.KyHyoka.Total())}点_{KyHyokaWriterImpl.logFileCounter}_{nodePath}.log.png"; // TODO

            //
            // 画像ログ
            //
            if (true)
            {
                //SFEN文字列と、出力ファイル名を指定することで、局面の画像ログを出力します。
                KyokumenPngWriterImpl.Write1(
                    engineConf,
                    node.ToRO_Kyokumen1(),
                    Path.Combine(logDirectory, basename),
                    reportEnvironment
                    );
                KyHyokaWriterImpl.logFileCounter++;
            }

            //
            // スコア明細
            //
            {
                KyHyokaListWriterImpl.Write(basename, node, logDirectory, reportEnvironment);
            }
        }
示例#10
0
 /// <summary>
 /// ************************************************************************************************************************
 /// コンストラクターです。
 /// ************************************************************************************************************************
 /// </summary>
 /// <param name="okiba"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 public Shape_PnlKomadaiImpl(IEngineConf engineConf, string widgetName, Okiba okiba, int x, int y, int firstMasuHandle, MainGui_Csharp shogibanGui)
     : base(engineConf, widgetName, x, y, 1, 1)
 {
     this.ShogibanGui     = shogibanGui;
     this.Okiba           = okiba;
     this.MasuWidth       = 40;
     this.MasuHeight      = 40;
     this.FirstMasuHandle = firstMasuHandle;
 }
示例#11
0
 /// <summary>
 /// このクラスを使う前にセットしてください。
 /// </summary>
 public static void Init(IEngineConf engineConf)
 {
     EngineConf   = engineConf;
     TraceRecord  = LogEntry("Trace", true, true);
     DebugRecord  = LogEntry("Debug", true, true);
     InfoRecord   = LogEntry("Info", true, true);
     NoticeRecord = LogEntry("Notice", true, true);
     WarnRecord   = LogEntry("Warn", true, true);
     ErrorRecord  = LogEntry("Error", true, true);
     FatalRecord  = LogEntry("Fatal", true, true);
 }
示例#12
0
        /// <summary>
        /// このクラスを使う前にセットしてください。
        /// </summary>
        public static void Init(IEngineConf engineConf)
        {
            EngineConf = engineConf;

            TraceRecord  = LogEntry(SpecifiedFiles.Trace, true, true, false);
            DebugRecord  = LogEntry(SpecifiedFiles.Debug, true, true, false);
            InfoRecord   = LogEntry(SpecifiedFiles.Info, true, true, false);
            NoticeRecord = LogEntry(SpecifiedFiles.Notice, true, true, false);
            WarnRecord   = LogEntry(SpecifiedFiles.Warn, true, true, false);
            ErrorRecord  = LogEntry(SpecifiedFiles.Error, true, true, false);
            FatalRecord  = LogEntry(SpecifiedFiles.Fatal, true, true, false);
        }
示例#13
0
 /// <summary>
 /// このクラスを使う前にセットしてください。
 /// </summary>
 public static void Init(IEngineConf engineConf)
 {
     Util_KifuTreeLogWriter.REPORT_ENVIRONMENT = new KyokumenPngEnvironmentImpl(
         Path.Combine(engineConf.LogDirectory, "_log_KifuTreeLog/"), //argsDic["outFolder"],
         Path.Combine(engineConf.DataDirectory, "img/gkLog/"),       //argsDic["imgFolder"],
         engineConf.GetResourceBasename("Koma1PngBasename"),         //argsDic["kmFile"],
         engineConf.GetResourceBasename("Suji1PngBasename"),         //argsDic["sjFile"],
         "20",                                                       //argsDic["kmW"],
         "20",                                                       //argsDic["kmH"],
         "8",                                                        //argsDic["sjW"],
         "12"                                                        //argsDic["sjH"]
         );
 }
示例#14
0
        /// <summary>
        /// 評価明細の書き出し。
        /// </summary>
        /// <param name="id"></param>
        /// <param name="node"></param>
        /// <param name="treeFolder"></param>
        /// <param name="env"></param>
        public static void AAAA_Write_HyokaMeisai(
            IEngineConf engineConf,
            string id,
            KifuNode node,
            string treeFolder,
            KyokumenPngEnvironment env
            )
        {
            StringBuilder sb = new StringBuilder();

            // 見出し
            sb.Append(id);
            sb.Append("    ");
            sb.Append(((int)node.Score).ToString());
            sb.Append("    ");
            switch (node.Value.KyokumenConst.KaisiPside)
            {
            case Playerside.P1: sb.Append("P2が指し終えた局面。手番P1"); break;

            case Playerside.P2: sb.Append("P1が指し終えた局面。手番P2"); break;

            case Playerside.Empty: sb.Append("手番Empty"); break;
            }
            sb.AppendLine();

            foreach (KeyValuePair <string, KyHyokaMeisai_Koumoku> entry in node.KyHyokaSheet_Mutable.Items)
            {
                KyHyokaMeisai_Koumoku koumoku = ((KyHyokaMeisai_Koumoku)entry.Value);

                sb.Append("    ");

                sb.Append(entry.Key);            //項目名
                sb.Append("  ");
                sb.Append(koumoku.UtiwakeValue); //評価値
                sb.Append("  ");

                sb.Append(koumoku.Utiwake);//内訳
                sb.AppendLine();
            }
            sb.AppendLine();

            ////------------------------------
            //// TODO: 局面ハッシュ
            ////------------------------------
            //sb.Append("hash:");
            //sb.AppendLine(Conv_Sky.ToKyokumenHash(node.Value.ToKyokumenConst).ToString());
            //sb.AppendLine();

            File.AppendAllText($"{env.OutFolder}{treeFolder}{engineConf.GetResourceBasename("HyokaMeisaiLogTxtBasename")}", sb.ToString());
        }
示例#15
0
        /// <summary>
        /// ************************************************************************************************************************
        /// コンストラクターです。
        /// ************************************************************************************************************************
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public Shape_PnlShogibanImpl(IEngineConf engineConf, string widgetName, int x, int y, MainGui_Csharp shogibanGui)
            : base(engineConf, widgetName, x, y, 1, 1)
        {
            this.ShogibanGui = shogibanGui;
            this.MasuWidth   = 40;
            this.MasuHeight  = 40;

            this.KikiBan            = new SySet_Default <SyElement>("利き盤");
            this.HMasu_KikiKomaList = new Dictionary <int, List <int> >();

            //----------
            // 枡に利いている駒への逆リンク(の入れ物を用意)
            //----------
            this.ClearHMasu_KikiKomaList();
        }
示例#16
0
        /// <summary>
        /// 棋譜ツリーの、ノードに格納されている、局面評価明細を、出力していきます。
        /// </summary>
        public static void AA_Write_ForeachLeafs_ForDebug(
            IEngineConf engineConf,
            ref int logFileCounter,
            string nodePath,
            KifuNode node,
            KifuTree kifu,
            string treeFolder,
            KyokumenPngEnvironment reportEnvironment
            )
        {
            // 次ノードの有無
            if (0 < node.Count_ChildNodes)
            {
                // 葉ノードではないなら

                int logFileCounter_temp = logFileCounter;
                // 先に奥の枝から。
                node.Foreach_ChildNodes((string key, Node <IMove, KyokumenWrapper> nextNode, ref bool toBreak) =>
                {
                    float score = ((KifuNode)nextNode).Score;

                    // 再帰
                    Util_KifuTreeLogWriter.AA_Write_ForeachLeafs_ForDebug(
                        engineConf,
                        ref logFileCounter_temp,
                        $"{nodePath} {ConvMoveStrSfen.ToMoveStrSfenForFilename(nextNode.Key)}",
                        (KifuNode)nextNode,
                        kifu,
                        $"{treeFolder}{(int)score}点_{ConvMoveStrSfen.ToMoveStrSfen(nextNode.Key)}/",
                        reportEnvironment
                        );
                });
                logFileCounter = logFileCounter_temp;
            }

            // 盤1個分の png 画像ログ出力
            Util_KifuTreeLogWriter.AAA_Write_Node(
                engineConf,
                ref logFileCounter,
                nodePath,
                node,
                kifu,
                treeFolder,
                reportEnvironment
                );
        }
示例#17
0
        /// <summary>
        /// 棋譜ツリーの、ノードに格納されている、局面評価明細を、出力していきます。
        /// </summary>
        public void Write_ForeachLeafs(
            IEngineConf engine,
            string nodePath,
            KifuNode node,
            KifuTree kifu,
            PlayerInfo playerInfo,
            string relFolder,
            ReportEnvironment reportEnvironment
            )
        {
            // 次ノードの有無
            if (0 < node.Count_NextNodes)
            {
                // 先に奥の枝から。
                node.Foreach_NextNodes((string key, Node <ShootingStarlightable, KyokumenWrapper> nextNode, ref bool toBreak) =>
                {
                    double score = ((KifuNode)nextNode).KyHyoka.Total();

                    this.Write_ForeachLeafs(
                        engine,
                        nodePath + " " + Util_Sky.ToSfenMoveTextForFilename(nextNode.Key),
                        (KifuNode)nextNode,
                        kifu,
                        playerInfo,
                        relFolder + ((int)score).ToString() + "点_" + Util_Sky.ToSfenMoveText(nextNode.Key) + "/",
                        //relFolder + ((int)((KifuNode)nextNode).KyHyoka.Total()).ToString() + "点_" + Util_Sky.ToSfenMoveText(nextNode.Key) + "/",
                        reportEnvironment
                        );
                });
            }

            // このノード
            //
            // 盤1個分のログの準備
            //
            this.Log_Board(
                engine,
                nodePath,
                node,
                kifu,
                relFolder,
                reportEnvironment
                );
        }
示例#18
0
        public static void Write_KP(IEngineConf engineConf, FeatureVector fv, string fvDirectory)
        {
            string filepathW1 = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv02n1pKPInFvDir"));
            string filepathW2 = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv03n2pKPInFvDir"));
            //----------------------------------------
            // 1P玉
            //----------------------------------------
            {
                File.WriteAllText(filepathW1, Format_FeatureVector_KP.Format_KP(fv, Playerside.P1));
                //sb.AppendLine(filepathW1);
            }

            //----------------------------------------
            // 2p玉
            //----------------------------------------
            {
                File.WriteAllText(filepathW2, Format_FeatureVector_KP.Format_KP(fv, Playerside.P2));
                //sb.AppendLine(filepathW2);
            }
        }
示例#19
0
        /// <summary>
        /// PP 19枚の持駒
        /// </summary>
        /// <param name="fv"></param>
        /// <param name="fvDirectory"></param>
        public static void Write_PP_19Mai(IEngineConf engineConf, FeatureVector fv, string fvDirectory)
        {
            var profilePath = System.Configuration.ConfigurationManager.AppSettings["Profile"];
            var toml        = Toml.ReadFile(Path.Combine(profilePath, "Engine.toml"));

            //StringBuilder sb_result = new StringBuilder();

            {
                PpItem_P1[] p1Items = new PpItem_P1[] {
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv11PP1pInFvDir")), "1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv25pp2pInFvDir")), "2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____),
                };
                foreach (PpItem_P1 item in p1Items)
                {
                    File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Moti.Format_PP_P1_Moti19Mai(fv, item.Title, item.P1_base));

                    //sb_result.AppendLine(item.Filepath);
                }
            }
        }
示例#20
0
        /// <summary>
        /// 配役と、升から、次の強制転成配役を求めます。
        ///
        ///
        /// </summary>
        /// <param name="currentHaiyaku"></param>
        /// <param name="masuHandle"></param>
        /// <returns>転生しないなら 未設定 を返します。</returns>
        public static Komahaiyaku185 MasuHandleTo_ForcePromotionHaiyaku(IEngineConf engineConf, Komahaiyaku185 currentHaiyaku, int masuHandle, string hint)
        {
            Komahaiyaku185 result;

            Dictionary <int, Komahaiyaku185> map2 = Array_ForcePromotion.HaiyakuMap[currentHaiyaku];

            if (
                null == map2
                ||
                !map2.ContainsKey(masuHandle)
                )
            {
                result = Komahaiyaku185.n000_未設定;
                goto gt_EndMethod;
            }

            result = map2[masuHandle];//null非許容型


            {
                var logFilePath = engineConf.GetResourceFullPath("N20DebugForcePromotionLog");

                StringBuilder sbLog = new StringBuilder();

                if (File.Exists(logFilePath))
                {
                    sbLog.Append(File.ReadAllText(logFilePath));
                }

                sbLog.AppendLine();
                sbLog.AppendLine(hint);
                sbLog.AppendLine($" 現在の配役=[{currentHaiyaku}]");
                sbLog.AppendLine($" masuHandle=[{masuHandle}]");
                sbLog.AppendLine($" 強制転成後の配役=[{result}]");
                File.WriteAllText(logFilePath, sbLog.ToString());
            }


gt_EndMethod:
            return(result);
        }
示例#21
0
        /// <summary>
        /// SFEN文字列と、出力ファイル名を指定することで、局面の画像ログを出力します。
        /// </summary>
        /// <param name="sfenstring"></param>
        /// <param name="outFileFullName"></param>
        /// <param name="reportEnvironment"></param>
        /// <returns></returns>
        public static bool Write1(
            IEngineConf engineConf,
            ISfenPosition1 ro_Kyokumen1,
            string outFileFullName,
            ReportEnvironment reportEnvironment
            )
        {
            bool successful = true;

            KyokumenPngWriter repWriter = new KyokumenPngWriterImpl(engineConf);
            ReportArgs        args      = new ReportArgsImpl(
                ro_Kyokumen1,
                outFileFullName,
                reportEnvironment
                );

            // 局面画像を描きだします。
            Bitmap bmp = new Bitmap(
                2 * (args.Env.KmW + 2 * args.Env.SjW) + BN_SUJIS * args.Env.KmW + BN_BRD_R_W,
                BN_DANS * args.Env.KmH + BN_BRD_B_W
                );


            repWriter.Paint(Graphics.FromImage(bmp), args);


            //System.Windows.Forms.MessageBox.Show(args.Env.OutFolder + args.OutFile, "bmp.Save");
            // フォルダーが無ければ、作る必要があります。
            {
                DirectoryInfo dirInfo = Directory.GetParent(args.OutFileFullName);
                if (!Directory.Exists(dirInfo.FullName))
                {
                    Directory.CreateDirectory(dirInfo.FullName);
                }
            }
            bmp.Save(args.OutFileFullName);

            return(successful);
        }
示例#22
0
        /// <summary>
        /// フィーチャー・ベクター関連のファイルを全て開きます。
        /// </summary>
        /// <param name="fv"></param>
        /// <param name="tv_orNull">学習でしか使いません。</param>
        /// <param name="rv_orNull">学習でしか使いません。</param>
        /// <param name="fv_komawari_file_path"></param>
        /// <returns></returns>
        public static string OpenFv(IEngineConf engineConf, FeatureVector fv, string fv_komawari_file_path)
        {
            StringBuilder sb_result = new StringBuilder();

            {//駒割
                string filepath = fv_komawari_file_path;
                if (!Util_FeatureVectorInput.Make_FromFile_Komawari(fv, filepath))
                {
                    sb_result.Append($"ファイルオープン失敗 Fv[{filepath}]。");
                    goto gt_EndMethod;
                }
                sb_result.Append("開fv。");
            }

            string fvDirectory = Path.GetDirectoryName(fv_komawari_file_path); // komawari.csvと同じフォルダー

            {                                                                  //スケール
                string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv00ScaleInFvDir"));
                if (!Util_FeatureVectorInput.Make_FromFile_Scale(fv, filepath))
                {
                    sb_result.Append($"ファイルオープン失敗 Fv[{filepath}]。");
                    goto gt_EndMethod;
                }
                sb_result.Append("開Sc。");
            }

            {//KK
                string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv01KKInFvDir"));
                if (!Util_FeatureVectorInput.Make_FromFile_KK(fv, filepath))
                {
                    sb_result.Append($"ファイルオープン失敗 KK[{filepath}]。");
                    goto gt_EndMethod;
                }
                sb_result.Append("開KK。");
            }

            {//1pKP
                string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv02n1pKPInFvDir"));
                if (!Util_FeatureVectorInput.Make_FromFile_KP(fv, filepath, Playerside.P1))
                {
                    sb_result.Append($"ファイルオープン失敗 1pKP[{filepath}]。");
                    goto gt_EndMethod;
                }
                sb_result.Append("開1pKP。");
            }

            {//2pKP
                string filepath = Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv03n2pKPInFvDir"));
                if (!Util_FeatureVectorInput.Make_FromFile_KP(fv, filepath, Playerside.P2))
                {
                    sb_result.Append($"ファイルオープン失敗 2pKP[{filepath}]。");
                    goto gt_EndMethod;
                }
                sb_result.Append("開2pKP。");
            }

            {//盤上の駒
                List <PP_P1Item> p1List = new List <PP_P1Item>()
                {
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv04PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv05PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv06pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv07pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv08pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv09pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv10pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv18pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv19pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv20pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv21pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv22pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv23pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv24pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___),
                };

                foreach (PP_P1Item p1Item in p1List)
                {
                    if (!Util_FeatureVectorInput.Make_FromFile_PP_Banjo(fv, p1Item.Filepath, p1Item.P1_base))
                    {
                        sb_result.Append($"ファイルオープン失敗 PP_Banjo[{p1Item.Filepath}]。");
                        goto gt_EndMethod;
                    }
                    sb_result.Append($"開{Path.GetFileName(p1Item.Filepath)}。");
                }
            }

            {//19枚の持ち駒
                List <PP_P1Item> p1Items = new List <PP_P1Item>()
                {
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv11PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv25pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____)
                };

                foreach (PP_P1Item ppItem in p1Items)
                {
                    if (!Util_FeatureVectorInput.Make_FromFile_PP_Moti19Mai(fv, ppItem.Filepath, ppItem.P1_base))
                    {
                        sb_result.Append($"ファイルオープン失敗 PP_Banjo[{ppItem.Filepath}]。");
                        goto gt_EndMethod;
                    }
                    sb_result.Append($"開{Path.GetFileName(ppItem.Filepath)}。");
                }
            }

            {//3枚の持駒
                List <PP_P1Item> p1Items = new List <PP_P1Item>()
                {
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv12PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv13PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv14PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv15PP1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv26PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv27PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv28PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv29PP2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____),
                };

                foreach (PP_P1Item ppItem in p1Items)
                {
                    if (!Util_FeatureVectorInput.Make_FromFile_PP_Moti3or5Mai(fv, ppItem.Filepath, ppItem.P1_base, 5))
                    {
                        sb_result.Append($"ファイルオープン失敗 PP_Banjo[{ppItem.Filepath}]。");
                        goto gt_EndMethod;
                    }
                    sb_result.Append($"開{Path.GetFileName(ppItem.Filepath)}。");
                }
            }

            {//2枚の持駒
                List <PP_P1Item> p1Items = new List <PP_P1Item>()
                {
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv16pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIHISYA__),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv17pp1pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKAKU___),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv30pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIHISYA__),
                    new PP_P1Item(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv31pp2pInFvDir")), FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKAKU___),
                };

                foreach (PP_P1Item ppItem in p1Items)
                {
                    if (!Util_FeatureVectorInput.Make_FromFile_PP_Moti3or5Mai(fv, ppItem.Filepath, ppItem.P1_base, 3))
                    {
                        sb_result.Append($"ファイルオープン失敗 PP_Banjo[{ppItem.Filepath}]。");
                        goto gt_EndMethod;
                    }
                    sb_result.Append($"開{Path.GetFileName(ppItem.Filepath)}。");
                }
            }

gt_EndMethod:
            ;
            return(sb_result.ToString());
        }
示例#23
0
 public static void Implement(IEngineConf engineConf)
 {
     SpecifyFiles.Init(engineConf);
     Logger.Init(engineConf);
 }
示例#24
0
        /// <summary>
        /// このクラスを使う前にセットしてください。
        /// </summary>
        public static void Init(IEngineConf engineConf)
        {
            EngineConf = engineConf;

            TraceRecord  = LogEntry("Trace", true, true);
            DebugRecord  = LogEntry("Debug", true, true);
            InfoRecord   = LogEntry("Info", true, true);
            NoticeRecord = LogEntry("Notice", true, true);
            WarnRecord   = LogEntry("Warn", true, true);
            ErrorRecord  = LogEntry("Error", true, true);
            FatalRecord  = LogEntry("Fatal", true, true);

            /*
             * AddLog(LogTags.Default, DefaultByProcess);
             *
             * AddLog(LogTags.Error, LogEntry( "N01ErrorLog", true, false));
             *
             * // 汎用ログ。千日手判定用。
             * AddLog(LogTags.DefaultSennitite, LogEntry( "N02DefaultSennititeLog", true, false));
             *
             * // 擬似将棋サーバーのログ
             * AddLog(LogTags.ServerDefault, LogEntry( "N03ServerDefaultLog", true, false));
             *
             * // 擬似将棋サーバーのログ。ログ。送受信内容の記録専用です。
             * AddLog(LogTags.ServerNetworkAsync, LogEntry( "N04ServerNetworkAsyncLog", true, true));
             *
             * // C# GUIのログ
             * AddLog(LogTags.CsharpGuiDefault, LogEntry( "N05CsharpGuiDefaultLog", true, false));
             *
             * // C# GUIのログ
             * AddLog(LogTags.CsharpGuiKifuYomitori, LogEntry( "N06CsharpGuiKifuYomitoriLog", true, false));
             *
             * // C# GUIのログ
             * AddLog(LogTags.CsharpGuiNetwork, LogEntry( "N07CsharpGuiNetworkLog", true, true));
             *
             * // C# GUIのログ
             * AddLog(LogTags.CsharpGuiPaint, LogEntry( "N08CsharpGuiPaintLog", true, false));
             *
             * // C# GUIのログ
             * AddLog(LogTags.CsharpGuiSennitite, LogEntry( "N09CsharpGuiSennititeLog", true, false));
             *
             * // AIMS GUIに対応する用のログ
             * AddLog(LogTags.AimsDefault, LogEntry( "N10AimsDefaultLog", true, false));
             *
             * // 将棋エンジンのログ。将棋エンジンきふわらべで汎用に使います。
             * AddLog(LogTags.EngineDefault, LogEntry( "N11EngineDefaultLog", true, false));
             *
             * // 将棋エンジンのログ。送受信内容の記録専用です。
             * AddLog(LogTags.EngineNetwork, LogEntry( "N12EngineNetworkLog", true, true));
             *
             * // 将棋エンジンのログ。思考ルーチン専用です。
             * AddLog(LogTags.EngineMousouRireki, LogEntry( "N13EngineMousouRirekiLog", true, false));
             *
             * // 将棋エンジンのログ
             * AddLog(LogTags.EngineSennitite, LogEntry( "N14EngineSennititeLog", true, false));
             *
             * // その他のログ。汎用。テスト・プログラム用。
             * AddLog(LogTags.TestProgram, LogEntry( "N15TestProgramLog", true, false));
             *
             * // その他のログ。棋譜学習ソフト用。
             * AddLog(LogTags.Learner, LogEntry( "N16LearnerLog", true, false));
             *
             * // その他のログ。スピード計測ソフト用。
             * AddLog(LogTags.SpeedKeisoku, LogEntry( "N17SpeedKeisokuLog", true, false));
             */
        }
示例#25
0
 public MainGui_CsharpVsImpl(IEngineConf engineConf) : base(engineConf)
 {
 }
示例#26
0
 public KifuNarabeVsImpl(IEngineConf engineConf) : base(engineConf)
 {
     this.shogiEnginePrWrapperLauncher = new ShogiEngineLiveImpl(this);
 }
示例#27
0
 /// <summary>
 /// ************************************************************************************************************************
 /// コンストラクターです。
 /// ************************************************************************************************************************
 /// </summary>
 /// <param name="okiba"></param>
 /// <param name="suji"></param>
 /// <param name="dan"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 public Shape_BtnMasuImpl(IEngineConf engineConf, string widgetName, SyElement masu, int x, int y, int width, int height)
     : base(engineConf, widgetName, x, y, width, height)
 {
     this.Zahyo = masu;
 }
示例#28
0
 /// <summary>
 /// ************************************************************************************************************************
 /// コンストラクターです。
 /// ************************************************************************************************************************
 /// </summary>
 /// <param name="okiba"></param>
 /// <param name="suji"></param>
 /// <param name="dan"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 public Shape_BtnMasuImpl(IEngineConf engineConf, string widgetName)
     : base(engineConf, widgetName, 0, 0, 35, 35)
 {
     this.Zahyo = Masu_Honshogi.Query_Basho(Masu_Honshogi.nError);
 }
示例#29
0
 /// <summary>
 /// ************************************************************************************************************************
 /// コンストラクターです。
 /// ************************************************************************************************************************
 /// </summary>
 /// <param name="label"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 public Shape_LblBoxImpl(IEngineConf engineConf, string widgetName, string label, int x, int y)
     : base(engineConf, widgetName, x, y, 70, 35)
 {
     this.Text = label;
 }
示例#30
0
        /// <summary>
        /// 盤1個分のログ。
        /// </summary>
        private static void AAA_Write_Node(
            IEngineConf engineConf,
            ref int logFileCounter,
            string nodePath,
            KifuNode node,
            KifuTree kifu,
            string relFolder,
            KyokumenPngEnvironment reportEnvironment
            )
        {
            string fileName = "";


            // 出力先
            fileName  = Conv_Filepath.ToEscape($"_log_{((int)node.Score)}点_{logFileCounter}_{nodePath}.png");
            relFolder = Conv_Filepath.ToEscape(relFolder);
            //
            // 画像ログ
            //
            if (true)
            {
                int srcMasu_orMinusOne = -1;
                int dstMasu_orMinusOne = -1;
                if (null != node.Key)
                {
                    srcMasu_orMinusOne = Conv_SyElement.ToMasuNumber(((RO_Star)node.Key.LongTimeAgo).Masu);
                    dstMasu_orMinusOne = Conv_SyElement.ToMasuNumber(((RO_Star)node.Key.Now).Masu);
                }

                KyokumenPngArgs_FoodOrDropKoma foodKoma;
                if (null != node.Key.FoodKomaSyurui)
                {
                    switch (Util_Komasyurui14.NarazuCaseHandle((PieceType)node.Key.FoodKomaSyurui))
                    {
                    case PieceType.None: foodKoma = KyokumenPngArgs_FoodOrDropKoma.NONE; break;

                    case PieceType.P: foodKoma = KyokumenPngArgs_FoodOrDropKoma.FU__; break;

                    case PieceType.L: foodKoma = KyokumenPngArgs_FoodOrDropKoma.KYO_; break;

                    case PieceType.N: foodKoma = KyokumenPngArgs_FoodOrDropKoma.KEI_; break;

                    case PieceType.S: foodKoma = KyokumenPngArgs_FoodOrDropKoma.GIN_; break;

                    case PieceType.G: foodKoma = KyokumenPngArgs_FoodOrDropKoma.KIN_; break;

                    case PieceType.R: foodKoma = KyokumenPngArgs_FoodOrDropKoma.HI__; break;

                    case PieceType.B: foodKoma = KyokumenPngArgs_FoodOrDropKoma.KAKU; break;

                    default: foodKoma = KyokumenPngArgs_FoodOrDropKoma.UNKNOWN; break;
                    }
                }
                else
                {
                    foodKoma = KyokumenPngArgs_FoodOrDropKoma.NONE;
                }


                // 評価明細に添付
                Util_KyokumenPng_Writer.Write1(
                    Conv_KifuNode.ToRO_Kyokumen1(node),
                    srcMasu_orMinusOne,
                    dstMasu_orMinusOne,
                    foodKoma,
                    ConvMoveStrSfen.ToMoveStrSfen(node.Key),
                    relFolder,
                    fileName,
                    reportEnvironment
                    );
                logFileCounter++;
            }

            //
            // 評価明細
            //
            {
                Util_KifuTreeLogWriter.AAAA_Write_HyokaMeisai(engineConf, fileName, node, relFolder, reportEnvironment);
            }
        }