728x90
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
srand(time(NULL));
printf("\n\n==발모제 찾기 게임==\n\n");
int answer;
int treatment = rand() % 4; // 발모제 결정
int prevShowBottle = 0;
int curShowBottle = 0;
for (int i = 1; i <= 3; i++)
{
printf("%d번째 시도입니다.\n\n", i);
int bottle[4] = { 0,0,0,0 };
do
{
curShowBottle = rand() % 2 + 2; // 2~3
} while (prevShowBottle == curShowBottle);
prevShowBottle = curShowBottle;
int isIncluded = 0;
for (int j = 0; j < curShowBottle; j++)
{
int randBottle = rand() % 4;
if (randBottle == treatment)
{
isIncluded = 1;
}
if (bottle[randBottle] == 0)
{
bottle[randBottle] = 1;
}
else
{
j--;
}
}
for (int k = 0; k < 4; k++)
{
if (bottle[k] == 1)
printf("%d ", k +1);
}
printf("번 약을 바릅니다.\n\n");
if (isIncluded == 1)
{
printf("성공입니다.\n\n");
}
else
{
printf("실패입니다.\n\n");
}
getchar();
}
printf("\n\n발모제는 ? ");
scanf_s("%d", &answer);
if (answer == treatment + 1)
{
printf("정답입니다~\n");
}
else
{
printf("오답입니다. 정답은 %d번 입니다.", treatment + 1);
}
return 0;
}
나도코딩으로 공부하면서 이상하게 가장 어려웠던 프로젝트다... 수많은 시도 끝에 혼자 힘으로 성공했다. 정말 뿌듯했다.
4개의 병 중 한 병에는 발모제가 들어있다. 프로그램은 3차례 2개 혹은 3개의 약을 동시에 공개한다. 발모제가 포함되어 있으면 성공, 발모제가 포함되어 있지 않으면 실패가 출력된다. 사용자는 성공, 실패 결과를 보고 몇 번 병에 있는 약이 발모제인지 맞추면 된다.
가장 막힌 부분은 이전 공개 병의 숫자와 이번에 공개할 병 숫자를 결정하는 부분이다.
do
{
curShowBottle = rand() % 2 + 2; // 2~3
} while (prevShowBottle == curShowBottle);
prevShowBottle = curShowBottle;
int isIncluded = 0;
for (int j = 0; j < curShowBottle; j++)
{
int randBottle = rand() % 4;
if (randBottle == treatment)
{
isIncluded = 1;
}
if (bottle[randBottle] == 0)
{
bottle[randBottle] = 1;
}
else
{
j--;
}
}
우선 병 공개를 do 함수 안에 넣어 무한 루프 시킨다. 현재 공개할 병 갯수(curShowBottle)를 2개 혹은 3개로 랜덤하게 고른다. 무한 루프는 이전에 공개한 병 갯수(prevShowBottle)와 값이 같은 동안 유지한다.
루프가 끝나면 (curShowBottle==prevShowBottle) curShowBottle 값을 prevShowBottle에 넣어준다.
이때 int isIncluded= 0;은 공개한 병에 발모제 유무를 판단하는 변수다. 공개한 병에 발모제가 들어있으면 isIncluded = 1;로 바꿔준다.
여기만 이해하면 전체적으로 어려운 것 없는 프로그램이다.
728x90
'언어 > C' 카테고리의 다른 글
[C] define 매크로 함수 사용하기 (0) | 2022.04.24 |
---|---|
[C] 파일 입출력 - 비밀 일기 프로젝트 (0) | 2022.04.24 |
[C] 함수 - 컴퓨터와 가위바위보하기 (0) | 2022.04.24 |
[C] 조건문 - 업 다운 게임 만들기 (0) | 2022.04.24 |
[C] 반복문 - 별로 피라미드 그리기 (0) | 2022.04.24 |