Exemple #1
0
        public void RunGameLoop()
        {
            var gameLogger = new GameLogger();

            var canBlackMove = true;
            var canWhiteMove = true;

            var hintBoard = new Board(GameBoard);

            while (canBlackMove || canWhiteMove)
            {
                hintBoard = CalculateHints(GameConfig.Hints, CurrentPlayer);
                Graphics.DrawBoard(GameBoard, hintBoard);
                Graphics.PrintScore(GameBoard);
                Graphics.AnnouncePlayerMove(CurrentPlayer);

                var move = InputHandler.ReadInput(GameConfig, GameBoard, CurrentPlayer);

                gameLogger.WriteToGamelog(move);
                MakeMove(move, CurrentPlayer);
                PlacePiece(move, CurrentPlayer);

                // Change the current player
                CurrentPlayer = GetOtherPlayer(CurrentPlayer);

                // Test if players can move
                canBlackMove = CanPlayerMove(Constants.Black);
                canWhiteMove = CanPlayerMove(Constants.White);

                // And change player if current player can't move
                if (CurrentPlayer == Constants.Black && !canBlackMove)
                {
                    Console.WriteLine("\nBLACK, can't make a move");
                    CurrentPlayer = GetOtherPlayer(CurrentPlayer);
                }

                if (CurrentPlayer == Constants.White && !canWhiteMove)
                {
                    Console.WriteLine("\nWHITE, can't make a move");
                    CurrentPlayer = GetOtherPlayer(CurrentPlayer);
                }
            }

            Graphics.DrawBoard(GameBoard, hintBoard);
            Graphics.PrintFinalScore(GameBoard);
        }