コード例 #1
0
        // -- screen update

        /// <summary>
        /// 選択しているプリセットが変更されたか、もしくはViewModelにセットされているEngineDefineが
        /// 変更になったかした時に、プリセットの説明文を更新するためのハンドラ
        /// </summary>
        private void UpdatePresetText(EngineDefineEx engineDefine)
        {
            string text = null;

            try
            {
                if (engineDefine == null)
                {
                    return;
                }

                var presets       = engineDefine.EngineDefine.Presets;
                var selectedIndex = comboBox1.SelectedIndex;
                // 未選択か?
                if (selectedIndex < 0)
                {
                    return;
                }

                if (presets.Count <= selectedIndex)
                {
                    selectedIndex = comboBox1.SelectedIndex = 0;
                }

                text = presets[selectedIndex].Description;
            }
            finally
            {
                textBox2.Text = text;
            }
        }
コード例 #2
0
 /// <summary>
 /// 各メンバーの値を設定する。CalcValue()の前に呼び出して設定しないといけない。
 /// </summary>
 public void SetValue(Color c, EngineDefineEx engineDefineEx, EngineConfig config, EnginePreset preset, bool ponder)
 {
     EngineDefines[(int)c] = engineDefineEx;
     EngineConfigs[(int)c] = config;
     EnginePresets[(int)c] = preset;
     Ponders[(int)c]       = ponder;
 }
コード例 #3
0
        /// <summary>
        /// エンジンを初期化する。
        /// </summary>
        /// <param name="usiEnginePlayer"></param>
        /// <param name="selectedPresetIndex">プリセットの選択番号+1。選んでなければ0。</param>
        private void InitUsiEnginePlayer(Color c, UsiEnginePlayer usiEnginePlayer,
                                         EngineDefineEx engineDefineEx, int selectedPresetIndex, GameModeEnum nextGameMode, bool ponder)
        {
            EngineDefineExes[(int)c] = engineDefineEx; // ここに保存しておく。
            var presets = engineDefineEx.EngineDefine.Presets;

            presetNames[(int)c] = (selectedPresetIndex < presets.Count) ?
                                  presets[selectedPresetIndex].Name :
                                  null;

            var          engine_config = TheApp.app.EngineConfigs;
            EngineConfig config        = null;

            switch (nextGameMode)
            {
            case GameModeEnum.InTheGame:
                config = engine_config.NormalConfig;
                break;

            case GameModeEnum.ConsiderationWithEngine:
                config = engine_config.ConsiderationConfig;
                break;

            case GameModeEnum.ConsiderationWithMateEngine:
                config = engine_config.MateConfig;
                break;
            }

            // Hash、Threadsのマネージメントのために代入しておく。
            UsiEngineHashManager.SetValue(c, engineDefineEx, config, ponder);

            var engine       = usiEnginePlayer.Engine;
            var engineDefine = engineDefineEx.EngineDefine;

            // "usiok"に対してオプションを設定するので、Stateの変更イベントをハンドルする。
            engine.AddPropertyChangedHandler("State", (args) =>
            {
                try
                {
                    var state = (UsiEngineState)args.value;
                    if (state == UsiEngineState.UsiOk)
                    {
                        // オプションの値を設定しなおす。
                        EngineDefineUtility.SetDefaultOption(engine.OptionList, engineDefineEx, selectedPresetIndex,
                                                             config, UsiEngineHashManager.HashSize[(int)c], UsiEngineHashManager.Threads[(int)c], ponder);
                    }
                } catch (Exception ex)
                {
                    TheApp.app.MessageShow(ex);
                }
            });

            // 通常探索なのか、詰将棋探索なのか。
            usiEnginePlayer.IsMateSearch =
                nextGameMode == GameModeEnum.ConsiderationWithMateEngine;

            // 実行ファイルを起動する
            usiEnginePlayer.Start(engineDefine.EngineExeFileName());
        }
コード例 #4
0
 /// <summary>
 /// 初期化する。
 /// </summary>
 public void Init()
 {
     EngineDefines = new EngineDefineEx[2];      /*  { null, null }    */
     EngineConfigs = new EngineConfig[2];        /*  { null, null }    */
     Ponders       = new bool[2];                /*  { false , false } */
     HashSize      = new long[2];                /*  { 0, 0 }          */
     Threads       = new int[2];                 /*  { 0, 0 }          */
 }
コード例 #5
0
 /// <summary>
 /// エンジンを開始する。UsiEnginePlayer.Start()を呼び出す。
 /// InitUsiEnginePlayer()をしたのちに、エンジンに接続したいタイミングで呼び出すべし。
 /// </summary>
 /// <param name="usiEnginePlayer"></param>
 /// <param name="engineDefineEx"></param>
 private void StartEngine(UsiEnginePlayer usiEnginePlayer, EngineDefineEx engineDefineEx)
 {
     // 実行ファイルを起動する
     usiEnginePlayer.Start(engineDefineEx.EngineDefine.EngineExeFileName());
 }