トランプのプログラム

アバター
大白定義
記事: 14
登録日時: 14年前
住所: 三重県

トランプのプログラム

投稿記事 by 大白定義 » 14年前

トランプを配って大富豪っぽく並べるプログラムを組んでみた。
ジョーカーは無しですけどね。

コード

CODE:

#include 
#include 
#include 

#define TYPE		(4)
#define NUMBER		(13)
#define CARD_NUMBER	(TYPE*NUMBER)

#define PEOPLE		(4)
#define HANDCARD_NUM	(CARD_NUMBER/PEOPLE)

#define TYPE_CLAB	(0)
#define TYPE_DIAMOND	(1)
#define TYPE_HEART	(2)
#define TYPE_SPADE	(3)

#define UNUSE		(0)
#define USED		(1)

struct Players{
	int Rank;
	int HandCards[HANDCARD_NUM];
};

//交換する部分
void swap(int *x, int *y){
	int t;
	t = *x;
	*x = *y;
	*y = t;
}

//ソートはバブリッシュにいこうず
void sort(int allow[], int num){
	int i, j, a, b;

	for(i=0;i<num;i++){
		for(j=0;j<num;j++){
			//カードの数を取得
			a = allow[i]%NUMBER;
			b = allow[j]%NUMBER;
			
			//2以下の数は13より大きいと判断させる
			if(a < 2) a += 13;
			if(b < 2) b += 13;
			
			//小さい順にソート
			if(a < b) swap(&allow[i], &allow[j]);
		}
	}
}

//何持ってるかを見せる
void draw(int n){
	int type = n / NUMBER;		//種類
	int number = n % NUMBER;	//数

	switch(type){
		case TYPE_CLAB:
			printf("クラブの");
			break;
		case TYPE_DIAMOND:
			printf("ダイアの");
			break;
		case TYPE_HEART:
			printf("ハートの");
			break;
		case TYPE_SPADE:
			printf("スペードの");
			break;
	}

	printf("%dです!\n", number+1);
}

int main(void){
	int i, j;
	int Cards[CARD_NUMBER];
	struct Players Player[PEOPLE];

	//乱数初期化
	srand((unsigned int)time(NULL));

	//山札初期化
	for(i=0;i<CARD_NUMBER;i++) Cards[i] = UNUSE;
	//プレイヤー初期化
	for(i=0;i<PEOPLE;i++){
		//順位は存在しない(とりあえずつけただけ)
		Player[i].Rank = 0;
		//カードを配る
		for(j=0;j<HANDCARD_NUM;j++){
			//カードをランダムにセット。それがすでに配られていた場合やり直し
			do{
				Player[i].HandCards[j] = rand()%CARD_NUMBER;
			}while(Cards[Player[i].HandCards[j]] != UNUSE);
			//使用済みにする(なんかイヤラシー)
			Cards[Player[i].HandCards[j]] = USED;
		}
		//ソートする
		sort(Player[i].HandCards, HANDCARD_NUM);
	}

	//結果表示
	for(i=0;i<PEOPLE;i++){
		printf("%d人目\n", i+1);
		for(j=0;j<HANDCARD_NUM;j++){
			draw(Player[i].HandCards[j]);
		}
	}

	return 0;
}
結果

CODE:

1人目
ハートの3です!
ダイアの5です!
クラブの5です!
スペードの6です!
ダイアの8です!
クラブの9です!
ハートの9です!
ダイアの11です!
スペードの12です!
スペードの13です!
ダイアの13です!
クラブの1です!
ダイアの2です!
2人目
クラブの3です!
スペードの3です!
ダイアの3です!
クラブの4です!
スペードの5です!
スペードの7です!
スペードの8です!
ダイアの9です!
スペードの10です!
ダイアの10です!
クラブの13です!
ハートの13です!
スペードの1です!
3人目
ハートの4です!
スペードの4です!
ダイアの6です!
ハートの7です!
クラブの7です!
スペードの9です!
ハートの10です!
クラブの10です!
クラブの11です!
クラブの12です!
ハートの1です!
ハートの2です!
スペードの2です!
4人目
ダイアの4です!
ハートの5です!
ハートの6です!
クラブの6です!
ダイアの7です!
クラブの8です!
ハートの8です!
ハートの11です!
スペードの11です!
ハートの12です!
ダイアの12です!
ダイアの1です!
クラブの2です!
ここから大富豪っぽいシステムを作っていけたらいいなぁ、と思っていますが、その前に飽きるだろうなぁ・・・

コメントはまだありません。