본문 바로가기

- Programming/- C++

★ 14. 숫자 빙고 게임 만들기

반응형

숫자 빙고 게임 만들기

게임 규칙입니다.

5 X 5 크기를 가진 빙고 판에 1 ~ 25 의 숫자를 랜덤하게 배치합니다.

숫자를 입력하면 '#' 으로 변하며 가로, 세로, 대각선 한 줄이 모두 '#'이면

빙고 카운트가 1씩 완성됩니다.

총 빙고 카운트가 12면 완성!

 

 

 

 

 

#include <iostream>
#include <time.h>

using namespace std;

int searchBingo(int cleanArray[5][5])
{
 int Bingo = 0;
 int search[5];
 for (int i = 0; i < 5; i++)
 {
  for (int j = 0; j < 5; j++)
  {
   search[j] = cleanArray[i][j];
  }
  if ( search[0] == search[1] && search[1] == search[2] && search[2] == search[3] && search[3] == search[4] )
  {
   Bingo++;
  }
 }
 
 for ( int i = 0; i < 5; i++)
 {
  search[i] = 0;
 }

 for (int j = 0; j < 5; j++)
 {
  for (int i = 0; i < 5; i++)
  {
   search[i] = cleanArray[i][j];
  }
  if ( search[0] == search[1] && search[1] == search[2] && search[2] == search[3] && search[3] == search[4] )
  {
   Bingo++;
  }
 }

 for ( int i = 0; i < 5; i++)
 {
  search[i] = 0;
 }

 for (int i = 0; i < 5; i++)
 {
  for (int j = 0; j < 5; j++)
  {
   if (i == j)
   {
    search[i] = cleanArray[i][j];
   }
  }
  if ( search[0] == search[1] && search[1] == search[2] && search[2] == search[3] && search[3] == search[4] )
  {
   Bingo++;
  }
 }

 for ( int i = 0; i < 5; i++)
 {
  search[i] = 0;
 }

 for (int i = 0; i < 5; i++)
 {
  for (int j = 4; j >= 0; j--)
  {
   if ( i + j == 4 )
   {
    search[i] = cleanArray[i][j];
   }
  }
  if ( search[0] == search[1] && search[1] == search[2] && search[2] == search[3] && search[3] == search[4] )
  {
   Bingo++;
  }
 }

 for ( int i = 0; i < 5; i++)
 {
  search[i] = 0;
 }

 


 return Bingo;
}

void viewBingo(int cleanArray[5][5])
{
 for (int i = 0; i < 5; i++)
 {
  for (int j = 0; j < 5; j++)
  {
   if (cleanArray[i][j] > 30)
   {
    cout << "\t" << (char)cleanArray[i][j];
   }
   else
   {
    cout << "\t" << cleanArray[i][j];
   }
  }
  cout << endl;
 }
}

void main()
{
 srand((long)time(NULL));
 int cleanArray[5][5];
 int A, B, C, D, temp;
 int setNum = 1;
 int i,j;
 int selectNum;
 int bCount = 0;

 // cleanArray에 1 ~ 25까지 순차적으로 넣음.
 for (i=0; i<5; i++)
 {
  for (j=0; j<5; j++)
  {
   cleanArray[i][j] = setNum;
   setNum++;
  }
 }
 //----------------------------------------

 // 숫자 섞기
 for (i=0; i<100; i++)
 {
  A = rand() % 5;
  B = rand() % 5;
  C = rand() % 5;
  D = rand() % 5;

  temp = cleanArray[A][B];
  cleanArray[A][B] = cleanArray[C][D];
  cleanArray[C][D] = temp;
 }
 //-----------------------------------------

 cout << " 빙고를 시작하겠습니다. " << endl;
 viewBingo(cleanArray);
 cout << endl;
 cout << " 숫자를 입력하세요. " << endl;
 cout << " 범위는 1 ~ 25 까지입니다. " << endl << endl;
 while ( true )
 {
  cout << " -> ";
  cin >> selectNum;
  system("cls");
  if ( selectNum < 1 || selectNum > 25 )
  {
   cout << " !!숫자 범위는 1 ~ 25 입니다. 다시 입력해주세요.!! " << endl;
  }
 
  for (i = 0; i < 5; i++)
  {
   for ( j = 0; j < 5; j++)
   {
    if ( cleanArray[i][j] == selectNum )
    {
     cleanArray[i][j] = '#';
    }
   }
  }

  bCount = searchBingo(cleanArray);

  cout << " Bingo Count : " << bCount << endl;  
  viewBingo(cleanArray);

  if (bCount == 12)
  {
   cout << " 빙고를 완성하셨습니다.!! " << endl;
   break;
  }
 }
 
 
}

반응형