언어/C

[C] 조건문 - 업 다운 게임 만들기

돌멩이수프 2022. 4. 24. 21:07
728x90
#include <stdio.h>
#include <stdlib.h> // rand() 함수 포함 라이브러리
#include <time.h> // time() 함수 포함 라이브러리

int main(void)
{
	srand(time(NULL)); // 매번 다른 난수
	int number = (rand() % 100) + 1;
	printf("난수는 %d 입니다.\n\n", number);
	int answer = 0;
	int chance = 5;

	while (1)
	{
		printf("숫자를 맞혀보세요. 기회는 %d번 입니다. : ", chance--);
		scanf_s("%d", &answer);

		if (answer > number)
		{
			printf("Down\n");
		}
		else if (answer < number)
		{
			printf("Up\n");
		}
		else if (answer == number)
		{
			printf("정답입니다!\n");
			break;
		}
		else
		{
			printf("오류 발생\n\n");
		}

		if (chance == 0)
		{
			printf("게임이 끝났습니다.\n");
			break;
		}
	}

	return 0;
}

1~100 사이의 숫자 중 무작위로 지정된 한 숫자를 맞추는 게임이다.

<난수>

난수를 지정할 때는 반드시

#include <stdlib.h> // rand() 함수 포함 라이브러리
#include <time.h> // time() 함수 포함 라이브러리

이렇게 라이브러리를 지정해줘야 rand(), time()이 사용 가능하다.

int number = (rand() % 100) + 1;

위 코드는 1부터 100 사이의 무작위 함수를 number변수에 지정해주는 데 사용된다. 만약 0부터 20 중에서 난수를 지정해주고 싶다면,

int number = rand() % 20;

를 쓰면 된다.

<scanf_s>

기존 비쥬얼 스튜디오에서는 사용자에게 값을 받기 위해 scanf를 사용했다. 지금은 에러로 인해 프로그램이 실행되지 않는 경우를 피하기 위해 scanf_s 함수를 사용한다. 나도 사용자에게 정답값을 받기 위해 scanf_s를 사용했다.

scanf_s("%d", &answer);

나는 정수가 필요하기 때문에 사용자가 줄 값에 "%d"를 사용했다. 문자를 받기 위해서는 "%s", 실수를 위해서는 "%f" 등을 사용한다. 실수의 경우 소수점 아래 두 자리수만 출력하고 싶은 경우 "%.2f"라고 쓰면 된다.

728x90