Пример #1
0
 /// <summary>
 /// Save the search mode to properties setting
 /// </summary>
 /// <param name="searchMode">   Search mode</param>
 public void SaveSearchMode(SettingSearchMode searchMode)
 {
     m_settings.UseAlphaBeta         = (searchMode.Option & SearchMode.OptionE.UseAlphaBeta) != 0;
     m_settings.UseTransTable        = (searchMode.Option & SearchMode.OptionE.UseTransTable) != 0;
     m_settings.UsePlyCountIterative = (searchMode.Option & SearchMode.OptionE.UseIterativeDepthSearch) != 0;
     m_settings.UsePlyCount          = (searchMode.Option & SearchMode.OptionE.UseIterativeDepthSearch) == 0 && searchMode.SearchDepth != 0;
     m_settings.DifficultyLevel      = (searchMode.DifficultyLevel == SettingSearchMode.DifficultyLevelE.Manual) ? 0 : (int)searchMode.DifficultyLevel;
     m_settings.PlyCount             = searchMode.SearchDepth;
     m_settings.AverageTime          = searchMode.TimeOutInSec;
     m_settings.BookType             = (int)searchMode.BookMode;
     m_settings.UseThread            = (int)searchMode.ThreadingMode;
     m_settings.RandomMode           = (int)searchMode.RandomMode;
     m_settings.TransTableSize       = TransTable.TranslationTableSize * 32 / 1000000;
     m_settings.WhiteBoardEval       = searchMode.WhiteBoardEvaluation.Name;
     m_settings.BlackBoardEval       = searchMode.BlackBoardEvaluation.Name;
 }
Пример #2
0
        /// <summary>
        /// Ask for the game parameter
        /// </summary>
        /// <param name="parent">               Parent window</param>
        /// <param name="settingSearchMode">    Search mode</param>
        /// <returns>
        /// true if succeed
        /// </returns>
        public static bool AskGameParameter(MainWindow parent, SettingSearchMode settingSearchMode)
        {
            bool             bRetVal;
            frmGameParameter frm;

            frm       = new frmGameParameter(parent, settingSearchMode);
            frm.Owner = parent;
            bRetVal   = (frm.ShowDialog() == true);
            if (bRetVal)
            {
                if (frm.radioButtonLevel1.IsChecked == true)
                {
                    settingSearchMode.DifficultyLevel = SettingSearchMode.DifficultyLevelE.VeryEasy;
                }
                else if (frm.radioButtonLevel2.IsChecked == true)
                {
                    settingSearchMode.DifficultyLevel = SettingSearchMode.DifficultyLevelE.Easy;
                }
                else if (frm.radioButtonLevel3.IsChecked == true)
                {
                    settingSearchMode.DifficultyLevel = SettingSearchMode.DifficultyLevelE.Intermediate;
                }
                else if (frm.radioButtonLevel4.IsChecked == true)
                {
                    settingSearchMode.DifficultyLevel = SettingSearchMode.DifficultyLevelE.Hard;
                }
                else if (frm.radioButtonLevel5.IsChecked == true)
                {
                    settingSearchMode.DifficultyLevel = SettingSearchMode.DifficultyLevelE.VeryHard;
                }
                else if (frm.radioButtonLevelManual.IsChecked == true)
                {
                    settingSearchMode.DifficultyLevel = SettingSearchMode.DifficultyLevelE.Manual;
                }
                frm.ParentWindow.m_chessCtl.SearchMode = settingSearchMode.GetSearchMode();
            }
            return(bRetVal);
        }
