예제 #1
0
 private void Game_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (e.PropertyName == nameof(Game.Phase))
     {
         if (Game.Phase == GamePhase.Player1Turn && ++Round < MaxRound)
         {
             if (!Abort)
             {
                 Task.Run(Game.AiPlayer1Move);
             }
         }
         NeedsUiUpdate?.Invoke(this, EventArgs.Empty);
     }
 }
예제 #2
0
        public void StartGame(Nou p1, IArtificialIntelligence p2)
        {
            P1 = p1;
            P2 = p2;
            if (Game != null)
            {
                Game.PropertyChanged -= Game_PropertyChanged;
                Game.SyncRequired    -= Game_SyncRequired;
            }
            Round = 0;
            Game  = new LocalGame();
            Game.SetAi(p1, 1);
            Game.SetAi(p2, 2);
            Game.InitGame();

            Game.AiCommandDelay = AiDelay;

            Game.PropertyChanged += Game_PropertyChanged;
            Game.SyncRequired    += Game_SyncRequired;

            NeedsUiUpdate?.Invoke(this, EventArgs.Empty);
            ++Round;
            Task.Run(async() => await Game.AiPlayer1Move());
        }