반응형
[C/C++] Up&Down (업앤다운) 게임 만들기
Up & Down 게임 만들기
- 1 ~ n ( or 100 ) 사이의 랜덤 숫자 뽑기
- 범위 안의 숫자를 입력한다.
- 범위에서 벗어난 숫자를 입력할 경우 예외처리
- 입력값이랑 랜덤숫자랑 비교 후 같을 경우 클리어, 낮거나 높으면 안내
- 위 방법을 클리어까지 반복
- 함수를 사용하여 만들기
* 참고
#include <stdllib.h> rand 함수 사용을 위한 헤더파일
#include <time.h> time 함수 사용을 위한 헤더파일
#define INT_MAX (내장매크로)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void InputMaxValue(int &max);
void CheckRange();
bool CheckAnswer(const int inputNum, const int randomNum);
int LimitMin = 0; // 최소 범위
int LimitMax = INT_MAX; // 최대 범위
int main()
{
int maxNumber = 0; // 최대 숫자
int count = 0; // 횟수
int randomNumber = 0; // 랜덤 숫자
int inputNumber = 0; // 입력 숫자
srand(unsigned int(time(0))); // 시드값 설정
InputMaxValue(maxNumber);
randomNumber = rand() % maxNumber + 1; // 랜덤 값
while (true)
{
printf("%d 번 째 도전 \n", ++count);
printf("숫자를 맞춰 보세용 : ");
scanf_s("%d", &inputNumber);
printf("\n");
//CheckRange();
if (inputNumber <= LimitMin || inputNumber >= LimitMax)
{
// 입력값이 허용 범위보다 작음
printf("입력 값이 허용범위를 벗어났습니다. \n");
count--;
continue;
}
if (CheckAnswer(inputNumber, randomNumber))
{
printf("정답 ! \n");
printf("%d 번 째 도전에 맞췄습니다. \n", count);
break;
}
CheckRange();
}
return 0;
}
// 최대 값 설정
// 기준 허용 범위는 0 ~ 21억쯤 (int값 허용 범위)
void InputMaxValue(int& max)
{
while (true)
{
printf("몇 번 째 까지 뽑을까? \n");
printf("최대 숫자 입력 N : ");
scanf_s("%d", &max);
// scanf_s("%d ", &maxNumber);
// 위 코드의 경우 공백이 버퍼에 남아있게 되어 입력을 한 번 더 받게 됌
printf("최대 숫자 입력이 완료되었습니다. \n");
if (max > LimitMin && max < LimitMax)
{
LimitMax = max + 1;
break;
}
else
{
printf("입력한 값이 범위를 벗어났습니다. 다시 입력해주세요. \n");
printf("현재 허용 범위 %d ~ %d \n", LimitMin, LimitMax);
}
}
}
// 현재 범위 출력
void CheckRange()
{
printf("------------------------------\n");
printf("현재 최소 값 : %d \n", LimitMin);
printf("현재 최대 값 : %d \n", LimitMax);
printf("------------------------------\n");
}
// 정답 체크
bool CheckAnswer(const int inputNum, const int randomNum)
{
if (inputNum > randomNum)
{
// 입력값이 랜덤값보다 큼
LimitMax = inputNum;
printf("********다운******** \n");
}
else if (inputNum < randomNum)
{
// 입력값이 랜덤값보다 작음
LimitMin = inputNum;
printf("*********업********* \n");
}
else
{
return true; // 정답
}
return false; // 오답
}
반응형
'Programming > C, C++' 카테고리의 다른 글
C++ 배열의 여러가지 사용 방법 (0) | 2022.12.07 |
---|---|
C++ Call By Value, Call By Reference, Call By Address (0) | 2022.12.07 |
C++ 별 다이아몬드 찍기 (0) | 2022.12.06 |
C++ #define, 매크로 (0) | 2022.12.06 |
카멜 표기법, 스네이크 표기법 (0) | 2022.12.06 |