공부하자, 학문적 지식

[C++ 초보 예제] 1인용 빙고 게임

로뱅이 2019. 11. 30. 14:36

안녕하세요. 오늘은 C++을 활용하여 예제를 풀어보려 합니다.


C++ 예제 중 쉬운 편인 빙고게임을 해보려 해요. 

컴퓨터랑 대결하는게 아닌 1인 빙고게임이라 난이도가 굉장히 쉬운 예제입니다.

C++ 초보분들에게는 어느정도 도움이 되는 예제이실 테니 한 번 따라해보시고 보지 말고 한 번 더 해보시면서 숙달하시면 좋을 것 같습니다.

 

C++ 예제 1


 

함수와 변수에 대해 선언해주는 단계입니다. 

함수는 빙고를 시작하는 순서를 생각하시면 쉬우실 거예요.

 

■ void Init(); 

     => 제일 먼저 5X5에 맞게 1부터 25까지의 숫자를 준비시키는 단계입니다.

 

■ void Shuffle(int count); 

     => 1부터 25까지 준비한 숫자를 랜덤하게 섞는 단계입니다.

 

■ void ShowNumbers(); 

     => 화면에 준비한 숫자를 출력하여 보여주는 단계입니다.

 

■ int GetInput(); 

     => 빙고를 완성하기 위한 숫자를 입력받는 단계입니다.

 

■ void SetMarking(int num); 

     => 입력받은 숫자를 하나씩 체크하는 단계입니다. Num의 경우 앞 GetInput에서 입력받은 숫자입니다.

 

■ void CountBingo();

     => 현재까지 몇 줄을 완성했는지 판단하는 단계입니다.

 

 

C++ 예제 2


 

 

빙고게임의 메인함수입니다. 숫자를 100번 섞어서 나타낸 다음 각 단계를 거쳐 총 5줄을 완성하면 !!! 빙고 Bingo !!!라는 멘트가 나오게 만들었습니다.

 


C++ 예제 3


 

빙고게임에서 숫자를 1부터 25까지 불러내는 단계예요.

 

 

C++ 예제 4



 

빙고게임을 위해 순차적으로 불러낸 숫자를 섞는 단계입니다. srand(time(NULL)); 함수의 경우 시간을 인자로 하여 숫자를 섞는 방법입니다. 랜덤하게 불러낼 때 많이 사용하는 방식이니 외워두시면 좋습니다.

 


 

C++ 예제 5


 

빙고게임에서 화면에 숫자를 출력하는 단계입니다. system(“cls“)의 경우 clean screen이라고 해서 화면에 있는 것들을 다 삭제해버리는 역할을 합니다. 그 뒤에 입력한 숫자가 마킹된 숫자라면 ‘x’라는 문자로 받고(char) 마킹된 숫자가 아니라면 그냥 숫자(int)로 받는 방법입니다.

 

 

C++ 예제 7



 

숫자를 입력받아 num이라는 변수에 저장 후, return으로 돌려줍니다.

 

 


 


Return으로 돌려받은 변수를 인자로 하여 그 숫자를 마킹하는 단계입니다.

 

 

C++ 예제 8



 

마지막으로 한 줄을 완성하는 방법입니다. 첫 번째 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;

}