[JAVA기초(17)] 빙고 게임 실습

2022. 5. 9. 14:31·Dev/Java
728x90
반응형

 

package practice.comprehensive;
import java.util.Arrays;
import java.util.Scanner;
public class ComprehensivePractice {
	public void method() {
		Scanner sc = new Scanner(System.in);
		System.out.print("빙고판 크기 지정 : ");
		int len = sc.nextInt();
		
		//일차원 배열로 중복 값 제거한 후 이차원 배열 대입
		int[] temArr = new int[len*len];
		
		//랜덤 값 대입 후 중복 비교
		for(int i=0; i<temArr.length; i++) {
			temArr[i] = (int)(Math.random() * (len*len)) +1;
			//중복 값 발생하면 i--
			//즉 i+1로 진행하지 않고 다시 i에 랜덤 값 대입 후 중복 비교
			for(int j=0; j<i; j++) {
				if(temArr[i] == temArr[j]) {
					i--;
					break;
				}
			}
		}
		
		//중복 값 제거가 잘 되어있는지 일차원 배열 출력
		System.out.println(Arrays.toString(temArr));
		
		//일차원 배열 -> 이차원 배열
		int[][] arr = new int[len][len];
		int index = 0;
		for(int i=0; i<len; i++) {
			for(int j=0; j<len; j++) {
				arr[i][j] = temArr[index++];
			}
		}
		
		System.out.println("========== 빙고 게임 시작 =========");
		
		//빙고판 출력
		for(int i=0; i<arr.length; i++) {
			for(int j=0; j<arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
		
		//모든 자리가 0이 될 때까지 무한 반복
		while(true) {
			System.out.print("숫자 선택 : ");
			int num = sc.nextInt();
			
			//선택한 숫자를 0으로 바꾼 뒤 출력
			for(int i=0; i<arr.length; i++) {
				for(int j=0; j<arr[i].length; j++) {
					if(arr[i][j] == num) {
						arr[i][j] = 0;
				}
					System.out.print(arr[i][j] + "\t");
				
				}
				System.out.println();	
			}
			
			//게임 종료 조건 확인
			boolean flag = false;
			for(int i=0; i<arr.length; i++) {
				for(int j=0; j<arr[i].length; j++) {
					if(arr[i][j] != 0) {
						flag = true;
					}
				}
			}
			//모든 칸이 0이면 게임 종료
			if(flag ==  false) {
				break;
			}	
		}
		System.out.println("빙 고 완 성!!!");
		System.out.println("========= 빙고 게임 종료 =========");
	}
}

 

💫 나의 풀이

 

package prac1.exam;

import java.util.Arrays;
import java.util.Scanner;


public class Blehye {
	public void practice() {
		
		Scanner sc = new Scanner(System.in);
		System.out.print("빙고판 크기 지정 : ");
		int size = sc.nextInt();
		
		int a1[] = new int[size*size];
		
		for(int i=0 ; i<a1.length ; i++) {
			a1[i] = (int)((Math.random())*(size*size))+1;
			for(int j=0; j<i ; j++) {
				if(a1[i] == a1[j]) {
					i--;
					break;
				}
			}
		}
		
		System.out.println("======= 빙고 게임 시작 =======");
		int a2[][] = new int[size][size];
		int index=0;
		for(int i=0 ; i<size ; i++) {
			for(int j=0; j<size ; j++) {
				a2[i][j] = a1[index++];
			}
		}
		
		for(int i=0; i<a2.length;i++) {
			for(int j=0;j<a2[i].length;j++) {
				System.out.print(a2[i][j] +"\t");
			}
			System.out.println();
		}
		while(true) {
			System.out.print("숫자 선택 : ");
			int num = sc.nextInt();
			
			for(int i=0; i<a2.length; i++) {
				for(int j=0; j<a2[i].length; j++) {
					if(a2[i][j]==num) {
						a2[i][j]=0;
					}
					System.out.print(a2[i][j] +"\t");
				}
				System.out.println();
			}
			
			boolean flag = false;
			for(int i=0; i<a2.length; i++) {
				for(int j=0; j<a2[i].length;j++) {
					if(a2[i][j] != 0) {
						flag = true;
					}
				}
			}
			
			if(flag == false) {
				break;
			}
		}
		
	}
}

 

 

package practice.comprehensive;
import java.util.Arrays;
import java.util.Scanner;
public class ComprehensivePractice {
	public void method() {
		Scanner sc = new Scanner(System.in);
		System.out.print("빙고판 크기 지정 : ");
		int len = sc.nextInt();
		
		//일차원 배열로 중복 값 제거한 후 이차원 배열 대입
		int[] temArr = new int[len*len];
		
		//랜덤 값 대입 후 중복 비교
		for(int i=0; i<temArr.length; i++) {
			temArr[i] = (int)(Math.random() * (len*len)) +1;
			//중복 값 발생하면 i--
			//즉 i+1로 진행하지 않고 다시 i에 랜덤 값 대입 후 중복 비교
			for(int j=0; j<i; j++) {
				if(temArr[i] == temArr[j]) {
					i--;
					break;
				}
			}
		}
		
		//중복 값 제거가 잘 되어있는지 일차원 배열 출력
		System.out.println(Arrays.toString(temArr));
		
		//일차원 배열 -> 이차원 배열
		int[][] arr = new int[len][len];
		int index = 0;
		for(int i=0; i<len; i++) {
			for(int j=0; j<len; j++) {
				arr[i][j] = temArr[index++];
			}
		}
		
		System.out.println("========== 빙고 게임 시작 =========");
		
		//빙고판 출력
		for(int i=0; i<arr.length; i++) {
			for(int j=0; j<arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
		
		//모든 자리가 0이 될 때까지 무한 반복
		while(true) {
			System.out.print("숫자 선택 : ");
			int num = sc.nextInt();
			
			//선택한 숫자를 0으로 바꾼 뒤 출력
			for(int i=0; i<arr.length; i++) {
				for(int j=0; j<arr[i].length; j++) {
					if(arr[i][j] == num) {
						arr[i][j] = 0;
				}
					System.out.print(arr[i][j] + "\t");
				
				}
				System.out.println();	
			}
			
			/*//게임 종료 조건 확인
			boolean flag = false;
			for(int i=0; i<arr.length; i++) {
				for(int j=0; j<arr[i].length; j++) {
					if(arr[i][j] != 0) {
						flag = true;
					}
				}
			}
			//모든 칸이 0이면 게임 종료
			if(flag ==  false) {
				break;
			}*/
			
			//3빙고이면 게임 종료
			int bingoCnt = 0;
			int crossCnt1 = 0;
			int crossCnt2 = 0;

			for(int i=0; i<arr.length; i++) {
				int colCnt = 0;
				int rowCnt = 0;
				for(int j=0; j<arr[i].length; j++) {
					//가로
					if(arr[i][j] == 0) {
						rowCnt++;	
					}
					//세로
					if(arr[j][i] == 0) {
						colCnt++;
					}
					//왼쪽에서 오른쪽 아래로 대각선
					if(i==j && arr[i][j] == 0) {
						crossCnt1++;
					}
					//오른쪽에서 왼쪽 아래로 대각선
					if((i+j ==  len-1) && arr[i][j] == 0){
						crossCnt2++;
					}
				}
				//가로 한줄이 모두 0이면 빙고
				if(rowCnt == len) {
					bingoCnt++;
				}
				//세로 한줄이 모두 0이면 빙고
				if(colCnt == len) {
					bingoCnt++;
				}
			}
			//왼쪽에서 오른쪽 아래로 대각선이 모두 0이면 빙고
			if(crossCnt1 == len) {
				bingoCnt++;
			}
			//오른쪽에서 왼쪽 아래로 대각선이 모두 0이면 빙고
			if(crossCnt2 == len) {
				bingoCnt++;
			}
			//빙고가 3개면 게임 종료
			if(bingoCnt == 3) {
				break;
			}
		}
		System.out.println("빙 고 완 성!!!");
		System.out.println("========= 빙고 게임 종료 =========");
	}
}
package practice.comprehensive;
public class Run {
	public static void main(String[] args) {
		ComprehensivePractice cp = new ComprehensivePractice();
		cp.method();
	}
}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Dev > Java' 카테고리의 다른 글

[객체(2)] 클래스, 선언, 접근제한자, 생성자, getter, setter  (0) 2022.05.10
[객체(1)] 객체 지향 언어, 절차 지향 언어, 클래스, 추상화, 캡슐화, 객체  (0) 2022.05.10
[JAVA기초(16)] 2차원 배열 실습(1), (2)  (0) 2022.05.08
[JAVA기초(15)] 2차원 배열  (0) 2022.05.08
[JAVA기초(14)] 배열 실습(1), (2)  (0) 2022.05.08
'Dev/Java' 카테고리의 다른 글
  • [객체(2)] 클래스, 선언, 접근제한자, 생성자, getter, setter
  • [객체(1)] 객체 지향 언어, 절차 지향 언어, 클래스, 추상화, 캡슐화, 객체
  • [JAVA기초(16)] 2차원 배열 실습(1), (2)
  • [JAVA기초(15)] 2차원 배열
블혜
블혜
  • 블혜
    Blehye Dev
    블혜
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • Dev (69)
        • Java (45)
        • HTML5 CSS3 (16)
        • Javascript (2)
        • 국비학원 (4)
        • Error! (2)
      • Algorithm (12)
        • PS (9)
        • Algorithm (3)
      • English (22)
        • Webtoon (6)
        • Grammar In Use (15)
      • DAILY (20)
        • Trip (10)
        • Musical (2)
        • Swimming (5)
        • Book (1)
        • Test (1)
      • etc. (10)
        • Display (10)
  • 블로그 메뉴

    • 홈
    • STUDY
    • DAILY
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    태종대
    SK하이닉스
    감천문화마을
    인적성
    여자혼자여행
    혼자여행
    SKCT
    SKCT후기
    홍대개미
    SKCT시험
    하이닉스
    부산여행
    송도해수욕장
    부산혼자여행
    SKCT팁
    흰여울문화마을
    SKCT꿀팁
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
블혜
[JAVA기초(17)] 빙고 게임 실습
상단으로

티스토리툴바