[C++ 언어-기초실습-14] 숫자 맞추기 게임
- 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/
- 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php
오늘의 실습 주제는 1~100사이 무작위 난수 하나를 맞추는 게임입니다. 숫자를 하나 입력하여 UP & DOWN 방식으로 정답에 가까워지게 하여 정답을 맞추는 방식으로 코딩을 할까 합니다.
1. 무작위 난수 만들기
#include //srand()
#include
int m_rand;
srand((unsigned)time(NULL));
m_rand=rand()%100+1;
기본 베이스 코딩은 srand()함수로 난수 초기화를 수행하고 rand()함수로 무자위 난수를 만들어 냅니다. 참고로 100으로 나눈 나머지로 해서 0~99까지의 범위의 난수를 만들어 낼 수 있습니다. 게임에서는 1~100까지의 숫자이기 때문에 +1을 위 식에서는 더해 줬습니다.
이제 이 난수를 맞추는 게임을 진행해야겠죠.
2. 숫자 맞추기 코딩
while(1){
cout<<"숫자를 입력하시오? ";
cin>>m_num;
if(m_num==m_rand || m_num==0) break;
else if(m_num>m_rand) cout<<m_num<<"보다 작습니다."<<endl;
else cout<<m_num<<"보다 큽니다."<<endl;
cnt++;
}
while 문을 이용합니다. while(1)은 무한 반복문으로 이 while문을 빠져 나오기 위햇는 break 명령문을 사용하면 됩니다. 게임에서는 입력수 (m_num)값이 난수(m_rand)와 비교하여 일치하면 정답이니깐 break문으로 빠져나옵니다. 추가로 m_num 으로 0이 입력 되면 더이상 숫자 맞추는 것을 포기한다는 의미로 게임 중간에 빠져 나올 수도 있게 설정했네요. while문을 빠져 나오면 if문으로 m_num이 0이면 게임포기, 0이 아니면 정답 이렇게 표현하면 게임 마무리가 됩니다.
입력수가 정답이 아니면 UP & DOWN를 수행해야 합니다. m_num이 m_rand수보다 크면 정답은 입력수보다 더 작은 수라고 메시지를 출력하고 m_rand수보다 작으면 정답은 입력수바도 더 큰 수라고 메시지를 출력 하면 됩니다.
if문을 정리를 하면,
- 정답입니까 아니면 포기할겁니까
- 정답보다 큽니까
- 정답보다 작읍니까
이걸 표현한거라고 생각 하시면 됩니다. 이제 실행해서 결과가 정상적으로 나온지 봅시다.
3. 코딩
[전체소스]
#include
#include //srand()
#include
using namespace std;
int main(int argc, char** argv) {
int m_num, m_rand;
int cnt=0;;
srand((unsigned)time(NULL));
m_rand=rand()%100+1;
while(1){
cout<<"숫자를 입력하시오? ";
cin>>m_num;
if(m_num==m_rand || m_num==0) break;
else if(m_num>m_rand) cout<<m_num<<"보다 작습니다."<<endl;
else cout<<m_num<<"보다 큽니다."<<endl;
cnt++;
}
if(m_num==0) cout<<"포기하셨군요. 다음 기회에"<<endl;
else cout<<cnt<<"번째만에 정답을 맞추셨습니다."<<endl;
return 0;
}
[결과]
마무리
숫자 맞추기 게임 코딩이 몇줄 안되네요. while문과 if문의 흐름을 이해하는 실습입니다.