[C++ 언어-기초실습-14] 숫자 맞추기 게임
- 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/
- 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php
오늘의 실습 주제는 1~100사이 무작위 난수 하나를 맞추는 게임입니다. 숫자를 하나 입력하여 UP & DOWN 방식으로 정답에 가까워지게 하여 정답을 맞추는 방식으로 코딩을 할까 합니다.
1. 무작위 난수 만들기
#include <stdlib.h> //srand()
#include <time.h>
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 <iostream>
#include <stdlib.h> //srand()
#include <time.h>
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문의 흐름을 이해하는 실습입니다.
Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.
Thank you