我的代碼已經使得撲克牌,但我怎麼洗牌呢?我的shuffle功能似乎不起作用。 我可能在其他地方也有一些錯誤,如果你能看到它們,請讓我知道。它編譯並運行,但它按順序列出了卡片。甲板的卡,不能弄清楚如何洗牌
#include <iostream>
#include <string>
#include <ctime>
#include <vector>
using namespace std;
class Card{
public:
int face;
int suit;
void setData(int f, int s){
face = f;
suit = s;
}
string toString(int F, int S){
static string faces[13] = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"};
static string suits[4] = {"Clubs", "Spades", "Diamonds", "Hearts"};
string FandS = faces[F] + " of " + suits[S] + "\n";
return FandS;
}
};
class DeckOfCards:public Card{
public:
Card deck[13][4];
int currentCard;
void shuffle(){
srand (time(0));
Card temp[13][4]; int R, r;
for(int shuf=0; shuf<52; shuf++){
for(int i=0; i<13; i++){
for(int j=0; j<4; j++){
R = rand()%13;
r = rand()%4;
temp[i][j] = deck[i][j];
deck[i][j] = deck[R][r];
deck[R][r] = temp[i][j];
}
}
}
}
bool moreCards(){
currentCard=52;
currentCard--;
if(currentCard>0){
return true;
}else
return false;
}
void dealCard(){
for(int i=0; i<13; i++){
for(int j=0; j<4; j++){
cout << toString(i, j);
}
}
}
DeckOfCards(){
for(int i=0; i<13; i++){
for(int j=0; j<4; j++){
deck[i][j].setData(face, suit);
}
}
}
};
int main(){
DeckOfCards myDeck;
myDeck.shuffle();
myDeck.dealCard();
return 0;
}
'的std :: random_shuffle()'通常是一個很大的可能性。 – WhozCraig 2013-02-26 20:41:56
你是什麼意思「它不工作」?這些卡片不是隨機排列的?這些卡片根本不存在?重複卡片?程序崩潰? – chrisaycock 2013-02-26 20:43:10
你的卡片初始化不正確,也不是你的Card :: toString()成員。 – WhozCraig 2013-02-26 20:51:09