How do I generate a new random number if validation is 1?
Can I just put another “generate number line”: cardDrawn=(1+(rand()%52));
#include <iostream>;
#include <cstdlib>;
#include <ctime>;
#include <cmath>;
using namespace std;
int main(){
int deck[52];
bool validate[52]={0};
int hand[5];
int cardDrawn;
int count=0;
int j=0;
bool repeat=0;
string cardNames[52]= {"Ace of Clubs","2 of Clubs","3 of Clubs","4 of Clubs","5 of Clubs","6 of Clubs","7 of Clubs","8 of Clubs","9 of Clubs","10 of Clubs","Jack of Clubs","Queen of Clubs","King of Clubs",//CLUBS
"Ace of Spades","2 of Spades","3 of Spades","4 of Spades","5 of Spades","6 of Spades","7 of Spades","8 of Spades","9 of Spades","10 of Spades","Jack of Spades","Queen of Spades","King of Spades",//SPADES
"Ace of Hearts","2 of Hearts","3 of Hearts","4 of Hearts","5 of Hearts","6 of Hearts","7 of Hearts","8 of Hearts","9 of Hearts","10 of Hearts","Jack of Hearts","Queen of Hearts","King of Hearts",//HEARTS
"Ace of Diamonds","2 of Diamonds","3 of Diamonds","4 of Diamonds","5 of Diamonds","6 of Diamonds","7 of Diamonds","8 of Diamonds","9 of Diamonds","10 of Diamonds","Jack of Diamonds","Queen of Diamonds","King of Diamonds"//DIAMONDS
};//array to hold card abbreviations.
srand(time(0));
for (int i=0; i<52; i++){ // fills arrays with 1-52
deck[i]=i+1;};
cardDrawn=(1+(rand()%52)); //generates first card.
hand[0]=cardDrawn;
validate[cardDrawn]=1;
//cout << "Card 1: " << hand[0];
do{
cardDrawn=(1+(rand()%52));
if (validate[cardDrawn]==1)
{
//count doesn't update! :D
}
else
{
hand[count]=cardDrawn;
count++;
}
}while(count<4);
cout << "Card 1: " << cardNames[hand[0]];
cout << "\ncard 2: " << cardNames[hand[1]];
cout << "\ncard 3: " << cardNames[hand[2]];
cout << "\ncard 4: " << cardNames[hand[3]];
cout << "\ncard 5: " << cardNames[hand[4]];
return 0;
}
The effect you wish to achieve is much easier using some STL. You can easily extend it to any number of cards drawn (within the same deck) with the same complexity as drawing the first.
In fact, I added 4 players, each having 5 cards in their hand. It’s fairly easy to scale down to just one player. I also simplified the process of adding names for every card.
You could also either generate the list of card names each time the deck runs out, or just use a copy of
cardsfor each deck (vector<string> currentDeck (cards);).If this doesn’t compile at all, you need C++11 and the appropriate compiler option. Otherwise,
for (... : ...)can be replaced withstd::for_each,autocan be replaced with the type, and the vector initializer lists can be replaced with a different method of constructing the vector.