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); }