/// <summary> /// Class constructor /// </summary> /// <param name="searchMode"> Actual search mode</param> /// <param name="boardEvalUtil"> Board Evaluation list</param> public frmSearchMode(SearchEngine.SearchMode searchMode, BoardEvaluationUtil boardEvalUtil) : this() { int iPos; m_searchMode = searchMode; m_boardEvalUtil = boardEvalUtil; foreach (IBoardEvaluation boardEval in m_boardEvalUtil.BoardEvaluators) { iPos = comboBoxWhiteBEval.Items.Add(boardEval.Name); if (searchMode.m_boardEvaluationWhite == boardEval) { comboBoxWhiteBEval.SelectedIndex = iPos; } iPos = comboBoxBlackBEval.Items.Add(boardEval.Name); if (searchMode.m_boardEvaluationBlack == boardEval) { comboBoxBlackBEval.SelectedIndex = iPos; } } checkBoxTransTable.IsChecked = ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseTransTable) != 0); if (searchMode.m_eThreadingMode == SearchEngine.SearchMode.ThreadingModeE.OnePerProcessorForSearch) { radioButtonOnePerProc.IsChecked = true; } else if (searchMode.m_eThreadingMode == SearchEngine.SearchMode.ThreadingModeE.DifferentThreadForSearch) { radioButtonOneForUI.IsChecked = true; } else { radioButtonNoThread.IsChecked = true; } checkBoxBookOpening.IsChecked = ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseBook) != 0); if ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseAlphaBeta) != 0) { radioButtonAlphaBeta.IsChecked = true; } else { radioButtonMinMax.IsChecked = true; checkBoxTransTable.IsEnabled = false; } if (searchMode.m_iSearchDepth == 0) { radioButtonAvgTime.IsChecked = true; textBoxTimeInSec.Text = searchMode.m_iTimeOutInSec.ToString(); plyCount.Value = 6; } else { if ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseIterativeDepthSearch) == SearchEngine.SearchMode.OptionE.UseIterativeDepthSearch) { radioButtonFixDepthIterative.IsChecked = true; } else { radioButtonFixDepth.IsChecked = true; } plyCount.Value = searchMode.m_iSearchDepth; textBoxTimeInSec.Text = "15"; } plyCount2.Content = plyCount.Value.ToString(); switch(searchMode.m_eRandomMode) { case SearchEngine.SearchMode.RandomModeE.Off: radioButtonRndOff.IsChecked = true; break; case SearchEngine.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); }
/// <summary> /// Class Ctor /// </summary> /// <param name="boardEvalUtil"> Board evaluation utility class</param> /// <param name="searchModeTemplate"> Search mode template</param> public frmTestBoardEval(BoardEvaluationUtil boardEvalUtil, SearchEngine.SearchMode searchModeTemplate) : this() { m_searchMode = new SearchEngine.SearchMode(boardEvalUtil.BoardEvaluators[0], boardEvalUtil.BoardEvaluators[0], SearchEngine.SearchMode.OptionE.UseAlphaBeta, searchModeTemplate.m_eThreadingMode, 4, 0, searchModeTemplate.m_eRandomMode); foreach (IBoardEvaluation boardEval in boardEvalUtil.BoardEvaluators) { comboBoxWhiteBEval.Items.Add(boardEval.Name); comboBoxBlackBEval.Items.Add(boardEval.Name); } comboBoxWhiteBEval.SelectedIndex = 0; comboBoxBlackBEval.SelectedIndex = (comboBoxBlackBEval.Items.Count == 0) ? 0 : 1; m_boardEvalUtil = boardEvalUtil; plyCount2.Content = plyCount.Value.ToString(); gameCount2.Content = gameCount.Value.ToString(); plyCount.ValueChanged += new RoutedPropertyChangedEventHandler <double>(plyCount_ValueChanged); gameCount.ValueChanged += new RoutedPropertyChangedEventHandler <double>(gameCount_ValueChanged); }
/// <summary> /// Class Ctor /// </summary> /// <param name="boardEvalUtil"> Board evaluation utility class</param> /// <param name="searchModeTemplate"> Search mode template</param> public frmTestBoardEval(BoardEvaluationUtil boardEvalUtil, SearchEngine.SearchMode searchModeTemplate) : this() { m_searchMode = new SearchEngine.SearchMode(boardEvalUtil.BoardEvaluators[0], boardEvalUtil.BoardEvaluators[0], SearchEngine.SearchMode.OptionE.UseAlphaBeta, searchModeTemplate.m_eThreadingMode, 4, 0, searchModeTemplate.m_eRandomMode); foreach (IBoardEvaluation boardEval in boardEvalUtil.BoardEvaluators) { comboBoxWhiteBEval.Items.Add(boardEval.Name); comboBoxBlackBEval.Items.Add(boardEval.Name); } comboBoxWhiteBEval.SelectedIndex = 0; comboBoxBlackBEval.SelectedIndex = (comboBoxBlackBEval.Items.Count == 0) ? 0 : 1; m_boardEvalUtil = boardEvalUtil; plyCount2.Content = plyCount.Value.ToString(); gameCount2.Content = gameCount.Value.ToString(); plyCount.ValueChanged += new RoutedPropertyChangedEventHandler<double>(plyCount_ValueChanged); gameCount.ValueChanged += new RoutedPropertyChangedEventHandler<double>(gameCount_ValueChanged); }
/// <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> /// Class Ctor /// </summary> public MainWindow() { SrcChess2.Properties.Settings settings; ExecutedRoutedEventHandler onExecutedCmd; CanExecuteRoutedEventHandler onCanExecuteCmd; PieceSet pieceSet; InitializeComponent(); settings = SrcChess2.Properties.Settings.Default; m_listPieceSet = PieceSetStandard.LoadPieceSetFromResource(); pieceSet = m_listPieceSet[settings.PieceSet]; m_chessCtl.Father = this; m_chessCtl.LiteCellColor = NameToColor(settings.LiteCellColor); m_chessCtl.DarkCellColor = NameToColor(settings.DarkCellColor); m_chessCtl.WhitePieceColor = NameToColor(settings.WhitePieceColor); m_chessCtl.BlackPieceColor = NameToColor(settings.BlackPieceColor); m_colorBackground = NameToColor(settings.BackgroundColor); Background = new SolidColorBrush(m_colorBackground); m_boardEvalUtil = new BoardEvaluationUtil(); SetSearchModeFromSetting(settings); m_chessCtl.UpdateCmdState += new EventHandler(m_chessCtl_UpdateCmdState); PlayingMode = PlayingModeE.PlayerAgainstComputer; m_eComputerPlayingColor = ChessBoard.PlayerColorE.Black; m_lostPieceBlack.ChessBoardControl = m_chessCtl; m_lostPieceBlack.Color = true; m_lostPieceWhite.ChessBoardControl = m_chessCtl; m_lostPieceWhite.Color = false; m_moveViewer.NewMoveSelected += new MoveViewer.NewMoveSelectedHandler(m_moveViewer_NewMoveSelected); m_moveViewer.DisplayMode = (settings.MoveNotation == 0) ? MoveViewer.DisplayModeE.MovePos : MoveViewer.DisplayModeE.PGN; m_chessCtl.MoveListUI = this; m_chessCtl.MoveSelected += new ChessBoardControl.MoveSelectedEventHandler(m_chessCtl_MoveSelected); m_chessCtl.QueryPiece += new ChessBoardControl.QueryPieceEventHandler(m_chessCtl_QueryPiece); m_chessCtl.QueryPawnPromotionType += new ChessBoardControl.QueryPawnPromotionTypeEventHandler(m_chessCtl_QueryPawnPromotionType); m_bSecondThreadBusy = false; m_dispatcherTimer = new DispatcherTimer(TimeSpan.FromSeconds(1), DispatcherPriority.Normal, new EventHandler(dispatcherTimer_Tick), Dispatcher); m_dispatcherTimer.Start(); SetCmdState(); ShowSearchMode(); mnuOptionFlashPiece.IsChecked = settings.FlashPiece; mnuOptionPGNNotation.IsChecked = (m_moveViewer.DisplayMode == MoveViewer.DisplayModeE.PGN); PieceSet = pieceSet; onExecutedCmd = new ExecutedRoutedEventHandler(OnExecutedCmd); onCanExecuteCmd = new CanExecuteRoutedEventHandler(OnCanExecuteCmd); foreach (RoutedUICommand cmd in m_arrCommands) { CommandBindings.Add(new CommandBinding(cmd, onExecutedCmd, onCanExecuteCmd)); } }
/// <summary> /// Class constructor /// </summary> /// <param name="searchMode"> Actual search mode</param> /// <param name="boardEvalUtil"> Board Evaluation list</param> public frmSearchMode(SearchEngine.SearchMode searchMode, BoardEvaluationUtil boardEvalUtil) : this() { int iPos; m_searchMode = searchMode; m_boardEvalUtil = boardEvalUtil; foreach (IBoardEvaluation boardEval in m_boardEvalUtil.BoardEvaluators) { iPos = comboBoxWhiteBEval.Items.Add(boardEval.Name); if (searchMode.m_boardEvaluationWhite == boardEval) { comboBoxWhiteBEval.SelectedIndex = iPos; } iPos = comboBoxBlackBEval.Items.Add(boardEval.Name); if (searchMode.m_boardEvaluationBlack == boardEval) { comboBoxBlackBEval.SelectedIndex = iPos; } } checkBoxTransTable.IsChecked = ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseTransTable) != 0); if (searchMode.m_eThreadingMode == SearchEngine.SearchMode.ThreadingModeE.OnePerProcessorForSearch) { radioButtonOnePerProc.IsChecked = true; } else if (searchMode.m_eThreadingMode == SearchEngine.SearchMode.ThreadingModeE.DifferentThreadForSearch) { radioButtonOneForUI.IsChecked = true; } else { radioButtonNoThread.IsChecked = true; } checkBoxBookOpening.IsChecked = ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseBook) != 0); if ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseAlphaBeta) != 0) { radioButtonAlphaBeta.IsChecked = true; } else { radioButtonMinMax.IsChecked = true; checkBoxTransTable.IsEnabled = false; } if (searchMode.m_iSearchDepth == 0) { radioButtonAvgTime.IsChecked = true; textBoxTimeInSec.Text = searchMode.m_iTimeOutInSec.ToString(); plyCount.Value = 6; } else { if ((searchMode.m_eOption & SearchEngine.SearchMode.OptionE.UseIterativeDepthSearch) == SearchEngine.SearchMode.OptionE.UseIterativeDepthSearch) { radioButtonFixDepthIterative.IsChecked = true; } else { radioButtonFixDepth.IsChecked = true; } plyCount.Value = searchMode.m_iSearchDepth; textBoxTimeInSec.Text = "15"; } plyCount2.Content = plyCount.Value.ToString(); switch (searchMode.m_eRandomMode) { case SearchEngine.SearchMode.RandomModeE.Off: radioButtonRndOff.IsChecked = true; break; case SearchEngine.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); }
/// <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; }