你的位置:首页 > Java教程

[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 }