/// <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); }
/// <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); }
/// <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 = ""; }
/// <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; }
/// <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); } } }
/// <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"); }
/// <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(); }
/// <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); } } }
/// <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); } }
/// <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; }
/// <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); }
/// <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); }
/// <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"] ); }
/// <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()); }
/// <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(); }
/// <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 ); }
/// <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 ); }
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); } }
/// <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); } } }
/// <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); }
/// <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); }
/// <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()); }
public static void Implement(IEngineConf engineConf) { SpecifyFiles.Init(engineConf); Logger.Init(engineConf); }
/// <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)); */ }
public MainGui_CsharpVsImpl(IEngineConf engineConf) : base(engineConf) { }
public KifuNarabeVsImpl(IEngineConf engineConf) : base(engineConf) { this.shogiEnginePrWrapperLauncher = new ShogiEngineLiveImpl(this); }
/// <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; }
/// <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); }
/// <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; }
/// <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); } }