前提・実現したいこと
個人製作で迷路を作っていたのですが迷路のスタートとゴールを作ることができませんでした。
迷路のサイズを参照する形で場所を作ろうとしましたが参照がうまくいかずに変化がないまま
プログラムが終了してしまいます。
迷路内に作る形でも外枠を開ける形でもいいのですがどなたかわかる方いらっしゃいましたら
よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Java
1import java.util.ArrayList; 2import java.util.Collections; 3import java.util.Scanner; 4 5public class Maze { 6 7 public static void main(String[]args){ 8 Information(); 9 Scanner scanner = new Scanner(System.in); 10 String dif = scanner.next(); 11 int[][] maze; 12 maze = Difficulty(dif); 13 14 int row = maze.length/2,col = maze[0].length/2; 15 maze[row][col] = 1; 16 ArrayList<Integer>direction = new ArrayList<Integer>(); 17 direction.add(0); 18 direction.add(1); 19 direction.add(2); 20 direction.add(3); 21 createRoute(maze,row,col,direction); 22 outputMaze(maze); 23 24 } 25 public static void createRoute(int[][]maze,int row,int col,ArrayList<Integer>direction){ 26 Collections.shuffle(direction); 27 for(int i = 0;i < direction.size();i++){ 28 if(canCreate(maze,direction.get(i),row,col)){ 29 switch(direction.get(i)){ 30 case 0: 31 maze[row][col - 1] = 1; 32 maze[row][col - 2] = 1; 33 col = col - 2; 34 break; 35 case 1: 36 maze[row][col + 1] = 1; 37 maze[row][col + 2] = 1; 38 col = col + 2; 39 break; 40 case 2: 41 maze[row+1][col] = 1; 42 maze[row+2][col] = 1; 43 row = row + 2; 44 break; 45 case 3: 46 maze[row-1][col] = 1; 47 maze[row-2][col] = 1; 48 row = row - 2; 49 break; 50 default: 51 break; 52 } 53 direction.add(0); 54 direction.add(1); 55 direction.add(2); 56 direction.add(3); 57 createRoute(maze,row,col,direction); 58 } 59 } 60 } 61 static boolean canCreate(int[][]maze,int direction,int row,int col){ 62 switch(direction){ 63 case 0: 64 if(col - 2 <= 0){ 65 return false; 66 }else{ 67 if(maze[row][col - 2] == 0){ 68 return true; 69 }else{ 70 return false; 71 } 72 } 73 case 1: 74 if(col + 2 >=maze[0].length - 1){ 75 return false; 76 }else{ 77 if(maze[row][col + 2] == 0){ 78 return true; 79 }else{ 80 return false; 81 } 82 } 83 case 2: 84 if(row + 2 >=maze.length-1){ 85 return false; 86 }else{ 87 if(maze[row + 2][col] == 0){ 88 return true; 89 }else{ 90 return false; 91 } 92 } 93 case 3: 94 if(row - 2 <= 0){ 95 return false; 96 }else{ 97 if(maze[row - 2][col] == 0){ 98 return true; 99 }else{ 100 return false; 101 } 102 } 103 default: 104 } 105 return false; 106 } 107 public static void outputMaze(int[][]maze){ 108 for(int i = 0;i < maze.length;i++){ 109 for(int j = 0;j < maze[i].length;j++){ 110 if(maze[i][j] == 0){ 111 System.out.print("□"); 112 }else{ 113 System.out.print(" "); 114 } 115 } 116 System.out.println(); 117 } 118 } 119 public static void Information() { 120 System.out.println("迷路ゲームです"); 121 System.out.println("難易度を以下から選択してください"); 122 System.out.println("EASY,NORMAL,HARD,VERYHARD"); 123 } 124 125 public static int[][] Difficulty(String dif) { 126 int height = 0; 127 int width = 0; 128 129 130 switch(dif){ 131 case "EASY": 132 System.out.println("EASYが選択されました"); 133 height = 19; 134 width = 19; 135 break; 136 case "NORMAL": 137 System.out.println("NORMALが選択されました"); 138 height = 31; 139 width = 31; 140 break; 141 case "HARD": 142 System.out.println("HARDが選択されました"); 143 height = 43; 144 width = 43; 145 break; 146 case "VERYHARD": 147 System.out.println("VERYHARDが選択されました"); 148 height = 55; 149 width = 55; 150 break; 151 default: 152 System.out.println("その難易度は存在しません"); 153 } 154 int maze[][] = new int[height][width]; 155 return maze; 156 } 157} 158
試したこと
配列を参照してスペースを代入したが型の違いで消すことができませんでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。