C/실습

[C] 랜덤함수를 이용하여 숫자맞추기 게임 만들기

Sehyeok20 2021. 1. 14. 10:35
반응형

숫자맞추기 게임

UP & DOWN 게임처럼 숫자 맞추기 게임을 만들어 보자.

먼저 랜덤한 수를 지정하기 위해서 rand()라는 함수가 필요한데 라이브러리를 추가해주어야 사용할 수 있다.

그런데 이때 srand 함수를 호출하지 않고 rand함수를 호출 하게 되면 매번 같은 값을 얻게 된다.

따라서 정상적인 난수 값을 얻기 위해서는 반드시 srand함수를 통해 시드값을 설정해주어야 한다.

그리고 이 때 srand 함수를 통해서 시드값 설정을 위해서는 time함수가 필요한데

rand, srand 함수

time 함수는 인자로 전달한 변수에 현재시각을 초로 환산한 값을 저장하는데 NULL값을 명시하면 현재시각을 반환한다.

때문에 srand(time(NULL)); 이라고 하면 현재 시각이 계속 변하므로 srand의 시드값을 항상 변하게 설정할 수 있다.

즉 난수를 발생시킬 수 있다.

rand함수는 

rand() % 범위 + 초기값; 으로 지정할 수 있는데 

1부터 100까지 출력하기 위해서는

rand() % 100 + 1; 이라고 지정해주면 되겠다. (+1이 없다면 0부터 99까지의 난수를 발생시킨다)

while문

이제 while문을 이용하여 사용자로부터 값을 입력받는다.

입력받을때마다 입력받은값과 앞에서 설정한 랜덤값을 비교하여 큰지 작은지 비교한 후 결과를 출력한다.

매 시도마다 count++ 하여 틀린 횟수를 알아볼 수도 있다.

 

0을 넣으면 다시시작, -1이라면 강제종료를 위해 코드를 추가해보자.

0인 경우에는 다시 시작하기 위해 랜덤값을 다시 지정해 준 후 continue 구문을 사용한다

continue 구문은 반복문에서 continue 이후의 내용을 무시하고 다시 반복문의 시작부분으로 돌아가는것을 의미한다.

-1인 경우에는 break를 이용하여 반복문을 빠져나온다.

 

전체 코드를 보면

숫자맞추기 게임
결과1
결과2

결과 1에서는 난수를 발생시켜 정답을 맞출 때 까지 입력한 수가 큰지 작은지, 그리고 틀린 횟수가 몇회인지 정확하게 출력이 되는 것을 볼 수 있다.

결과 2에서는 처음에 발생시킨 난수는 50보다 작았고, 0을 입력하여 reset 시킨 후에 발생한 난수는 50보다 큰 것이 확인되었고, -1을 입력했을 때 정상적으로 종료되는것도 확인할 수 있다.

반응형