int race(int bet_h); //레이스를 실행해주는 함수 선언
void start_screen(); //경마게임의 시작화면 및 경주마 소개 프린트 함수 선언
int bet(int my_money); //경주마를 선택하고 베팅을 하기 위한 함수 선언
void three_second (); //경주가 시작되기전 카운트 3초를 프린트 해주는 함수 선언
void print_3(); //숫자\'3\'를 나타내기 위한 프린트 함수 선언
void print_2(); //숫자\'2\'를 나타내기 위한 프린트 함수 선언
void print_1(); //숫자\'1\'를 나타내기 위한 프린트 함수 선언
void print_go(); //\'Go!\'를 나타내기 위한 프린트 함수 선언
int win_count; //1등한 경주마의 번호 저장 변수 선언
int race_count; //레이스의 횟수 저장 변수 선언
int win_num[NUM];//각 경주마의 우승 횟수 저장 배열 선언
double win_rate[NUM]; //각 경주마의 승률 저장 배열 선언
char User_name[20]; //게임 User의 이름 저장 배열 선언
int main()
{
int my_money = 10000; //초기 자본 10000원으로 지정
printf ("\\n\\n\\t\\t미니 경마장에 오신 것을 환영합니다!!!!");
printf ("\\n\\n\\n\\n\\n\\t\\t\\t이름을 입력해주세요 : ");
scanf (" %s", &User_name);
printf ("\\n\\n\\t\\t\\t %s 님 어서오세요~!\\n\\n\\n\\t\\t\\t즐거운 시간 보내세요!!\\n\\n", User_name);
[...];
[...];
start_screen(); //start_screen 함수 호출
while(my_money>0)
{
my_money = bet(my_money); //bet 함수 호출
}
printf("%s 님 돈을 모두 잃으셨습니다.~!", User_name);
printf("%s 님 수고하셨습니다.\\n %s 님 다시 또 오세요~!", User_name, User_name);
printf("\\n\\n");
[...];
return 0;
}
void start_screen()
{
printf("\\t\\t**********************************************\\n");
printf("\\t\\t********* 미니 경마장 *********\\n");
printf("\\t\\t**********************************************\\n");
printf("\\t\\t\\t\\t\\t\\t<마사회>\\n\\n");
printf("\\t------------------- <경주마 정보> ----------------------\\n");
printf("\\t| 마번 | 마명 | 산지 | 성별 | 연령 |\\n");
printf("\\t--------------------------------------------------------\\n");
printf("\\t| 1번마 | 날쌘돌이마 ┏┓ˇ∋- | 미국 | 수 | 5 |\\n");
printf("\\t| 2번마 | 바람돌이마 ┌┐˚>- | 호주 | 암 | 6 |\\n");
printf("\\t| 3번마 | 허리케인마 ┎┒'≫- | 한국 | 수 | 4 |\\n");
printf("\\t| 4번마 | 번개돌이마 ┍┑`⊃- | 일본 | 거 | 10 |\\n");
printf("\\t| 5번마 | 미친듯이마 ┏┓º⊇- | 영국 | 암 | 7 |\\n");
printf("\\t--------------------------------------------------------\\n");
}
int bet(int money)
{
int i;
int bet_h, bet_m = 1; //User가 베팅한 경주마와 베팅금액을 저장시켜주기 위한 변수 선언
int match=1;
int result, betting[NUM]; // 레이스의 결과 저장 변수, 배당률 저장 배열 선언
srand(time(NULL));
switch (win_count) //각 경주마의 우승횟수를 저장하고 레이스의 횟수를 카운터 해준다.
{
case 1:
win_num[0] = win_num[0]++;
race_count++;
break;
case 2:
win_num[1] = win_num[1]++;
race_count++;
break;
case 3:
win_num[2] = win_num[2]++;
race_count++;
break;
case 4:
win_num[3] = win_num[3]++;
race_count++;
break;
case 5:
win_num[4] = win_num[4]++;
race_count++;
break;
default:
break;
}
for(i=0; i < NUM; i++) //배당율을 지정한다.
betting[i] = (rand() % 10) + 5; // 배당율은 최소 5배부터 14배까지 지정
printf("\\t\\t ---------------------------------------\\n");
printf("\\t\\t| | 1번 | 2번 | 3번 | 4번 | 5번 |\\n");
printf("\\t\\t| 배당률 | 2 | %3d | %3d | %3d | %3d |\\n",betting[0], betting[1], betting[2], betting[3], betting[4]);
printf("\\t\\t| 승 률 | %3.0f | %3.0f | %3.0f | %3.0f | %3.0f |\\n",win_rate[0], win_rate[1], win_rate[2], win_rate[3], win_rate[4]);
printf("\\t\\t ---------------------------------------\\n");
printf("\\n%s님의 보유액 %d원\\n", User_name, money);
while(match == 1)
{ //말번호를 잘못 입력하면 다시 입력
printf("몇번마 : ");
scanf("\\n%d", &bet_h);
match = 0; // 이렇게 함으로써 while문을 빠져나간다.
switch (bet_h)
{
case 1:
printf (" %s님은 1번마를 선택하셨습니다.\\n", User_name);
break;
case 2:
printf (" %s님은 2번마를 선택하셨습니다.\\n", User_name);
break;
case 3:
printf (" %s님은 3번마를 선택하셨습니다.\\n", User_name);
break;
case 4:
printf (" %s님은 4번마를 선택하셨습니다.\\n", User_name);
break;
case 5:
printf (" %s님은 5번마를 선택하셨습니다.\\n", User_name);
break;
default:
printf (" 해당하는 말이 없습니다. 다시 선택해주세요\\n");
match = 1;
break;
}
}
match = 1; //다음 while문에 쓰기 때문에 다시 1로 배정
while(match <= money)
{
printf("배팅 액수 : ");
scanf("%d", &bet_m);
match = bet_m + money;
if(bet_m > money) //배팅하려는돈이 자기돈보다 많으면 다시 입력
{
printf("%님이 가진돈보다 많은 돈을 배팅하셨습니다.\\n다시 입력하세요.\\n", User_name);
match = money;
}
}
result = race(bet_h); //레이스의 결과값을 bet함수에서 return 받음.
if(result == 1) // 베팅한 경주마가 우승했을 경우
{
printf ("\\n\\n선택말의 배팅율은 %d배 입니다.\\n", betting[bet_h - 1]);
printf ("배팅액은 %d원 입니다.\\n", bet_m);
money = money + (bet_m * betting[bet_h - 1]);
printf("%s 님 축하합니다! 승리하셨습니다.\\n", User_name);
printf("%s 님 %d원을 따셨습니다.\\n", User_name, bet_m * betting[bet_h - 1]);
}
else if (result == 2) //베팅한 경주마가 2등을 했을 경우
{
printf ("\\n\\n선택말의 배팅율은 %d배 입니다.\\n", betting[bet_h - 1]);
printf ("배팅액은 %d원 입니다.\\n", bet_m);
money = money + ((bet_m * betting[bet_h - 1])/2);
printf("%s 님 아쉽게도 2등을 하였습니다.\\n", User_name);
printf("%s 님 배당금의 1/2인 %d원을 따셨습니다.\\n", User_name, ((bet_m * betting[bet_h - 1])/2));
}
else if (result == 3) //베팅한 경주마가 3등을 했을 경우
{
printf ("\\n\\n선택말의 배팅율은 %d배 입니다.\\n", betting[bet_h - 1]);
printf ("배팅액은 %d원 입니다.\\n", bet_m);
money = money + ((bet_m * betting[bet_h - 1])/4);
printf("%s 님 아쉽게도 3등을 하였습니다.\\n", User_name);
printf("%s 님 배당금의 1/4인 %d원을 따셨습니다.\\n", User_name, ((bet_m * betting[bet_h - 1])/4));
}
else //베팅한 경주마가 1~3등 안에 못 들어왔을 경우
{
money = money - bet_m;
printf("\\n\\n%s 님 안타깝군요~!\\n\\n", User_name);
printf("%s 님 %d원을 잃었습니다.\\n", User_name, bet_m);
}
return money; //베팅한 후 첫 자본에 가감액을 더해준 후 나머지 액수 Return.
}
int race(int bet_h)
{
int end[NUM] = {0}; //각 경주마의 골인 유무 배열 선언
int rank[NUM] = {0}; //경주마의 순위 저장 배열 선언
int distance[NUM]={0}; // 각 경주마의 이동거리 변수 선언
int i, j=0;
int horse_num[NUM], count[NUM]={0}; // 경주마의 번호 저장 배열 및 경주마의 골인한 순서 저장 배열 선언
srand(time(NULL));
three_second(); //카운트 3초 함수 호출
printf("\\a"); //제어문을 이용한 효과음
while (j < 7)
{
[...];
printf ("\\n");
printf ("================================================================================");
printf ("\\n");
printf("① 날쌘돌이마\\n");
if(end[0]==0)
{
distance[0] = distance[0] + (rand()%MAX_SPEED+1); //난수함수를 이용, 각 경주마의 이동거리 차별화
for (i = 0 ; i<distance[0]; i++)
{
printf(" ");
if(i >= 66) //1번 경주마 골인하였을 경우
{
end[0] = 1;
horse_num[0] = 1;
count[0] = ++j;
}
if (end[0] == 1)
break;
}
if (distance[0] < 40)
printf("┏┓ˇ∋-");
else if (distance[0] % 2 == 0 )
printf("/ ̄\ˇ∋-");
else
printf("< ̄>ˇ∋-");
}
printf ("\\n");
printf ("================================================================================");
printf ("\\n");
printf("② 바람돌이마\\n");
if(end[1] == 0)
{
distance[1] = distance[1] + (rand()%MAX_SPEED+1);
for (i = 0 ; i<distance[1]; i++)
{
printf(" ");
if(i >= 66) //2번 경주마 골인하였을 경우
{
end[1] = 1;
horse_num[1] = 2;
count[1] = ++j;
}
if (end[1] == 1)
break;
}
if (distance[1] < 40)
printf("┌┐˚>-");
else if (distance[1] % 2 == 0)
printf("/ ̄\˚>-");
else
printf("< ̄>˚>-");
}
printf ("\\n");
printf ("================================================================================");
printf ("\\n");
printf("③ 허리케인마\\n");
if(end[2] == 0)
{
distance[2] = distance[2] + (rand()%MAX_SPEED+1);
for (i = 0 ; i<distance[2]; i++)
{
printf(" ");
if(i >= 66) //3번 경주마 골인하였을 경우
{
end[2] = 1;
horse_num[2] = 3;
count[2] = ++j;
}
if (end[2] == 1)
break;
}
if (distance[2] < 40)
printf("┎┒'≫-");
else if (distance[2] % 2 == 0)
printf("/ ̄\'≫-");
else
printf("< ̄>'≫-");
}
printf ("\\n");
printf ("================================================================================");
printf ("\\n");
printf("④ 번개돌이마\\n");
if(end[3] == 0)
{
distance[3] = distance[3] + (rand()%MAX_SPEED+1);
for (i = 0 ; i<distance[3]; i++)
{
printf(" ");
if(i >= 66) //4번 경주마 골인하였을 경우
{
end[3] = 1;
horse_num[3] = 4;
count[3] = ++j;
}
if (end[3] == 1)
break;
}
if (distance[3] < 40)
printf("┍┑`⊃-");
else if (distance[3] % 2 == 0)
printf("/ ̄\`⊃-");
else
printf("< ̄>`⊃-");
}
printf ("\\n");
printf ("================================================================================");
printf ("\\n");
printf("⑤ 미친듯이마\\n");
if(end[4]==0)
{
distance[4] = distance[4] + (rand()%MAX_SPEED+1);
for (i = 0 ; i<distance[4]; i++)
{
printf(" ");
if(i >= 66) //5번 경주마 골인하였을 경우
{
end[4] = 1;
horse_num[4] = 5;
count[4] = ++j;
}
if (end[4] == 1)
break;
}
if (distance[4] < 40)
printf("┏┓º⊇-");
else if (distance[4] % 2 == 0)
printf("/ ̄\º⊇-");
else
printf("< ̄>º⊇-");
}
printf ("\\n");
printf ("================================================================================");
printf ("\\n");
_sleep(200); //0.2초 지연시켜주는 함수
if(j == 6) //모든 경주마가 골인하였을 경우
{
j = 7; //while 문을 빠져나오기 위한 변수 올림
printf("배팅 하신 말 : %d\\n", bet_h);
for (i = 0 ; i < NUM ; i++) //순서대로 골인한 경주마의 번호를 rank에 저장
{
if (count[i] == 1)
rank[0] = horse_num[i];
else if (count[i] == 2)
rank[1] = horse_num[i];
else if (count[i] == 3)
rank[2] = horse_num[i];
else if (count[i] == 4)
rank[3] = horse_num[i];
else
rank[4] = horse_num[i];
}
for (i = 0 ; i < NUM ; i++) //골인한 순위 프린트
printf ("\\n %d 등 : %d 번 말", i+1, rank[i]);
win_count = rank[0]; //우승한 경주마의 번호를 win_count에 저장
if (rank[0] == bet_h)
return 1;
else if (rank[1] == bet_h)
return 2;
else if (rank[2] == bet_h)
return 3;
else
return 0;
}
if (j == 5)
++j;
}
}
====================================================이건데형님들 이게임을2명에서 하게 바꾸고싶어요========================
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.