안녕하세요. 오늘은 C++을 활용하여 예제를 풀어보려 합니다.
C++ 예제 중 쉬운 편인 빙고게임을 해보려 해요.
컴퓨터랑 대결하는게 아닌 1인 빙고게임이라 난이도가 굉장히 쉬운 예제입니다.
C++ 초보분들에게는 어느정도 도움이 되는 예제이실 테니 한 번 따라해보시고 보지 말고 한 번 더 해보시면서 숙달하시면 좋을 것 같습니다.
함수와 변수에 대해 선언해주는 단계입니다.
함수는 빙고를 시작하는 순서를 생각하시면 쉬우실 거예요.
■ void Init();
=> 제일 먼저 5X5에 맞게 1부터 25까지의 숫자를 준비시키는 단계입니다.
■ void Shuffle(int count);
=> 1부터 25까지 준비한 숫자를 랜덤하게 섞는 단계입니다.
■ void ShowNumbers();
=> 화면에 준비한 숫자를 출력하여 보여주는 단계입니다.
■ int GetInput();
=> 빙고를 완성하기 위한 숫자를 입력받는 단계입니다.
■ void SetMarking(int num);
=> 입력받은 숫자를 하나씩 체크하는 단계입니다. Num의 경우 앞 GetInput에서 입력받은 숫자입니다.
■ void CountBingo();
=> 현재까지 몇 줄을 완성했는지 판단하는 단계입니다.
빙고게임의 메인함수입니다. 숫자를 100번 섞어서 나타낸 다음 각 단계를 거쳐 총 5줄을 완성하면 !!! 빙고 Bingo !!!라는 멘트가 나오게 만들었습니다.
빙고게임에서 숫자를 1부터 25까지 불러내는 단계예요.
빙고게임을 위해 순차적으로 불러낸 숫자를 섞는 단계입니다. srand(time(NULL)); 함수의 경우 시간을 인자로 하여 숫자를 섞는 방법입니다. 랜덤하게 불러낼 때 많이 사용하는 방식이니 외워두시면 좋습니다.
빙고게임에서 화면에 숫자를 출력하는 단계입니다. system(“cls“)의 경우 clean screen이라고 해서 화면에 있는 것들을 다 삭제해버리는 역할을 합니다. 그 뒤에 입력한 숫자가 마킹된 숫자라면 ‘x’라는 문자로 받고(char) 마킹된 숫자가 아니라면 그냥 숫자(int)로 받는 방법입니다.
숫자를 입력받아 num이라는 변수에 저장 후, return으로 돌려줍니다.
Return으로 돌려받은 변수를 인자로 하여 그 숫자를 마킹하는 단계입니다.
마지막으로 한 줄을 완성하는 방법입니다. 첫 번째 if절은 가로로 한 줄을 완성하는 것을 표현하였고 두 번째 if절은 세로로 한 줄을 완성하는 것을 표현한 것입니다. 세 번째 if절은 오른쪽 아래로 향하는 대각선 한 줄을 완성하는 것, 네 번째 if절은 왼쪽 아래 대각선으로 한 줄을 완성하는 것을 표현한 겁니다.
Cpp를 첨부하기 보다는 긁어서 쓰시라고 텍스트 방식으로 소스를 올려드리겠습니다. 아래 소스를 긁어서 c++을 빌드/런 시켜보면 완성된 빙고게임을 보실 수 있으실 겁니다.
코드를 복사/붙여넣기 시, 정렬이 전혀 안 된 상태로 붙는다면 visual studio를 사용할 경우 Ctrl + a를 눌러 전체선택 후 Alt + F8 혹은 Ctrl + K, F를 누르시면 자동 정렬됩니다.
#include <iostream>
#include <ctime>
using namespace std;
void Init(); // 1~25까지 숫자 준비
void Shuffle(int count); // 숫자 섞기
void ShowNumbers(); // 화면에 숫자 출력
int GetInput(); // 숫자 입력 받기
void SetMarking(int num); // 입력받은 숫자 마킹
void CountBingo(); // 완성된 줄 수 계산
const int Marking = 'x';
int Numbers[25] = {};
int BingoCount = 0;
int main()
{
Init();
Shuffle(100);
while (true)
{
ShowNumbers();
SetMarking(GetInput());
CountBingo();
if (BingoCount >= 5) break;
}
ShowNumbers();
cout << "!!! 빙고 Bingo !!! " << endl;
}
void Init()
{
for (int i = 0; i < 25; i++)
Numbers[i] = i + 1;
}
void Shuffle(int count)
{
srand(time(NULL));
for (int i = 0; i < count; i++)
{
int temp;
int nRandom1 = rand() % 25;
int nRandom2 = rand() % 25;
temp = Numbers[nRandom1];
Numbers[nRandom1] = Numbers[nRandom2];
Numbers[nRandom2] = temp;
}
'공부하자, 학문적 지식' 카테고리의 다른 글
2020년 공인중개사 시험 일정 알려드려요 (0) | 2020.01.03 |
---|---|
주민등록번호 뒷자리 의미 및 변경방법 (0) | 2019.12.31 |
2020 한국사능력시험 일정과 유효기간 (0) | 2019.11.09 |
DLS가 뭔가요? 왜 이슈인가요? (0) | 2019.08.24 |
마그네슘 효능에 대해 알아볼께요 (0) | 2019.07.30 |