#include <iostream> #include <list> #include <string> using std::cout; using std::cin; using std::endl; using std::string; //H:ハート D:ダイヤ C:クラブ S:スペード J:ジョーカー //string mark[5] ={ "H", "D", "C", "S", "B" }; string mark[5] = { u8"♥", u8"♦", u8"♣", u8"♠", u8"B" }; //A 2~10 J Q K, Bで表示 string num[14] = { "B","A","2","3","4","5","6", "7","8","9","10","J","Q","K" };//最後まで書いてみる struct card { int suit; //スート 0:H 1:D 2:C 3:S 4:B 0~4 int number; //数字 0:J 1:A 2:2 ... 11:J 12:Q 13:K 0~13 }; void printCard(card _dat) { cout << mark[_dat.suit] << num[_dat.number]; } int irand(int _num) { return(rand() % _num); } void shuffle(card _dat[], int _cnum) { for (int i = 0; i < 100; i++) { int n1 = irand(_cnum); int n2 = irand(_cnum); std::swap(_dat[n1], _dat[n2]); } } //card dat; //dat.suit = 2; //dat.number = 12; //"♦Q"を表示! したいけどうまくいかないから DQ int main() { system("chcp 65001"); system("cls"); //配列でやってみる cards[13*4+2] //for分とかを組み合わせて //各マーク4×13枚+ジョーカー2枚でカードを初期化してみよう const int card_num = 4 * 13 + 2; card mycard[card_num]; int i = 0; for (int mk = 0; mk < 4; mk++) //mk(スートの種類を表す変数)0~3 { for (int nb = 1; nb <= 13; nb++)//トランプの番号 { //mycard[13 * mk +(nb-1)].suit = mk ; //mycard[13 * mk +(nb-1)].number = nb ; mycard[i].suit = mk; mycard[i].number = nb; i++; } } //多分 iは 52になっている 通常カード index 0~ index 51 の13x4=52枚 mycard[i].suit = 4;//ババ一枚目 index 52 mycard[i].number = 0; i++; mycard[i].suit = 4;//ババ二枚目 index 53 mycard[i].number = 0; shuffle(mycard, card_num); for (int j = 0; j < card_num; j++) { //index 0~index 53 まで(card_num = 54なので) printCard(mycard[j]); cout << " "; } }