Пример #3
0
        /// <summary>
        /// Class constructor
        /// </summary>
        /// <param name="settingSearchMode">Actual search mode</param>
        /// <param name="boardEvalUtil">    Board Evaluation list</param>
        public frmSearchMode(SettingSearchMode settingSearchMode, BoardEvaluationUtil boardEvalUtil) : this()
        {
            int iPos;

            m_settingSearchMode = settingSearchMode;
            m_boardEvalUtil     = boardEvalUtil;
            foreach (IBoardEvaluation boardEval in m_boardEvalUtil.BoardEvaluators)
            {
                iPos = comboBoxWhiteBEval.Items.Add(boardEval.Name);
                if (settingSearchMode.WhiteBoardEvaluation == boardEval)
                {
                    comboBoxWhiteBEval.SelectedIndex = iPos;
                }
                iPos = comboBoxBlackBEval.Items.Add(boardEval.Name);
                if (settingSearchMode.BlackBoardEvaluation == boardEval)
                {
                    comboBoxBlackBEval.SelectedIndex = iPos;
                }
            }
            checkBoxTransTable.IsChecked = ((settingSearchMode.Option & SearchMode.OptionE.UseTransTable) != 0);
            if (settingSearchMode.ThreadingMode == SearchMode.ThreadingModeE.OnePerProcessorForSearch)
            {
                radioButtonOnePerProc.IsChecked = true;
            }
            else if (settingSearchMode.ThreadingMode == SearchMode.ThreadingModeE.DifferentThreadForSearch)
            {
                radioButtonOneForUI.IsChecked = true;
            }
            else
            {
                radioButtonNoThread.IsChecked = true;
            }
            if (settingSearchMode.BookMode == SettingSearchMode.BookModeE.NoBook)
            {
                radioButtonNoBook.IsChecked = true;
            }
            else if (settingSearchMode.BookMode == SettingSearchMode.BookModeE.Unrated)
            {
                radioButtonUnrated.IsChecked = true;
            }
            else
            {
                radioButtonELO2500.IsChecked = true;
            }
            if ((settingSearchMode.Option & SearchMode.OptionE.UseAlphaBeta) != 0)
            {
                radioButtonAlphaBeta.IsChecked = true;
            }
            else
            {
                radioButtonMinMax.IsChecked  = true;
                checkBoxTransTable.IsEnabled = false;
            }
            if (settingSearchMode.SearchDepth == 0)
            {
                radioButtonAvgTime.IsChecked = true;
                textBoxTimeInSec.Text        = settingSearchMode.TimeOutInSec.ToString();
                plyCount.Value = 6;
            }
            else
            {
                if ((settingSearchMode.Option & SearchMode.OptionE.UseIterativeDepthSearch) == SearchMode.OptionE.UseIterativeDepthSearch)
                {
                    radioButtonFixDepthIterative.IsChecked = true;
                }
                else
                {
                    radioButtonFixDepth.IsChecked = true;
                }
                plyCount.Value        = settingSearchMode.SearchDepth;
                textBoxTimeInSec.Text = "15";
            }
            plyCount2.Content = plyCount.Value.ToString();
            switch (settingSearchMode.RandomMode)
            {
            case SearchMode.RandomModeE.Off:
                radioButtonRndOff.IsChecked = true;
                break;

            case SearchMode.RandomModeE.OnRepetitive:
                radioButtonRndOnRep.IsChecked = true;
                break;

            default:
                radioButtonRndOn.IsChecked = true;
                break;
            }
            textBoxTransSize.Text  = (TransTable.TranslationTableSize / 1000000 * 32).ToString();   // Roughly 32 bytes / entry
            plyCount.ValueChanged += new RoutedPropertyChangedEventHandler <double>(plyCount_ValueChanged);
            switch (settingSearchMode.DifficultyLevel)
            {
            case SettingSearchMode.DifficultyLevelE.VeryEasy:
                radioButtonLevel1.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.Easy:
                radioButtonLevel2.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.Intermediate:
                radioButtonLevel3.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.Hard:
                radioButtonLevel4.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.VeryHard:
                radioButtonLevel5.IsChecked = true;
                break;

            default:
                radioButtonLevelManual.IsChecked = true;
                break;
            }
            radioButtonLevel1.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.VeryEasy);
            radioButtonLevel2.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Easy);
            radioButtonLevel3.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Intermediate);
            radioButtonLevel4.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Hard);
            radioButtonLevel5.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.VeryHard);
            radioButtonLevelManual.ToolTip = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Manual);
        }
Пример #4
0
        /// <summary>
        /// Gets the mode tooltip description
        /// </summary>
        /// <param name="eLevel">   Difficulty level</param>
        public static string ModeTooltip(DifficultyLevelE eLevel)
        {
            SettingSearchMode searchMode = new SettingSearchMode(eLevel);

            return(searchMode.HumanSearchMode());
        }
