20160511_빙고게임만들기
빙고게임을 만들어보자
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개가 모두 #이면 빙고!
전체 소스코드 파일 첨부합니다.