과거⚰️

테트리스 이동 문제 답없음

아무루 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");
            }
        }
    }
}