기존에 쓰던 array 소스파일에 main은 array_main으로 수정하고
새로운 소스파일에 array_project.c로 파일을 만든다.
#include<stdio.h>
#include<time.h>
int
main(void)
{
srand(time(NULL));
- 랜덤값을 넣는다.
printf("\n\n=== 아빠는 대머리 게임
===\n\n");
int answer; // 사용자 입력값
int treatment = rand() % 4; // 발모제 선택(0-3)
- 진짜 발모제
int cntShowBottle = 0; // 이번게임에 보여줄 병
개수
- 초기화
int prevOntShowBottle = 0; // 앞게임에 보여준 병
개수
- 초기화
// 서로 보여주는 병 갯수를 다르케 하여 정답률 향상(처음에 2개 > 다음에 3개..)
//3번의
기회(3번의 발모제 투여 시도)
for (int i = 1; i <= 3; i++)
{
int bottle[4] = { 0, 0, 0, 0 }; // 4개의 병
- 병은 선택되지 않았다. 초기화
do {
cntShowBottle = rand() % 2 + 2; //보여줄 병 갯수(0-1, +2 -> 2,3)
} while (cntShowBottle == prevOntShowBottle);
- 지금 보여줄 병의 갯수와 전에 보여줬던 병의 갯수가 같다면 랜덤으로 병의 갯수를 바꿔준다.
prevOntShowBottle = cntShowBottle;
- 바뀐 병의 갯수는 전으로 업데이트해줌
int isincluded = 0; // 보여줄 병 중에 발모제가 포함되었느지 여부
printf(" > %d 번째 시도
: ", i);
// 보여줄 병 종류를 선택(발모제 담긴 병 확률 업)
for (int j = 0; j < cntShowBottle; j++)
{
int randBottle = rand() % 4; // 0~3
// 아직
선택되지 않은 병이면, 선택 처리
if (bottle[randBottle] == 0)
- 선택되지 않아서 0이라면
{
bottle[randBottle] = 1;
- 선택하게 되서 1로 바꿔준다.
if (randBottle == treatment)
- 진짜 발모제라면 1로 처리
{
isincluded = 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");
}
else
{
printf(" >> 실패
! 머리가 나지 않았어요.. ㅠㅠ \n");
}
printf("\n 계속 하려면 아무키나 누르세요...");
getchar();
}
printf("\n\n 발모제는 몇 번일까요?");
scanf_s("%d", &answer);
if (answer == treatment + 1) {
printf("\n>> 정답입니다.");
}
else
{
printf("\n>> 땡
! 틀렸어요, 정답은 %d 입니다\n",treatment+1);
}
return 0;
}
댓글 없음:
댓글 쓰기