简易推箱子游戏

富涛
2023-12-01
package Homework;

import java.util.Random;
import java.util.Scanner;

public class TuiXiangZi {
    public static void main(String[] args) {
        
        /*
         * 首先我们创建出来小人可以移动的地图
         * 这个地图是一个二维数组
         * */
        /*---------创建地图,并实例化小人-----------*/
        int[][] map = new int[6][6];
        
        /*
         * 接下来,我希望从输入确定我的小人在哪个初始位置
         * */
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入小人的行坐标:从0-"+(map.length-1));
        int i = scanner.nextInt();//就是小人的行坐标
        if(i>map.length-1 || i<0){
            System.err.println("您输入的行数有误,小人坐标脱离了地图");
            return;
        }
        System.out.println("请输入小人的列坐标:从0-"+(map[0].length-1));
        int j = scanner.nextInt();//就是小人的列坐标
        if(j>map[0].length-1 || j<0){
            System.err.println("您输入的列数有误,小人坐标脱离了地图");
            return;
        }
        
//        System.out.println("请输入箱子的行坐标:从0-"+(map.length-1));
//        int m = scanner.nextInt();
//        if(m >=map .length || m<0){
//            System.out.println("箱子脱离地图");
//            return;
//        }
//        System.out.println("请输入箱子的纵坐标:从0-"+(map[0].length-1));    
//        int n = scanner.nextInt();
//        if(n>=map[m].length || n<0){
//            System.out.println("箱子脱离地图");
//            return;
//        }
        
//        System.out.println("请输入终点的行坐标:从0-"+(map.length-1));
//        int x = scanner.nextInt();
//        if(x>=map.length || x<0){
//            System.out.println("终点脱离地图");
//            return;
//        }
//        System.out.println("请输入终点的纵坐标:从0-"+(map[x].length-1));        
//        int y = scanner.nextInt();
//        if(y>=map[x].length|| y<0){
//            System.out.println("终点脱离地图");
//            return;
//        }
        int m =new Random().nextInt(4)+1;
        int n =new Random().nextInt(4)+1;
        
        int x =new Random().nextInt(6);
        int y =new Random().nextInt(6);
        
        map[i][j] = 1;
        map[m][n] = 2;
        map[x][y] = 3;
        /*
         * 我们检查一下目前的地图和小人
         * */

        while (true) {
            System.out.println("小地图目前状态如下");
            System.out.println("*************************************************");
            
            for (int k = 0; k < map.length; k++) {
                for (int q = 0; q < map[0].length; q++) {
                    System.out.print(map[k][q]+"  ");
                }

                System.out.println();
            }
            
            
            /*----------检查动作结束------------*/
            
            /*————————————小人行走的逻辑——————————-——*/
            System.out.println("请输入小人移动的方向:w向上,s向下,a向左,d向右");
            String num = scanner.next();
            num.toUpperCase();

            switch (num) {
            case "w"://这里让小人向上移动
                if(m == 0){
                    System.err.println("箱子到顶了");
                }else{
                
                if(m==i-1 && n==j){            
                    map[m-1][n]=map[m][n];
                    map[m][n]=0;
                    m=m-1;
                }else{
                    
                 }
                }
                if (i == 0) {
                    System.err.println("小人撞壁了,继续撞可能会被打死");
                } else {
                    map[i - 1][j] = map[i][j];
                    map[i][j] = 0;
                    i = i - 1;
                }
                        
                break;
                
            case "s":
                if(m == 5){
                    System.err.println("箱子到顶了");
                }else{
                
                if(m==i+1 && n==j){            
                    map[m+1][n]=map[m][n];
                    map[m][n]=0;
                    m=m+1;
                }else{
                    
                 }
                }
                if (i == 5) {
                    System.err.println("小人撞壁了,继续撞可能会被打死");
                } else {
                    map[i + 1][j] = map[i][j];
                    map[i][j] = 0;
                    i = i + 1;
                }
                break;
                
            case "a":
                if(n == 0){
                    System.err.println("箱子到顶了");
                }else{
                
                if(n==j-1 && m==i){            
                    map[m][n-1]=map[m][n];
                    map[m][n]=0;
                    n=n-1;
                }else{
                    
                 }
                }
                if (j == 0) {
                    System.err.println("小人撞壁了,继续撞可能会被打死");
                } else {
                    map[i][j - 1] = map[i][j];
                    map[i][j] = 0;
                    j = j - 1;
                }
                break;
                
            case "d":
                if(n == 5){
                    System.err.println("箱子到顶了");
                }else{
                
                if(n==j+1 && m==i){            
                    map[m][n+1]=map[m][n];
                    map[m][n]=0;
                    n=n+1;
                }else{
                    
                 }
                }                                
                if (j == 5){
                    System.err.println("小人撞壁了,继续撞可能会被打死");
                } else {
                    map[i][j + 1] = map[i][j];
                    map[i][j] = 0;
                    j = j + 1;
                }
                break;
                
                default:
                    System.err.println("you are dead" + "   " );
                    
                    return;
                }        
              if((m==x) && (n==y)){
                  
                System.out.println("小地图目前状态如下");
              System.out.println("*************************************************");
            
              for (int k = 0; k < map.length; k++) {
                  for (int q = 0; q < map[0].length; q++) {
                      System.out.print(map[k][q]+"  ");
                      map[x][y]=5;
                  }

                  System.out.println();
              }
                      System.err.println("you win!");
               return;
              }        
            }

        }

    }

 类似资料: