void Game::Play()
{
  //deal initial 2 cards to everyone
  vector<Player>::iterator pPlayer;
  for (int i = 0; i < 2; ++i)
  {
    for (pPlayer = m_Players.begin(); pPlayer != m_Players.end(); ++pPlayer)
          m_Deck.Deal(*pPlayer);

    m_Deck.Deal(m_House);
   }

   //hide house's first card
   m_House.FlipFirstCard();

  //display everyone's hand
  for (pPlayer = m_Players.begin(); pPlayer != m_Players.end(); ++pPlayer)
        cout << *pPlayer << endl;

  cout << m_House << endl;

  //deal additional cards to players
  for (pPlayer = m_Players.begin(); pPlayer != m_Players.end(); ++pPlayer)
         m_Deck.AdditionalCards(*pPlayer);

  //reveal house's first card
  m_House.FlipFirstCard();
  cout << endl << m_House;

  //deal additional cards to house
  m_Deck.AdditionalCards(m_House);

  if (m_House.IsBusted())
  {
    //everyone still playing wins
    for (pPlayer = m_Players.begin(); pPlayer != m_Players.end(); ++pPlayer)
       if (!(pPlayer->IsBusted()))
             pPlayer->Win();
  }
  else
  {
    //compare each player still playing to house
    for (pPlayer = m_Players.begin(); pPlayer != m_Players.end();
          ++pPlayer)
    if (!(pPlayer->IsBusted()))
    {
        if (pPlayer->GetTotal() > m_House.GetTotal())
            pPlayer->Win();

        else if (pPlayer->GetTotal() < m_House.GetTotal())
            pPlayer->Lose();

        else
            pPlayer->Push();
        }
  }
  //remove everyone's cards
  for (pPlayer = m_Players.begin(); pPlayer != m_Players.end(); ++pPlayer)
        pPlayer->Clear();

  m_House.Clear();
}