/// <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; }
/// <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); }
/// <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); }
/// <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()); }
/// <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; }
/// <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); }