ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

C言語(ソース議論をベースに)コミュのトランプをシャッフル

  • mixiチェック
  • このエントリーをはてなブックマークに追加
#include <stdio.h>
#include <string.h>

#define KAZU 52
#define SPADE 0
#define HEART 1
#define DIAMOND 2
#define CLUBS 3
#define EGARA 4
#define SUZI 13

typedef struct
{
int id; // 52枚のカードの通し番号
int suit_code; //スートのコード(0:スペード1:ハート2:ダイヤ3:クラブ)
int rank; //1〜13のカードの数字
char symbol[10]; // スートとランクの組(SAなど)
} CARD;

int main()
{
CARD card[KAZU];
int i, j; //数字を格納する変数i,jを宣言

for (i = 0; i < KAZU; i++)
card[i].id = i;

for (i = 0; i < EGARA; i++) {
for (j = 0; j < SUZI; j++) {
card[i * SUZI + j].suit_code = i;
card[i * SUZI + j].rank = j + 1;

switch (i) {
case SPADE:
card[i * SUZI + j].symbol[0] = 'S';
break;

case HEART:
card[i * SUZI + j].symbol[0] = 'H';
break;

case DIAMOND:
card[i * SUZI + j].symbol[0] = 'D';
break;

case CLUBS:
card[i * SUZI + j].symbol[0] = 'C';
break;

default:
break;
}

switch (j) {
case 0:
card[i * SUZI + j].symbol[1] = 'A';
break;

case 9:
strcpy(card[i * SUZI + j].symbol + 1, "10");
break;

case 10:
card[i * SUZI + j].symbol[1] = 'J';
break;

case 11:
card[i * SUZI + j].symbol[1] = 'Q';
break;

case 12:
card[i * SUZI + j].symbol[1] = 'K';
break;

default:
card[i * SUZI + j].symbol[1] = '2' + j - 1;
break;
}

if (j != 9)
card[i * SUZI + j].symbol[2] = '\0';
}
}

for (i = 0; i < EGARA; i++) {
for (j = 0; j < SUZI; j++) {
printf("%s ", card[i * SUZI + j].symbol); //文字を表示する
}
puts("");
}

return 0; //終わり
}




このプログラムはトランプを模しており、
S:スペードH:ハートD:ダイヤC:クローバーです
このままだと
SA S2 S3 S4 S5〜S10 SJ SQ SK
HA 〜〜〜〜〜〜〜〜 HJ HQ HK
DA 〜〜〜〜〜〜〜〜 DJ DQ DK
CA 〜〜〜〜〜〜〜〜 CJ CQ CK
と表示されます、これを乱数などを使ってバラバラに表示していのですが、中々難しくて、、、みなさんならどうやりますか?

コメント(2)

 色々やりようは有ると思いますし、考え方も場合により・人により様々だと思いますが、私なりの一例を示します。
http://codepad.org/D7EHZBaI

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

C言語(ソース議論をベースに) 更新情報

C言語(ソース議論をベースに)のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング