/// <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);
        }
Esempio n. 2
0
 //*********************************************************     
 //
 /// <summary>
 /// Form constructor
 /// </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;
     SetButtonState();
 }
Esempio n. 3
0
        public void PointsTest()
        {
            ChessBoard target = new ChessBoard();                                  // TODO: инициализация подходящего значения

            SearchEngine.SearchMode searchMode    = null;                          // TODO: инициализация подходящего значения
            ChessBoard.PlayerColorE ePlayerToPlay = new ChessBoard.PlayerColorE(); // TODO: инициализация подходящего значения
            int iDepth          = 0;                                               // TODO: инициализация подходящего значения
            int iMoveCountDelta = 0;                                               // TODO: инициализация подходящего значения

            ChessBoard.PosInfoS posInfoWhite = new ChessBoard.PosInfoS();          // TODO: инициализация подходящего значения
            ChessBoard.PosInfoS posInfoBlack = new ChessBoard.PosInfoS();          // TODO: инициализация подходящего значения
            int expected = 0;                                                      // TODO: инициализация подходящего значения
            int actual;

            actual = target.Points(searchMode, ePlayerToPlay, iDepth, iMoveCountDelta, posInfoWhite, posInfoBlack);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Проверьте правильность этого метода теста.");
        }
 /// <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);
 }
Esempio n. 5
0
        /// <summary>
        /// Set the searching mode using the specified setting
        /// </summary>
        /// <param name="settings"> User setting</param>
        private void SetSearchModeFromSetting(SrcChess2.Properties.Settings settings) {
            SearchEngine.SearchMode.OptionE         eOption;
            SearchEngine.SearchMode.ThreadingModeE  eThreadingMode;
            int                                     iTransTableSize;
            IBoardEvaluation                        boardEvalWhite;
            IBoardEvaluation                        boardEvalBlack;

            iTransTableSize                 = (settings.TransTableSize < 5 || settings.TransTableSize > 256) ? 32 : settings.TransTableSize;
            TransTable.TranslationTableSize = iTransTableSize / 32 * 1000000;
            eOption                         = settings.UseAlphaBeta ? SearchEngine.SearchMode.OptionE.UseAlphaBeta : SearchEngine.SearchMode.OptionE.UseMinMax;
            if (settings.UseBook) {
                eOption |= SearchEngine.SearchMode.OptionE.UseBook;
            }
            if (settings.UseTransTable) {
                eOption |= SearchEngine.SearchMode.OptionE.UseTransTable;
            }
            if (settings.UsePlyCountIterative) {
                eOption |= SearchEngine.SearchMode.OptionE.UseIterativeDepthSearch;
            }
            switch(settings.UseThread) {
            case 0:
                eThreadingMode = SearchEngine.SearchMode.ThreadingModeE.Off;
                break;
            case 1:
                eThreadingMode = SearchEngine.SearchMode.ThreadingModeE.DifferentThreadForSearch;
                break;
            default:
                eThreadingMode = SearchEngine.SearchMode.ThreadingModeE.OnePerProcessorForSearch;
                break;
            }
            boardEvalWhite = m_boardEvalUtil.FindBoardEvaluator(settings.WhiteBoardEval);
            if (boardEvalWhite == null) {
                boardEvalWhite = m_boardEvalUtil.BoardEvaluators[0];
            }
            boardEvalBlack = m_boardEvalUtil.FindBoardEvaluator(settings.BlackBoardEval);
            if (boardEvalBlack == null) {
                boardEvalBlack = m_boardEvalUtil.BoardEvaluators[0];
            }
            m_searchMode = new SearchEngine.SearchMode(boardEvalWhite,
                                                       boardEvalBlack,
                                                       eOption,
                                                       eThreadingMode,
                                                       settings.UsePlyCount | settings.UsePlyCountIterative ? ((settings.PlyCount > 1 && settings.PlyCount < 9) ? settings.PlyCount : 6) : 0,  // Maximum depth
                                                       settings.UsePlyCount | settings.UsePlyCountIterative ? 0 : (settings.AverageTime > 0 && settings.AverageTime < 1000) ? settings.AverageTime : 15,
                                                       (settings.RandomMode >= 0 && settings.RandomMode <= 2) ? (SearchEngine.SearchMode.RandomModeE)settings.RandomMode : SearchEngine.SearchMode.RandomModeE.On); // Average time
        }
