1 import java.util.Scanner; 2 public class b { 3 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 int[][] map = new int[15][15]; //地圖 7 int rx = 1; 8 int ry = 2;//人的坐標 9 int xx = 13; 10 int xy = 12;//箱子的坐標 11 int mx = 10; 12 int my = 3;//目的地坐標 13 14 map[rx][ry] = 1; // 設置人的坐標位置為1 15 map[xx][xy] = 2; // 設置箱子的坐標位置為2 16 map[mx][my] = 3; // 設置目的地的坐標位置為3 17 boolean tt = false; 18 19 while(true){ 20 for(int i=0;i<15;i++){ 21 for(int j=0;j<15;j++){ 22 if(map[i][j] == 1){ 23 System.out.print("囚"); // 人物 24 }else if(map[i][j] == 2){ 25 System.out.print("▲"); // 箱子 26 }else if(map[i][j] == 3){ 27 System.out.print("★"); // 目的地 28 }else{ 29 System.out.print("□"); // 地圖 30 } 31 } 32 System.out.println(); // 換行 33 } 34 if(tt){ // 判斷 35 System.out.print("成功將箱子推到終點!"); 36 break; // 跳出循環 37 } 38 System.out.print("要往哪走(w上,s下,a左,d右):"); // 用戶輸入 39 String f = input.next(); // 只接收一個字符 40 41 if(f.equals("w")){ // 上 42 // 判斷人是否走到邊上 43 if(rx-1<0){ 44 continue; 45 } 46 // 判斷人是否推著箱子 47 if(map[rx-1][ry]==2){ 48 //判斷箱子是否在邊上 49 if(rx-2<0){ 50 continue; 51 } 52 // 判斷箱子是否進入目的地 53 if(map[rx-2][ry] == 3){ 54 tt=true; 55 } 56 // 箱子走一步 57 map[rx-2][ry]=2; 58 } 59 // 判斷人是否走到目的地裡 60 if(map[rx-1][ry]==3){ 61 map[rx][ry]=0; 62 rx--; 63 continue; 64 }else if(map[rx][ry]==3){// 判斷人是否走出目的地 65 map[rx][ry]=3; 66 rx--; 67 map[rx][ry]=1; 68 continue; 69 } 70 map[rx][ry]=0; 71 rx--; 72 map[rx][ry]=1; 73 74 }else if(f.equals("s")){ // 下 75 // 判斷人是否走到邊上 76 if(rx+1>14){ 77 continue; 78 } 79 // 判斷人是否推著箱子 80 if(map[rx+1][ry]==2){ 81 //判斷箱子是否在邊上 82 if(rx+2>14){ 83 continue; 84 } 85 // 判斷箱子是否進入目的地 86 if(map[rx+2][ry] == 3){ 87 tt=true; 88 } 89 // 箱子走一步 90 map[rx+2][ry]=2; 91 } 92 // 判斷人是否走到目的地裡 93 if(map[rx+1][ry]==3){ 94 map[rx][ry]=0; 95 rx++; 96 continue; 97 }else if(map[rx][ry]==3){// 判斷人是否走出目的地 98 map[rx][ry]=3; 99 rx++; 100 map[rx][ry]=1; 101 continue; 102 } 103 map[rx][ry]=0; 104 rx++; 105 map[rx][ry]=1; 106 107 }else if(f.equals("a")){ // 左 108 // 判斷人是否走到邊上 109 if(ry-1<0){ 110 continue; 111 } 112 // 判斷人是否推著箱子 113 if(map[rx][ry-1]==2){ 114 //判斷箱子是否在邊上 115 if(ry-2<0){ 116 continue; 117 } 118 // 判斷箱子是否進入目的地 119 if(map[rx][ry-2] == 3){ 120 tt=true; 121 } 122 // 箱子走一步 123 map[rx][ry-2]=2; 124 } 125 // 判斷人是否走到目的地裡 126 if(map[rx][ry-1]==3){ 127 map[rx][ry]=0; 128 ry--; 129 continue; 130 }else if(map[rx][ry]==3){// 判斷人是否走出目的地 131 map[rx][ry]=3; 132 ry--; 133 map[rx][ry]=1; 134 continue; 135 } 136 map[rx][ry]=0; 137 ry--; 138 map[rx][ry]=1; 139 }else if(f.equals("d")){ // 右 140 // 判斷人是否走到邊上 141 if(ry+1>14){ 142 continue; 143 } 144 // 判斷人是否推著箱子 145 if(map[rx][ry+1]==2){ 146 //判斷箱子是否在邊上 147 if(ry+2>14){ 148 continue; 149 } 150 // 判斷箱子是否進入目的地 151 if(map[rx][ry+2] == 3){ 152 tt=true; 153 } 154 // 箱子走一步 155 map[rx][ry+2]=2; 156 } 157 // 判斷人是否走到目的地裡 158 if(map[rx][ry+1]==3){ 159 map[rx][ry]=0; 160 ry++; 161 continue; 162 }else if(map[rx][ry]==3){// 判斷人是否走出目的地 163 map[rx][ry]=3; 164 ry++; 165 map[rx][ry]=1; 166 continue; 167 } 168 map[rx][ry]=0; 169 ry++; 170 map[rx][ry]=1; 171 } 172 173 } 174 } 175 }