Пример #5
0
        /// <summary>
        /// Load search setting from property settings
        /// </summary>
        /// <param name="boardEvalUtil">Board evaluation utility</param>
        /// <param name="searchMode">   Search mode setting</param>
        public void LoadSearchMode(BoardEvaluationUtil boardEvalUtil, SettingSearchMode searchMode)
        {
            int iTransTableSize;

            iTransTableSize = (m_settings.TransTableSize < 5 || m_settings.TransTableSize > 256) ? 32 : m_settings.TransTableSize;
            TransTable.TranslationTableSize = iTransTableSize / 32 * 1000000;
            searchMode.Option = m_settings.UseAlphaBeta ? SearchMode.OptionE.UseAlphaBeta : SearchMode.OptionE.UseMinMax;
            switch (m_settings.DifficultyLevel)
            {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                searchMode.DifficultyLevel = (SettingSearchMode.DifficultyLevelE)m_settings.DifficultyLevel;
                break;

            default:
                searchMode.DifficultyLevel = SettingSearchMode.DifficultyLevelE.Manual;
                break;
            }
            switch ((SettingSearchMode.BookModeE)m_settings.BookType)
            {
            case SettingSearchMode.BookModeE.NoBook:
            case SettingSearchMode.BookModeE.Unrated:
                searchMode.BookMode = (SettingSearchMode.BookModeE)m_settings.BookType;
                break;

            default:
                searchMode.BookMode = SettingSearchMode.BookModeE.ELOGT2500;
                break;
            }
            if (m_settings.UseTransTable)
            {
                searchMode.Option |= SearchMode.OptionE.UseTransTable;
            }
            if (m_settings.UsePlyCountIterative)
            {
                searchMode.Option |= SearchMode.OptionE.UseIterativeDepthSearch;
            }
            switch (m_settings.UseThread)
            {
            case 0:
                searchMode.ThreadingMode = SearchMode.ThreadingModeE.Off;
                break;

            case 1:
                searchMode.ThreadingMode = SearchMode.ThreadingModeE.DifferentThreadForSearch;
                break;

            default:
                searchMode.ThreadingMode = SearchMode.ThreadingModeE.OnePerProcessorForSearch;
                break;
            }
            searchMode.WhiteBoardEvaluation = boardEvalUtil.FindBoardEvaluator(m_settings.WhiteBoardEval) ?? boardEvalUtil.BoardEvaluators[0];
            searchMode.BlackBoardEvaluation = boardEvalUtil.FindBoardEvaluator(m_settings.BlackBoardEval) ?? boardEvalUtil.BoardEvaluators[0];
            searchMode.SearchDepth          = m_settings.UsePlyCount | m_settings.UsePlyCountIterative ? ((m_settings.PlyCount > 1 && m_settings.PlyCount < 9) ? m_settings.PlyCount : 6) : 0;
            searchMode.TimeOutInSec         = m_settings.UsePlyCount | m_settings.UsePlyCountIterative ? 0 : (m_settings.AverageTime > 0 && m_settings.AverageTime < 1000) ? m_settings.AverageTime : 15;
            searchMode.RandomMode           = (m_settings.RandomMode >= 0 && m_settings.RandomMode <= 2) ? (SearchMode.RandomModeE)m_settings.RandomMode : SearchMode.RandomModeE.On;
        }
Пример #6
0
        /// <summary>
        /// Default constructor
        /// </summary>
        /// <param name="parent">               Parent Window</param>
        /// <param name="settingSearchMode">    Search mode</param>
        private frmGameParameter(MainWindow parent, SettingSearchMode settingSearchMode) : this()
        {
            ParentWindow      = parent;
            SettingSearchMode = settingSearchMode;
            switch (ParentWindow.PlayingMode)
            {
            case MainWindow.PlayingModeE.DesignMode:
                throw new System.ApplicationException("Must not be called in design mode.");

            case MainWindow.PlayingModeE.ComputerPlayWhite:
            case MainWindow.PlayingModeE.ComputerPlayBlack:
                radioButtonPlayerAgainstComputer.IsChecked = true;
                radioButtonPlayerAgainstComputer.Focus();
                break;

            case MainWindow.PlayingModeE.PlayerAgainstPlayer:
                radioButtonPlayerAgainstPlayer.IsChecked = true;
                radioButtonPlayerAgainstPlayer.Focus();
                break;

            case MainWindow.PlayingModeE.ComputerPlayBoth:
                radioButtonComputerAgainstComputer.IsChecked = true;
                radioButtonComputerAgainstComputer.Focus();
                break;
            }
            if (ParentWindow.PlayingMode == MainWindow.PlayingModeE.ComputerPlayBlack)
            {
                radioButtonComputerPlayBlack.IsChecked = true;
            }
            else
            {
                radioButtonComputerPlayWhite.IsChecked = true;
            }
            switch (SettingSearchMode.DifficultyLevel)
            {
            case SettingSearchMode.DifficultyLevelE.Manual:
                radioButtonLevelManual.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.VeryEasy:
                radioButtonLevel1.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.Easy:
                radioButtonLevel2.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.Intermediate:
                radioButtonLevel3.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.Hard:
                radioButtonLevel4.IsChecked = true;
                break;

            case SettingSearchMode.DifficultyLevelE.VeryHard:
                radioButtonLevel5.IsChecked = true;
                break;

            default:
                radioButtonLevel1.IsChecked = true;
                break;
            }
            CheckState();
            radioButtonLevel1.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.VeryEasy);
            radioButtonLevel2.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Easy);
            radioButtonLevel3.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Intermediate);
            radioButtonLevel4.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Hard);
            radioButtonLevel5.ToolTip      = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.VeryHard);
            radioButtonLevelManual.ToolTip = SettingSearchMode.ModeTooltip(SettingSearchMode.DifficultyLevelE.Manual);
        }