Programming/Java \ Spring

🔥자바스터디🔥 배열과 반복문을 이용한 BINGO 만들기

빙고 코드 짜기

 

// 조건

1. 5 * 5 의 정사각형 2차원 배열

2. 모든 요소에 1 ~ 25까지의 숫자 랜덤 초기화 (콘솔에 출력금지)

3. 콘솔에 각 요소좌표 출력

    [0, 0] [0, 1] [0, 2] [0, 3] [0, 4]

    [1, 0] [1, 1] [1, 2] [1, 3] [1, 4]

    [2, 0] [2, 1] [2, 2] [2, 3] [2, 4]

    [3, 0] [3, 1] [3, 2] [3, 3] [3, 4]

    [4, 0] [4, 1] [4, 2] [4, 3] [4, 4]

4. 스캐너로 1~25까지의 숫자 입력 (내 역할 a, 상대방 b로 구분해서)

5. 입력한 숫자의 좌표를 찾아 화면에 좌표대신 숫자 출력

    입력한 숫자가 25이고 좌표의 위치가 [2, 2] 라면,

    [0, 0] [0, 1] [0, 2] [0, 3] [0, 4]

    [1, 0] [1, 1] [1, 2] [1, 3] [1, 4]

    [2, 0] [2, 1] 25 [2, 3] [2, 4]

    [3, 0] [3, 1] [3, 2] [3, 3] [3, 4]

    [4, 0] [4, 1] [4, 2] [4, 3] [4, 4]

6. 1빙고마다 "[a]님(또는 b) 빙고" 출력

7. 내차례(또는 상대방차례)에 5빙고시 "[a]의 승리" 출력

 


코드보기

더보기
package bingo;

import java.util.Scanner;

public class BingoClass {
	static int reg = 0;
	
	public static void main(String[] args) {
		
		int[][] num = new int[5][5];
		Scanner sc = new Scanner(System.in);
		int[] scan = new int[25];
		boolean flag = true;
		int tmp[] = new int[25];
		
		for(int i = 0; i < tmp.length ; i++){
		   
		    tmp[i] = (int)(Math.random() * 25) + 1;
		
			 for(int a = 0; a < i; a ++){
			        if(tmp[i] == tmp[a]){
			            i--; 
			            break; 
			        }
			  }
		}

		int a = 0;
		for(int m =0; m < num.length; m++) {
			
			for(int j = 0; j < num.length; j++) {
			
					num[m][j] = tmp[a];
					a++;
				System.out.printf("[ %d ]", num[m][j]);
			//	System.out.printf("[ %d, %d ]", m, j);
			}
			System.out.println();
		}
		int i = 0;

		while(flag) {
			System.out.print("숫자를 입력하세요(종료시 0 입력): ");

			scan[i] = sc.nextInt();
			if(scan[i] == 0) {
				return;
			}
			reg = 0;
			for(int ab = 0; ab < i; ab ++){
		        if(scan[i] == scan[ab]){
					System.out.print("이미 입력한 숫자입니다. 다시 입력하세요 : ");
		            i--; 
					scan[i] = sc.nextInt();
		            break; 
		        }
			}
			flag = printArray(scan, num);
			i++;
		}
	}
	public static boolean printArray(int[] scan, int num[][]) {
		
		int[] cnt = new int[25]; // 입력받은 숫자의 위치 배열
		boolean flag = true;
		int bingo = 0; // 빙고 카운트 
		
		
		for(int i=0; i < num.length; i++) {
			for(int j = 0; j < num.length; j++) {
				flag = true;
				
				for(int k = 0; k < scan.length; k++) {
					if(scan[k] == num[i][j]) {
						System.out.printf("   %d   ", num[i][j]);

						if(i == 0 && 0 < j && j < 5){
							cnt[reg] = i +j + 1;
						}else if(0 < i && i < 5) {
							cnt[reg] = i * 5 + j + 1;
						}else {
							cnt[reg] = 1;
						}
						reg++;
						flag = false;
					}
				}
				
				if(flag) {
					System.out.printf("[ %d, %d ]", i, j);
				}
			}
			System.out.println();
		}
		int row1=0, row2=0, row3=0, row4=0, row5=0;
		int col1=0, col2=0, col3=0, col4=0, col5=0;
		int lrcross=0, rlcross=0;
		
		for(int i = 0; i < cnt.length; i++) {
			
			if(cnt[i] == 0) {
				break;
			}else {
				switch(cnt[i]) {
				 case 1 :
					 row1 += 1;
					 col1 += 1;
					 lrcross += 1;
					 break;
				 case 2 : 
					 row1 += 1;
					 col2 += 1;
					 break;
				 case 3 :
					 row1 += 1;
					 col3 += 1;
					 break;
				 case 4 :
					 row1 += 1;
					 col4 += 1;
					 break;
				 case 5 : 
					 row1 += 1;
					 col5 += 1;
					 rlcross += 1;
					 break;
				 case 6 :
					 row2 += 1;
					 col1 += 1;
					 break;
				 case 7 : 
					 row2 += 1;
					 col2 += 1;
					 lrcross += 1;
					 break;
				 case 8 :
					 row2 += 1;
					 col3 += 1;
					 break;
				 case 9 :
					 row2 += 1;
					 col4 += 1;
					 rlcross += 1;
					 break;
				 case 10 : 
					 row2 += 1;
					 col5 += 1;
					 break; 
				 case 11 :
					 row3 += 1;
					 col1 += 1;
					 break;
				 case 12 : 
					 row3 += 1;
					 col2 += 1;
					 break;
				 case 13 :
					 row3 += 1;
					 col3 += 1;
					 rlcross += 1;
					 lrcross += 1;
					 break;
				 case 14 :
					 row3 += 1;
					 col4 += 1;
					 break;
				 case 15 : 
					 row3 += 1;
					 col5 += 1;
					 break;	 
				 case 16 :
					 row4 += 1;
					 col1 += 1;
					 break;
				 case 17 : 
					 row4 += 1;
					 col2 += 1;
					 rlcross += 1;
					 break;
				 case 18 :
					 row4 += 1;
					 col3 += 1;
					 break;
				 case 19 :
					 row4 += 1;
					 col4 += 1;
					 lrcross += 1;
					 break;
				 case 20 : 
					 row4 += 1;
					 col5 += 1;
					 break;	 
				 case 21 :
					 row5 += 1;
					 col1 += 1;
					 rlcross += 1;
					 break;
				 case 22 : 
					 row5 += 1;
					 col2 += 1;
					 break;
				 case 23 :
					 row5 += 1;
					 col3 += 1;
					 break;
				 case 24 :
					 row5 += 1;
					 col4 += 1;
					 break;
				 case 25 : 
					 row5 += 1;
					 col5 += 1;
					 lrcross += 1;
					 break;	 
				}//switch 끝
			}
			
		}//for문 끝
		
		int[] bingo_arr = {row1, row2, row3, row4, row5, col1, col2, col3, col4, col5, lrcross, rlcross};
		for(int arr : bingo_arr) {
			//System.out.print(arr + "       ");
			if(arr == 5) {
				bingo += 1;
			}
		}
		
		if(bingo > 0 && bingo < 5) {
			System.out.println( bingo + "빙고 !!");
			return flag = true;
		}else if(bingo == 5) {
			System.out.println( bingo + "빙고 !! 승리했습니다!!!");
			
			return flag = false;
		}else {
			return flag = true;
		}
	
	}

}