示例#1
0
        /// <summary>
        /// Place penguin for non human player
        /// </summary>
        public void PlacePenguin()
        {
            if (CurrentPlayer.PlayerType == PlayerType.AIEasy)
            {
                AI_easy.PlacePenguins((BoardClass)Board, (PlayerClass)CurrentPlayer);
            }
            else if (CurrentPlayer.PlayerType == PlayerType.AIMedium)
            {
                AI_medium.PlacePenguin(Board, CurrentPlayer, AIPenguins);
                NextAction = NextActionType.PlacePenguin;
                if (Turn == Players.Count() * PenguinsByPlayer)
                {
                    NextAction = NextActionType.MovePenguin;
                }
            }

            NextAction = NextActionType.PlacePenguin;
            if (Turn == Players.Count() * PenguinsByPlayer)
            {
                NextAction = NextActionType.MovePenguin;
            }

            Turn++;
            NextPlayer();
            StateChanged.Invoke(this, null);
        }
示例#2
0
        /// <summary>
        /// Move a non human player
        /// </summary>
        public void Move()
        {
            bool endGame = true;

            foreach (var item in Players)
            {
                if (item.Penguins > 0)
                {
                    endGame = false;
                }
            }


            if (CurrentPlayer.PlayerType == PlayerType.AIEasy)
            {
                endGame = AI_easy.MovePenguins((BoardClass)Board, (PlayerClass)CurrentPlayer);
            }
            else if (CurrentPlayer.PlayerType == PlayerType.AIMedium)
            {
                AI_medium.Move(Board, CurrentPlayer, AIPenguins);
            }

            if (!endGame)
            {
                NextAction = NextActionType.MovePenguin;
                NextPlayer();
            }
            else
            {
                NextPlayer();
                endGame = false;

                while (!endGame)
                {
                    endGame = AI_easy.MovePenguins((BoardClass)Board, (PlayerClass)CurrentPlayer);
                }

                NextAction = NextActionType.Nothing;
            }


            StateChanged(this, null);
        }