Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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);
 }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        /// <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));
            }
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
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;
        }