dimanche 16 juillet 2017

My program prints random cards, but it will not recognize when there is a repeat card

I am a beginner with C++ and have tried a few different things, but no matter what I try it doesn’t seem to recognize when a card has already been drawn...

I have tried to utilize to bool isDrawn, but after a few attempts of that with no success I am not 100% sure where to go from here

class Card {
 public:

string suitName;
int cardNumber;
void printCard() {
    if (cardNumber == 1) {
        cout << "Ace";
    } else if (cardNumber == 11) {
        cout << "Jack";
    } else if (cardNumber == 12) {
        cout << "Queen";
    } else if (cardNumber == 13) {
        cout << "King";
    } else
        cout << cardNumber;
        cout << " of " << suitName << endl;
}

bool isDrawn = false;


};
class Deck {

 public:
    Card deck[52];

void makeDeck(){
    int counter = 0;
        string suits[] = { "Spades", "Hearts", "Clubs", "Diamonds" };
        string face[] = { "Ace", "Jack", "Queen", "King" };

        for (int i = 0; i <= 3; i++) {
            for (int j = 0; j < 13; j++) {
                deck[counter].isDrawn = false;
                deck[counter].cardNumber = (j + 1);
                deck[counter].suitName = suits[i];
                counter++;
            }    
        }
    }

Card drawCard() {
    int randcard;
    do{
        randcard = rand() % 52;
       }
    while (deck[randcard].isDrawn == true);

    return deck[randcard];


};

class Player {

 public:
    vector<Card> hand;
    void setName(string s){
        name = s;
    }
string printName(){
    return name;
}
    void printHand() {
        for (int i = 0; i < hand.size(); i++){
            hand.at(i).printCard();}
  }
   private:
       string name;
};


int main() {
    Deck my_deck;

Player p1;
p1.setName("HAL 9000");
  cout << p1.printName() << endl;
my_deck.makeDeck();
p1.hand.push_back(my_deck.drawCard());
p1.hand.push_back(my_deck.drawCard());
p1.hand.push_back(my_deck.drawCard());
p1.printHand();
  cout << endl;

return 0;

}




Aucun commentaire:

Enregistrer un commentaire