[문제]
가위 바위 보 게임을 만들어 보자. 사용자로부터 가위 바위 보 중에서 하나를 입력 받는다. 그리고 컴퓨터는 난수 생성을 통해서 가위 바위 보 중에서 하나를 선택하게 한다. 이 둘을 비교해서 승자와 패자를 가려주는 프로그램을 작성해 보자. 단 프로그램의 진행은 사용자가 질 때까지 계속되어야 하고, 마지막에 가서는 게임의 결과(예: 4승 3무)까지 출력해 주도록 하자.
[실행결과]
바위는 1, 가위는 2, 보는 3: 2
당신은 가위 선택, 컴퓨터는 가위 선택, 비겼습니다!
바위는 1, 가위는 2, 보는 3: 1
당신은 바위 선택, 컴퓨터는 바위 선택, 비겼습니다!
바위는 1, 가위는 2, 보는 3: 3
당신은 보 선택, 컴퓨터는 바위 선택, 이겼습니다!
바위는 1, 가위는 2, 보는 3: 3
당신은 보 선택, 컴퓨터는 가위 선택, 졌습니다!
게임의 결과: 1승, 2무
[코드]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROCK 1
#define SCISSOR 2
#define PAPER 3
void Randomize(void);
int GetUsrSel(void);
int GetComSel(void);
int WhoWin(int s1, int s2);
int main(void)
{
int usr, com, result;
int win = 0, same = 0;
Randomize();
while (1)
{
usr = GetUsrSel();
com = GetComSel();
result = WhoWin(usr, com);
if (result == 0)
{
printf("비겼습니다!\n");
same++;
}
else if (result == 1)
{
printf("이겼습니다!\n");
win++;
}
else
{
printf("졌습니다!\n");
break;
}
}
printf("게임의 결과: %d승, %d무", win, same);
return 0;
}
void Randomize(void)
{
srand((unsigned int)time(NULL));
}
int GetUsrSel(void)
{
int sel;
printf("바위는 1, 가위는 2, 보는 3: ");
scanf_s("%d", &sel);
if (sel == ROCK)
printf("당신은 바위 선택, ");
else if (sel == SCISSOR)
printf("당신은 가위 선택, ");
else
printf("당신은 보 선택, ");
return sel;
}
int GetComSel(void)
{
int sel;
sel = rand() % 3 + 1;
if (sel == ROCK)
printf("컴퓨터는 바위 선택, ");
else if (sel == SCISSOR)
printf("컴퓨터는 가위 선택, ");
else
printf("컴퓨터는 보 선택, ");
return sel;
}
int WhoWin(int s1, int s2)
{
if (s1 == s2)
return 0;
else if ((s1 % 3) == (s2 + 2) % 3) // s1 승
return 1;
else // s2 승
return 2;
}
<참고>
윤성우의 열혈 C 프로그래밍
'C 언어 > 연습문제' 카테고리의 다른 글
C언어 연습문제33 (0) | 2022.03.31 |
---|---|
C언어 연습문제32 (0) | 2022.03.31 |
C언어 연습문제30 (0) | 2022.03.25 |
C언어 연습문제29 (0) | 2022.03.23 |
C언어 연습문제28 (0) | 2022.03.21 |