#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define ROW 5
#define COL 5
int Bingo[ROW][COL] = {0};
void initBoard();
void showBoard();
void eraseBoard(int num);
int checkBoard();
int main() {
int nb = 0; //빙고 줄
int num; //입력 번호
initBoard(); //배열 초기화
while (1) {
showBoard(); //빙고판 출력
if (nb >= 3) {
printf("\n\n ! ! B I N G O ! ! \n\n");
break;
}
else if (nb == 2)
printf(" ! 2줄 맞았습니다 ! \n");
else if (nb == 1)
printf(" ! 1줄 맞았습니다 ! \n");
printf("번호를 입력하세요: ");
scanf("%d", &num);
eraseBoard(num);
nb = checkBoard();
}
return 0;
}
void showBoard() {
// ━ ┃ ┓ ┗ ┛ ┏ ┫ ┳ ┻ ┣ ╋
printf("┏━━━┳━━━┳━━━┳━━━┳━━━┓\n");
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (Bingo[i][j] > 0)
printf("┃%3d", Bingo[i][j]);
else
printf("┃ ★", Bingo[i][j]);
}
printf("┃\n");
if (i < 4){
printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");
}
}
printf("┗━━━┻━━━┻━━━┻━━━┻━━━┛\n");
}
void eraseBoard(int num) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (num == Bingo[i][j])
Bingo[i][j] = 0;
}
}
}
void initBoard() {
int x, y, count = 1;
srand((unsigned int)time(NULL));
while (count < 26) {
y = rand() % 5;
x = rand() % 5;
if (Bingo[y][x] == 0) {
Bingo[y][x] = count;
count++;
}
}
}
int checkBoard() {
int sum, count = 0;
for (int i = 0; i < ROW; i++) { //가로 체크
sum = 0;
for (int j = 0; j < COL; j++) {
sum += Bingo[i][j];
}
if (sum == 0)
count++;
}
for (int j = 0; j < COL; j++) { //세로 체크
sum = 0;
for (int i = 0; i < ROW; i++) {
sum += Bingo[i][j];
}
if (sum == 0)
count++;
}
//대각선 체크
sum = 0;
for (int i = 0; i < ROW; i++){
sum += Bingo[i][i];
}
if (sum == 0)
count++;
//대각선 체크
sum = 0;
for (int i = 0; i < ROW; i++) {
sum += Bingo[i][4-i];
}
if (sum == 0)
count++;
return count;
}