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