private void showResult() {
   if (mWinner == null) {
     // No one won
     mLogger.print("This match ended in a draw.");
   } else {
     mLogger.print("Player " + mWinner.name() + " won the game!");
   }
 }
  public void start() {
    Logger logger = new ConsoleLogger();
    logger.print("Welcome to Connect 4\n");
    logger.print("\n");

    // Set game state to STARTED
    mGameState = GameState.STARTED;
    mCurrentPlayer = 0;
    printBoard();

    // Continuously take turns while the game is incomplete
    while (mGameState != GameState.COMPLETE) {
      // If no more moves are available, set game state to complete and break out of loop
      if (mBoard.isFull()) {
        mGameState = GameState.COMPLETE;
        continue;
      }

      // Otherwise, take turn for current player
      Player currentPlayer = mPlayers.get(mCurrentPlayer);
      takeTurnForPlayer(currentPlayer);

      // Print the current state of the board
      printBoard();

      // If someone won, set the game state to complete
      mWinner = getWinner();
      if (mWinner != null) {
        mGameState = GameState.COMPLETE;
        continue;
      }

      // Otherwise, set the next player in line
      mCurrentPlayer++;
      if (mCurrentPlayer >= mNumberOfPlayers) mCurrentPlayer = 0;

      // Amateur technique for pausing application, so we can more easily see the game progress
      try {
        Thread.sleep(TURN_DELAY);
      } catch (InterruptedException e) {
        mLogger.error(e.getMessage());
        e.printStackTrace();
      }
    }

    showResult();
  }
 private void printBoard() {
   mLogger.print(mBoard.toString());
   mLogger.print("\n");
 }