Exemple #1
0
        public void Go()
        {
            var goParams = new Uci.UciGoParameters
            {
                BlackInc  = this.TimeSettings.MoveIncrement * 1000,
                BlackTime = Clock.InfiniteTime ? (long?)null : Clock.TimeRemainingBlack,
                Depth     = TimeSettings.Depth,
                Infinite  = TimeSettings.TimeModeMachine == TimeMode.Infinite,
                MoveTime  = TimeSettings.TimeModeMachine == TimeMode.TimePerMove ? TimeSettings.TimePerMove : null,
                Nodes     = TimeSettings.TimeModeMachine == TimeMode.NodeCount ? TimeSettings.NodeCount : null,
                WhiteInc  = TimeSettings.MoveIncrement * 1000,
                WhiteTime = Clock.InfiniteTime ? (long?)null : Clock.TimeRemainingWhite,
            };

            if (Board.PlayerTurn == Color.White)
            {
                PlayerWhite.Play(goParams);
                Clock.StartClock(Color.White);
            }
            else
            {
                PlayerBlack.Play(goParams);
                Clock.StartClock(Color.Black);
            }
        }
Exemple #2
0
 public void LoadAndSetup()
 {
     PlayerWhite.RegisterCommandListener((d, msg) => Log.InfoFormat("White {0}: {1}", d == UciProcess.CommandDirection.EngineInput ? "Input" : "Output", msg));
     PlayerBlack.RegisterCommandListener((d, msg) => Log.InfoFormat("Black {0}: {1}", d == UciProcess.CommandDirection.EngineInput ? "Input" : "Output", msg));
     PlayerWhite.Start();
     PlayerBlack.Start();
 }
 public void Proceed()
 {
     if (GameState.Winner == null)
     {
         if (GameState.CurTurn == PColor.White)
         {
             if (GameState.CurTurnType == GameState.TurnType.Move)
             {
                 PlayerWhite.AskForMove(this);
             }
             else
             {
                 PlayerWhite.AskForRoll(this);
             }
         }
         else
         {
             if (GameState.CurTurnType == GameState.TurnType.Move)
             {
                 PlayerBlack.AskForMove(this);
             }
             else
             {
                 PlayerBlack.AskForRoll(this);
             }
         }
     }
     else
     {
         foreach (IGameControllerEvent l in _listeners)
         {
             l.OnGameEnd();
         }
     }
 }
Exemple #4
0
    /// <summary>
    /// Call by Controller, to initialize and start new game
    /// </summary>
    public void NewGame()
    {
        PlayerBlack = GameInfo.Instance.ShouldUpsidedown ? playerUp : playerDown;
        PlayerWhite = GameInfo.Instance.ShouldUpsidedown ? playerDown : playerUp;

        PlayerBlack.NewGame(Unit.OwnerEnum.Black);
        PlayerWhite.NewGame(Unit.OwnerEnum.White);
    }
Exemple #5
0
 public void Dispose()
 {
     if (!isDisposed)
     {
         PlayerWhite.Dispose();
         PlayerBlack.Dispose();
         Clock.Dispose();
         isDisposed = true;
     }
 }
Exemple #6
0
 public void Stop()
 {
     if (Board.PlayerTurn == Color.White)
     {
         PlayerWhite.Stop();
         Clock.StopClock();
     }
     else
     {
         PlayerBlack.Stop();
         Clock.StopClock();
     }
 }
Exemple #7
0
        private void BoardView_WantNewGame(object sender, int Players)
        {
            PlayerWhite = (((Players & 0b10) >> 1) == 1) ? (Player)(new HumanPlayer()) : (new EnginePlayer());
            PlayerBlack = ((Players & 0b01) == 1) ? (Player)(new HumanPlayer()) : (new EnginePlayer());
            this.PlayerWhite.MakesMove += Player_MakesMove;
            this.PlayerBlack.MakesMove += Player_MakesMove;

            GamePosition = new Position();
            BoardView.SetStartPos(GamePosition);

            if (PlayerBlack is HumanPlayer && PlayerWhite is EnginePlayer && !BoardView.Flipped)
            {
                BoardView.Flip();
            }
            if (PlayerWhite is HumanPlayer && PlayerBlack is EnginePlayer && BoardView.Flipped)
            {
                BoardView.Flip();
            }

            PlayerWhite.YourMove(GamePosition);
        }
Exemple #8
0
 public void Next()
 {
     PlayerWhite.TakeTurn();
 }