ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 테트리스 이동 문제 답없음
    과거⚰️ 2020. 12. 20. 15:35
    package day058_2;
    
    import java.util.Scanner;
    
    class SettingGame {
        int[][] settingGame(String data) {
            String[] tmp = data.split("\n");
            String[] tmpGame = tmp[0].split(",");
            int[][] game = new int[tmp.length][tmpGame.length];
            for (int i = 0; i < tmp.length; i++) {
                for (int j = 0; j < tmpGame.length; j++) {
                    tmpGame = tmp[i].split(",");
                    game[i][j] = Integer.parseInt(tmpGame[j]);
                }
            }
            return game;
        }
    
        int[][] settingBlock(String block) {
            String[] tmp = block.split("\n");
            String[] tmpGame = tmp[0].split(",");
            int[][] blockShape = new int[tmp.length][tmpGame.length];
            for (int i = 0; i < tmp.length; i++) {
                for (int j = 0; j < tmpGame.length; j++) {
                    tmpGame = tmp[i].split(",");
                    blockShape[i][j] = Integer.parseInt(tmpGame[j]);
                }
            }
            return blockShape;
        }
    }
    
    public class Ex00605테트리스이동하기문제답없음 {
        public static void main(String[] args) {
            String data = "";
            data += "2,0,0,0,0,1,0,0,0,0\n";
            data += "2,0,0,0,0,1,0,0,0,0\n";
            data += "2,2,2,0,0,1,0,0,0,0\n";
            data += "0,0,0,0,0,0,0,0,0,0\n";
            data += "0,0,0,0,0,1,0,0,0,0\n";
            data += "0,0,0,0,0,1,0,0,0,0\n";
            data += "0,0,0,0,0,1,0,0,0,0\n";
            data += "0,0,0,0,0,1,0,0,0,0\n";
            data += "0,0,0,0,0,1,0,0,0,0\n";
            data += "0,0,0,0,0,0,0,0,0,0\n";
    
            System.out.println(data);
    
            String block = "";
            block += "2,0,0\n";
            block += "2,0,0\n";
            block += "2,2,2\n";
    
            System.out.println(block);
            SettingGame sg = new SettingGame();
            int[][] blockShape = sg.settingBlock(block);
            int[][] game = sg.settingGame(data);
            // 문제   ==> "1)상  2)하 3)좌 4)우" 를 입력할때마다 해당방향으로 블록전체이동
            // 조건) ==> 1은 지나갈수없다.
    
    		/*
    		    "2,0,0,0,0,1,0,0,0,0\n";
    			"2,0,0,0,0,1,0,0,0,0\n";
    			"2,2,2,0,0,1,0,0,0,0\n";
    			"0,0,0,0,0,0,0,0,0,0\n";
    			"0,0,0,0,0,1,0,0,0,0\n";
    			"0,0,0,0,0,1,0,0,0,0\n";
    			"0,0,0,0,0,1,0,0,0,0\n";
    			"0,0,0,0,0,1,0,0,0,0\n";
    			"0,0,0,0,0,1,0,0,0,0\n";
    			"0,0,0,0,0,0,0,0,0,0\n";
    		 */
            int cnt = 0;
            for (int i = 0; i < blockShape.length; i++) {
                for (int j = 0; j < blockShape[i].length; j++) {
                   if(blockShape[i][j]==2){
                       cnt++;
                   }
                }
                System.out.println();
            }
            while (true) {
                int[] blockY = new int[cnt];
                int[] blockX = new int[cnt];
                int x = 0;
                int y = 0;
                for (int i = 0; i < game.length; i++) {
                    for (int j = 0; j < game[i].length; j++) {
                        System.out.print(game[i][j]);
                        if(game[i][j]==2){
                            blockY[y] = i;
                            blockX[x] = j;
                            y++;
                            x++;
                        }
                    }
                    System.out.println();
                }
                System.out.println();
    
                for (int i = 0; i < blockShape.length; i++) {
                    for (int j = 0; j < blockShape[i].length; j++) {
                        System.out.print(blockShape[i][j]);
                    }
                    System.out.println();
                }
                for (int i=0; i<blockX.length; i++){
                    System.out.println("y " + blockY[i] + " x " + blockX[i]);
                }
                Scanner sc = new Scanner(System.in);
                System.out.println("1)상  2)하 3)좌 4)우");
                int choice = sc.nextInt();
                if (choice == 1) {
                    if(blockY[0]-1<0){
                        System.out.println("이동불가");
                        continue;
                    }
                    boolean t = false;
                    for (int i = 0; i < blockX.length; i++) {
                        if(game[blockY[i]-1][blockX[i]]!=1) {
                            t = true;
                        }else {
                            t=false;
                            break;
                        }
                    }
                    if(t) {
                        for (int i = 0; i < blockX.length; i++) {
                            game[blockY[i]][blockX[i]]=0;
                        }
                        for (int i = 0; i < blockX.length; i++) {
                            game[blockY[i] - 1][blockX[i]] = 2;
                        }
                    }else{
                        System.out.println("이동불가");
                    }
                } else if (choice == 2) {
                    if(blockY[2]+1>= game.length){
                        System.out.println("이동불가 1");
                        continue;
                    }
                    boolean t = false;
                    for (int i = 0; i < blockX.length; i++) {
                        if(game[blockY[i]+1][blockX[i]]!=1) {
                           t = true;
                        }else {
                            t=false;
                            break;
                        }
                    }
                    if(t) {
                        for (int i = 0; i < blockX.length; i++) {
                            game[blockY[i]][blockX[i]]=0;
                        }
                        for (int i = 0; i < blockX.length; i++) {
    
                            game[blockY[i] + 1][blockX[i]] = 2;
                        }
                    }else{
                        System.out.println("이동불가 2");
                    }
                } else if (choice == 3) {
                    if(blockX[0]-1<0){
                        System.out.println("이동불가");
                        continue;
                    }
                    boolean t = false;
                    for (int i = 0; i < blockX.length; i++) {
                        if(game[blockY[i]][blockX[i]-1]!=1) {
                            t = true;
                        }else {
                            t=false;
                            break;
                        }
                    }
                    if(t) {
                        for (int i = 0; i < blockY.length; i++) {
                            game[blockY[i]][blockX[i]]=0;
                        }
                        for (int i = 0; i < blockY.length; i++) {
    
                            game[blockY[i]][blockX[i]-1] = 2;
                        }
                    }else{
                        System.out.println("이동불가");
                    }
                } else if (choice == 4) {
                    if(blockX[4]+1>= game.length){
                        System.out.println("이동불가");
                        continue;
                    }
                    boolean t = false;
                    for (int i = 0; i < blockX.length; i++) {
                        if(game[blockY[i]][blockX[i]+1]!=1) {
                            t = true;
                        }else {
                            t=false;
                            break;
                        }
                    }
                    if(t) {
                        for (int i = 0; i < blockX.length; i++) {
                            game[blockY[i]][blockX[i]] = 0;
                        }
                        for (int i = 0; i < blockX.length; i++) {
    
                            game[blockY[i]][blockX[i]+1] = 2;
                        }
                    }else{
                        System.out.println("이동불가");
                    }
                } else {
                    System.out.println("retry");
                }
            }
        }
    }

    '과거⚰️' 카테고리의 다른 글

    java 연습 수강신청 예제  (0) 2020.12.22
    스테틱 사용 전 후  (0) 2020.12.21
    정처리 문제  (0) 2020.12.19
    메모리 그림  (0) 2020.12.18
    ArrayList  (0) 2020.12.17
Designed by Tistory.