トランプを表す構造体を作って初期化して表示する
#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 << " ";
	}
 
}
  • game-engineer/classes/2022/game-programing-1/first-term/9/9-06-25.txt
  • 最終更新: 3年前
  • by root