#include <stdio.h> #include <time.h> #include <stdlib.h> int card[4][13]; char *number[13] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; char *mark[4] = {"♥","♦","♠","♣"}; int main (void) { int i; int draw_number;/*引いたカードの数*/ int draw_mark;/*引いたカードのマーク*/ char y_n;/*カードを引くか引かないかを判断*/ int hand[5];/*自分の手札*/ srand(time(NULL)); printf("[ポーカー]\n"); printf("プレイヤーのカードは\n"); for(i = 0; i < 5; i++) { int draw_number, draw_mark; draw_mark = rand() % 4 + 1; draw_number = rand() % 13 + 1; printf("%s %s ", mark[draw_mark-1], number[draw_number-1]); } printf("\n"); while(1) { printf("カードを交換しますか? > y/n \n"); scanf("%c", &y_n); // printf("交換するカードを選んで下さい >(1~5) \n"); while (getchar() != '\n') { } if (y_n == 'y') { for(i = 0; i < 5; i++) { int draw_number, draw_mark; draw_mark = rand() % 4 + 1; draw_number = rand() % 13 + 1; printf("%s %s ", mark[draw_mark-1], number[draw_number-1]); } printf("\n"); } else if (y_n == 'n') { break; } } switch (draw_number) { case 1: printf("ワンペア\n"); break; case 2: printf("ツーペア\n"); break; case 3: printf("スリーペア\n"); break; case 4: printf("フォーペア\n"); break; default: printf("他の役\n"); break; } return 0; }上のコードの(30行目くらい)「//printf("交換するカードを選んで下さい >(1~5) \n");」
の交換するカードが1~5枚ある場合交換するには、どのように書けばいいの
(int hand[5]を利用するんじゃないかと考えているんですが)と
役を判定するやり方(swithよりifやelse、int draw_number, draw_markを利用すると思うんですが)がわかりません
特に役を判定するやり方の考え方が聞きたいです
グローバル変数、構造体やヘッダー?を使えばより見やすく、わかりやすいソースができると
思うんですが、まだ良く判らないため、今はなるべく使わずに作りたいと思っています
OS:Mac OS X コンパイル:gcc バージョン4.0.1