빙고 코드 짜기
// 조건
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;
}
}
}
'Programming > Java \ Spring' 카테고리의 다른 글
🔥자바스터디🔥 객체지향 개념을 살려서 스터디관리 프로그램 만들기 (0) | 2021.06.13 |
---|---|
🔥자바스터디🔥 자바의 정석 CH7 객체지향 프로그래밍(상속, 오버라이딩, 제어자, 다형성, 추상클래스, 인터페이스, 내부클래스) (0) | 2021.06.03 |
🔥자바스터디🔥 자바의 정석 CH6 객체지향 프로그래밍(클래스, 메소드, 오버로딩, 생성자) (0) | 2021.05.30 |
🔥자바스터디🔥 자바의 정석 CH5 배열(Array) (0) | 2021.05.25 |
🔥자바스터디🔥 자바의 정석 CH4 조건문과 반복문(if, switch, for, while) (0) | 2021.05.23 |