QA

질문하기

질문
c언어 카드게임 프로그래밍(소스는 적혀있어요. 주석하고...설명 부탁드려요)
꼭 좀 도와주세요...시험공부하는건데 모르겠네요...

아래는 카드게임 프로그램입니다.

내용은)
카드가 52장이고 모양은 4가지 hearts,diamonds,clubs,spades이며,
번호는 ace 1부터 10까지이고 jack(11),queen(12),king(13)의 종류가 있습니다.

문제는)
표준입력을 받아 입력한 수만큼의 참가자에게 7장의 카드를 나누어주는 과정을
출력하는것입니다.



[1]그런데 카드게임을 할줄 몰라서 그런지 이해가 안되네요...
설명을 좀 부탁드려요.

[2]그리고 이 코드를 이용해서 확률을 표현할수 있나요?
어떻게 해야하죠?





//헤더파일입니다.

--------------------------------------------------------------------------

#include
#include

enum enumsuit{hearts,diamonds,clubs,spades};
enum enumface{ace,deuce,three,four,five,six,seven,eight,nine,ten,jack,queen,king};

typedef enum enumsuit enumsuit;
typedef enum enumface enumface;

struct card{
enumsuit suit;
enumsuit face;
};
typedef struct card card;

char *strface[]={"ace","deuce","three","four","five","six","seven","eight","nine","ten","jack","queen","king"};
char *strsuit[]={"hearts","diamonds","clubs","spades"};

void filldeck(card *deck);
void shuffle(card *deck);
void deal(card *deck,int cnt);

----------여기까지 헤더파일-----------------------------------------------






//여기부터는 소스

#include
#include "card.h"

int main()
{
card deck[52];
int cnt=2;

filldeck(deck);
shuffle(deck);
printf("카드 게임에 몇사람이 참가합니까?>>");
scanf("%d",&cnt);
printf("n");
deal(deck,cnt);
return 0;
}

void filldeck(card *deck)
{
int i;

for(i=0;i<=51;i++){
deck[i].face=i%13; //1부터 king까지
deck[i].suit=i/13; //hearts에서 spades까지
}
}

void shuffle(card *deck)
{
int i,j;
card temp;

srand(time(NULL));
for(i=0;i<=51;i++){
j=rand()%52;
temp=deck[i];
deck[i]=deck[j];
deck[j]=temp;
}
}

void deal(card *deck,int cnt)
{
int i;
int total=7*cnt;

for(i=0;i printf("%13s-5%d","사람",i+1);
printf("n");

for(i=0;i printf("%5s of %-8s%c",strface[deck[i].face],strsuit[deck[i].suit],(i+1)%cnt ? ' ':'n');
}
여름죠아 | 2005.06.13 18:29 | 신고
  • 답변 1
  • 조회 0
연관 검색어

1개의 답변

고마워요 답변만 보기 답변
  • 답변 고마워요

    제가 아는한 모든 설명을 해드리겠습니다.

     

    ------------헤더

    #include //아마도 여기에는 card.h가 들어갔을겁니다.


    enum enumsuit{hearts,diamonds,clubs,spades}; //enumsuit는 하트 다이아 클럽 스페이드가 있다고 되어있네요.
    enum enumface{ace,deuce,three,four,five,six,seven,eight,nine,ten,jack,queen,king};
    //enumface는 에이스,2,3,4,5,6,7,8,9,10,잭,퀸,킹 이라고 하네요.
    typedef enum enumsuit enumsuit;
    typedef enum enumface enumface;

    struct card{
    enumsuit suit;
    enumsuit face;
    };
    typedef struct card card; .//card라는 함수는 enumsuit suit 변수와 enumsuit face가 있다고 합니다.

    char *strface[]={"ace","deuce","three","four","five","six","seven","eight","nine","ten","jack","queen","king"};
    char *strsuit[]={"hearts","diamonds","clubs","spades"};
    //*strface의 배열에는 숫자가 *strsuit의 배열에는 모양이 들어가 있네요. 
    void filldeck(card *deck); //함수선언입니다.
    void shuffle(card *deck); //이것도요
    void deal(card *deck,int cnt); // 이것도 그렇거요..

    ----------여기까지 헤더파일-----------------------------------------------






    //여기부터는 소스

    #include
    #include "card.h"

    int main()
    {
    card deck[52];
    int cnt=2;

    filldeck(deck);//일단은 카드를 넣어야 겠지요. filldeck함수로 이동..
    shuffle(deck); //그리고 카드를 섞어야 겠지요. shuffle함수로 이동..
    printf("카드 게임에 몇사람이 참가합니까?>>");
    scanf("%d",&cnt); //사람수를 받네요.
    printf("n"); //그리고 이건 n같습니다. 한줄 띄우는 거죠.
    deal(deck,cnt); //deal함수로 이동요..
    return 0;
    }

    void filldeck(card *deck)
    {
    int i;

    for(i=0;i<=51;i++){
    deck[i].face=i%13; //1부터 king까지
    deck[i].suit=i/13; //hearts에서 spades까지

    //차례대로 카드를 집어넣고 있습니다. 1하트 2하트 ........퀸 스페이드 킹 스테이드
    }
    }

    void shuffle(card *deck)
    {
    int i,j;
    card temp;

    srand(time(NULL));
    for(i=0;i<=51;i++){
    j=rand()%52; //j에 무작위로 선출한 52중 하나의 숫자를 넣습니다.
    temp=deck[i];
    deck[i]=deck[j];
    deck[j]=temp;

    //그리고는 두개의 카드를 바꾸는 군요,.

    }

    //이걸 52번 반복하면 잘 섞이겠지요.
    }

    void deal(card *deck,int cnt)
    {
    int i;
    int total=7*cnt;

    for(i=0;i printf("%13s-5%d","사람",i+1); //이건 이해 할수가 없네요. 아무튼 사람수를 출력하고 있네요.
    printf("n"); //이것도 오타넹. n로.~!

    for(i=0;i printf("%5s of %-8s%c",strface[deck[i].face],strsuit[deck[i].suit],(i+1)%cnt ? ' ':'n'); //이건 카드 모양과 숫자가 나오네요.
    }

     

     

    여기까지 입니다.

     

    허접하지만 조금이라도 도움이 되었으면 합니다

     

    -꼬마군단-

    2005.06.14 00:32 | 신고 감사합니다. 여름죠아

추천토픽&메뉴 바로가기

메뉴 바로가기