deck.cpp

/*

Programmer: Jennifer Leopold

Date: April 6, 2018

File: cardDeck.cpp

Purpose: This file contains the definitions of the functions

for the Card class.

*/

#include "cardDeck.h"

using namespace std;

void CardDeck::initializeFromFile()

{

ifstream fin;

int number;

Rescue rescue;

string rescueString, saying, danger;

char ch;

char cstring[50];

fin.open(DANGER_CARD_FILE);

if (!fin)

{

cout << "Cannot open file " << DANGER_CARD_FILE << "!\n";

exit(1);

}

m_numCards = 0;

fin >> number;

while (number != DANGER_CARD_FILE_SENTINEL)

{

fin.get(ch); // read DANGER_CARD_FILE_DELIMITER after number

getline(fin, saying, DANGER_CARD_FILE_DELIMITER);

getline(fin, danger, DANGER_CARD_FILE_DELIMITER );

getline(fin, rescueString, '\n');

rescue = StringToRescue(rescueString);

m_card[m_numCards] = Card(number, saying, danger, rescue);

m_numCards++;

fin >> number;

}

fin.close();

shuffleCards();

return;

}

void CardDeck::shuffleCards()

{

Card temp;

int newPosition;

for (unsigned int i = 0; i < m_numCards; i++)

{

newPosition = rand() % m_numCards;

temp = m_card[i];

m_card[i] = m_card[newPosition];

m_card[newPosition] = temp;

}

return;

}

ostream& operator << (ostream& outs, const CardDeck& d)

{

outs << "\nThe deck of " << d.m_numCards

<< " cards contains:\n";

for (unsigned int i = 0; i < d.m_numCards; i++)

outs << d.m_card[i] << endl;

return(outs);

}

Card CardDeck::getNextCard()

{

static unsigned int pos = -1;

pos++;

if (pos == m_numCards)

{

cout << "\nPlease wait...re-shuffling the cards\n\n";

shuffleCards();

pos = 0;

}

return(m_card[pos]);

}