Java控制台版推箱子,java控制台推箱子
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 }