Search

배열9_문제04_빙고게임

대분류
STEP05 배열
소분류
배열9_문제

영상

문제

package 배열9_문제; import java.util.Random; import java.util.Scanner; /* [문제] 1. 1부터 50사이의 랜덤 숫자 25개를 중복없이 bingo에 저장한다. 2. 행과 열을 입력받아 숫자를 선택한다. 3. 가로, 세로, 대각선으로 한 줄을 선택하면, 빙고로 게임은 종료된다. */ public class 배열9_문제04_빙고게임_문제 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); Random ran = new Random(); int maxNum = 5; int[][] bingo = new int[maxNum][maxNum]; int[][] mark = new int[maxNum][maxNum]; scan.close(); } }
Java
복사

해설

package 배열9_문제; import java.util.Random; import java.util.Scanner; /* [문제] 1. 1부터 50사이의 랜덤 숫자 25개를 중복없이 bingo에 저장한다. 2. 행과 열을 입력받아 숫자를 선택한다. 3. 가로, 세로, 대각선으로 한 줄을 선택하면, 빙고로 게임은 종료된다. */ public class 배열9_문제04_빙고게임_정답 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); Random ran = new Random(); int maxNum = 5; int[][] bingo = new int[maxNum][maxNum]; int[][] mark = new int[maxNum][maxNum]; boolean win = false; // 1부터 50사이의 숫자 25개를 중복없이 bingo배열에 저장 int[] temp = new int[maxNum * maxNum]; for(int i=0; i<temp.length; i++) { int r = ran.nextInt(50) + 1; boolean check = false; for(int j=0; j<i; j++) { if(r == temp[j]) { check = true; break; } } if(check == false) { temp[i] = r; } else { i -= 1; } } int index = 0; for(int i=0; i<maxNum; i++) { for(int j=0; j<maxNum; j++) { bingo[i][j] = temp[index]; index += 1; } } // 게임 시작 while(true) { // 화면 출력 for(int i=0; i<maxNum; i++) { for(int j=0; j<maxNum; j++) { if(mark[i][j] == 1) { System.err.printf("[%2d]", bingo[i][j]); } else { System.out.printf("[%2d]", bingo[i][j]); } } System.out.println(); } System.out.println(); // 게임 종료 if(win) { System.out.println("빙고!"); break; } // 위치 선택 System.out.print("인덱스1 입력 : "); int y = scan.nextInt(); System.out.print("인덱스2 입력 : "); int x = scan.nextInt(); if(mark[y][x] == 0) { mark[y][x] = 1; } // 가로 검사 for(int i=0; i<maxNum; i++) { int count = 0; for(int j=0; j<maxNum; j++) { if(mark[i][j] == 1) { count += 1; } } if(count == maxNum) { win = true; } } // 세로 검사 for(int i=0; i<maxNum; i++) { int count = 0; for(int j=0; j<maxNum; j++) { if(mark[j][i] == 1) { count += 1; } } if(count == maxNum) { win = true; } } // 대각선 \ 검사 int count = 0; for(int i=0; i<maxNum; i++) { if(mark[i][i] == 1) { count += 1; } } if(count == maxNum) { win = true; } // 대각선 / 검사 count = 0; for(int i=0; i<maxNum; i++) { if(mark[i][maxNum - 1 - i] == 1) { count += 1; } } if(count == maxNum) { win = true; } } scan.close(); } }
Java
복사