티스토리 뷰

C++

20160511_빙고게임만들기

cho22 2016. 5. 12. 02:19
반응형

빙고게임을 만들어보자

1~25 까지의 숫자로 5 X 5 의 빙고판을 만들고, 입력한 숫자가 있는 자리는 #으로 바꿔주어

 가로 한줄이 모두 # 또는 세로 한줄이 ㅁ두 # 또는 대각선이 모두 #이면 빙고숫자를 올려주고,

빙고가 5개 이상이 되면 게임을 끝낼것이다.

 

1. 1 ~ 25 순서대로 이루어진 5 X 5의 빙고판을 만든다.

int bingo[5][5];    // 5 5 의 2차원 배열을 이용

for (int i = 0; i<5; i++){        // 1 부터 25로 초기화

for (int j =0; j<5; j++){

bingo[i][j] = i * 5 + j + 1;

}

}

 

2. 순서대로 되어있는 빙고판을 섞어준다.

for (int i = 0; i < 100; i++) {        // 셔플 이해 안되면 앞의 게시물 참조.

int randNum1 = rand() % 5;

int randNum2 = rand() % 5;

int randNum3 = rand() % 5;

int randNum4 = rand() % 5;

int temp;

temp = bingo[randNum1][randNum2];

bingo[randNum1][randNum2] = bingo[randNum3][randNum4];

bingo[randNum3][randNum4] = temp;

 

}

 

3. 입력을 받고, 입력받은 숫자가 있는 부분을 #으로 바꿔준다.

cin >> input ;

for (int i = 0; i< 5; i++){

for (int j = 0; j < 5; j++) {

if(bingo[i][j] == input) {    // 빙고판의 숫자와 입력받은 숫자 비교

bingo[i][j] = 35;

break;

}

}

}

 

4. #의 갯수를 세어 빙고의 갯수를 센다.

 

  int bingoCount = 0;

  int countCross1 = 0;

  int countCross2 = 0;
  
  for (int i = 0; i < 5; i++) {

       int countCal = 0;

       int countRow = 0;

       for (int j = 0; j < 5; j++) {

            if (bingo[i][j] == 35) countRow++;

            if (bingo[j][i] == 35) countCal++;

            if (i == j && bingo[i][j] == 35) countCross1++;

            if ((i + j == 4 ) && bingo[i][j] == 35) countCross2++;

       }

       if (countRow == 5) bingoCount++;    //   가로 한줄에 #이 5개면 빙고!

 if (countCal == 5) bingoCount++;    //    세로 한줄에 #이 5개면 빙고!

  }

  if (countCross1 == 5) bingoCount++;    // 왼쪽에서 오른쪽아래로 가는 대각선의 숫자 5개가 모두 #이면 빙고!

  if (countCross2 == 5) bingoCount++;    // 오른쪽에서 왼쪽아래로 가는 대각선의 숫자 5개가 모두 #이면 빙고!

 

 

 

 

전체 소스코드 파일 첨부합니다.

소스.cpp

 

 

 

반응형

'C++' 카테고리의 다른 글

20160513_포인터와 함수  (0) 2016.05.17
20160512_포인터  (0) 2016.05.17
20160510_함수  (0) 2016.05.12
20160504_문자열  (0) 2016.05.06
20160503_야구게임만들기  (0) 2016.05.04
댓글