Esempio n. 6
0
 //*********************************************************     
 //
 /// <summary>
 /// Form constructor
 /// </summary>
 //  
 //*********************************************************     
 public frmChessBoard() {
     SrcChess.Properties.Settings            settings;
     SearchEngine.SearchMode.OptionE         eOption;
     SearchEngine.SearchMode.ThreadingModeE  eThreadingMode;
     int                                     iTransTableSize;
     IBoardEvaluation                        boardEvalWhite;
     IBoardEvaluation                        boardEvalBlack;
     ChessControl.ChessControlColorInfo      colorInfo;
     
     InitializeComponent();
     settings                        = SrcChess.Properties.Settings.Default;
     colorInfo.m_colBlackPiece       = NameToColor(settings.BlackPieceColor);
     colorInfo.m_colWhitePiece       = NameToColor(settings.WhitePieceColor);
     colorInfo.m_colLiteCase         = NameToColor(settings.LiteCaseColor);
     colorInfo.m_colDarkCase         = NameToColor(settings.DarkCaseColor);
     iTransTableSize                 = (settings.TransTableSize < 5 || settings.TransTableSize > 256) ? 32 : settings.TransTableSize;
     TransTable.TranslationTableSize = iTransTableSize / 32 * 1000000;
     eOption                         = settings.UseAlphaBeta ? SearchEngine.SearchMode.OptionE.UseAlphaBeta : SearchEngine.SearchMode.OptionE.UseMinMax;
     if (settings.UseBook) {
         eOption |= SearchEngine.SearchMode.OptionE.UseBook;
     }
     
     if (settings.UseTransTable) {
         eOption |= SearchEngine.SearchMode.OptionE.UseTransTable;
     }
     if (settings.UsePlyCountIterative) {
         eOption |= SearchEngine.SearchMode.OptionE.UseIterativeDepthSearch;
     }
     switch(settings.UseThread) {
     case 0:
         eThreadingMode = SearchEngine.SearchMode.ThreadingModeE.Off;
         break;
     case 1:
         eThreadingMode = SearchEngine.SearchMode.ThreadingModeE.DifferentThreadForSearch;
         break;
     default:
         eThreadingMode = SearchEngine.SearchMode.ThreadingModeE.OnePerProcessorForSearch;
         break;
     }
     m_boardEvalUtil                     = new BoardEvaluationUtil();
     boardEvalWhite                      = m_boardEvalUtil.FindBoardEvaluator(settings.WhiteBoardEval);
     if (boardEvalWhite == null) {
         boardEvalWhite = m_boardEvalUtil.BoardEvaluators[0];
     }
     boardEvalBlack                      = m_boardEvalUtil.FindBoardEvaluator(settings.BlackBoardEval);
     if (boardEvalBlack == null) {
         boardEvalBlack = m_boardEvalUtil.BoardEvaluators[0];
     }
     m_searchMode                        = new SearchEngine.SearchMode(boardEvalWhite,
                                                                       boardEvalBlack,
                                                                       eOption,
                                                                       eThreadingMode,
                                                                       settings.UsePlyCount | settings.UsePlyCountIterative ? ((settings.PlyCount > 1 && settings.PlyCount < 9) ? settings.PlyCount : 6) : 0,  // Maximum depth
                                                                       settings.UsePlyCount | settings.UsePlyCountIterative ? 0 : (settings.AverageTime > 0 && settings.AverageTime < 1000) ? settings.AverageTime : 15,
                                                                       (settings.RandomMode >= 0 && settings.RandomMode <= 2) ? (SearchEngine.SearchMode.RandomModeE)settings.RandomMode : SearchEngine.SearchMode.RandomModeE.On); // Average time
     m_chessCtl                          = new LocalChessControl();
     m_chessCtl.Location                 = new Point(0, 0);
     m_chessCtl.Size                     = new Size(60 * 9, 60 * 9);
     m_chessCtl.UpdateCmdState          += new EventHandler(m_chessCtl_UpdateCmdState);
     m_chessCtl.Father                   = this;
     m_chessCtl.ColorInfo                = colorInfo;
     panelBoard.Controls.Add(m_chessCtl);
     PlayingMode                         = PlayingModeE.PlayerAgainstComputer;
     m_eComputerPlayingColor             = ChessBoard.PlayerColorE.Black;
     m_lostPieceBlack                    = new LostPiecesControl();
     m_lostPieceBlack.Location           = new Point(0,0);
     m_lostPieceBlack.Size               = new Size(200, 200);
     m_lostPieceBlack.Dock               = DockStyle.Fill;
     m_lostPieceBlack.ChessControl       = m_chessCtl;
     m_lostPieceBlack.Color              = true;
     panelBlackLostPiece.Controls.Add(m_lostPieceBlack);
     m_lostPieceWhite                    = new LostPiecesControl();
     m_lostPieceWhite.Location           = new Point(0,0);
     m_lostPieceWhite.Size               = new Size(200, 200);
     m_lostPieceWhite.Dock               = DockStyle.Fill;
     m_lostPieceWhite.ChessControl       = m_chessCtl;
     m_lostPieceWhite.Color              = false;
     panelWhiteLostPiece.Controls.Add(m_lostPieceWhite);
     m_moveViewer                        = new MoveViewer();
     m_moveViewer.Location               = new Point(0,0);
     m_moveViewer.Size                   = panelMoveList.Size;
     m_moveViewer.Dock                   = DockStyle.Fill;
     m_moveViewer.NewMoveSelected       += new MoveViewer.NewMoveSelectedHandler(m_moveViewer_NewMoveSelected);
     m_moveViewer.DisplayMode            = (settings.MoveNotation == 0) ? MoveViewer.DisplayModeE.MovePos : MoveViewer.DisplayModeE.PGN;
     panelMoveList.Controls.Add(m_moveViewer);
     m_chessCtl.MoveListUI               = this;
     m_chessCtl.MoveSelected            += new ChessControl.MoveSelectedEventHandler(m_chessCtl_MoveSelected);
     m_chessCtl.QueryPiece              += new ChessControl.QueryPieceEventHandler(m_chessCtl_QueryPiece);
     m_chessCtl.QueryPawnPromotionType  += new ChessControl.QueryPawnPromotionTypeEventHandler(m_chessCtl_QueryPawnPromotionType);
     m_bSecondThreadBusy                 = false;
     timer1.Tick                        += new EventHandler(timer1_Tick);
     timer1.Start();
     ResizeChessCtl();
     SetCmdState();
     ShowSearchMode();
     flashPieceToolStripMenuItem.Checked  = settings.FlashPiece;
     pgnNotationToolStripMenuItem.Checked = (m_moveViewer.DisplayMode == MoveViewer.DisplayModeE.PGN);
 }