推箱子小游戏试写

import java.util.Scanner;
//推箱子小游戏试写
public class games {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        char[][] map = new char[8][10];//地图大小
        int x = 1;
        int y = 1;///玩家坐标
        int l = 2;
        int k = 2;//箱子坐标
        boolean isFlag = true;
        for (int i = 0; i < map.length; i++) {
            map[i][0] = 'H';
            map[i][9] = 'H';
            map[0][i] = 'H';
            map[7][i] = 'H';
            map[0][8] = 'H';
            map[7][8] = 'H';
        }
        map[1][3] = 'H';// 地图内墙壁
        map[2][3] = 'H';
        map[3][3] = 'H';
        map[2][5] = 'H';
        map[3][5] = 'H';
        map[3][6] = 'H';
        map[3][8] = 'H';
        map[4][8] = 'H';
        map[6][4] = 'H';
        map[5][4] = 'H';
        map[5][5] = 'H';
        map[5][6] = 'H';
        map[x][y] = '&';// 玩家角色
        map[l][k] = 'o';// 箱子
        map[6][5] = '*';// 目的地
        while (isFlag) {//循环打印游戏
            for (int i = 0; i < map.length; i++) {
                for (int j = 0; j < map[0].length; j++) {
                    System.out.print(" " + map[i][j]);
                }
                System.out.println();
            }
            System.out.println("(W向上 A向左 S向下 D向右)请输入指令:");
            String order = scan.nextLine();//玩家输入指令
            switch (order.toLowerCase()) {
                case "a":
                    if (map[x][y - 1] == 'H') {//往左走情况一有墙壁
                        map[x][y] = map[x][y];
                    }
                    else if(map[x][y - 1] != 'H' && map[x][y - 1] != 'o') {//往左走情况二
                        map[x][y - 1] = '&';
                        map[x][y] = 0;
                        y--;
                    }
                    if (map[x][y - 1] == 'o'&&map[x][y-2]!='H') {//往左走碰到箱子情况三
                        map[x][y] = 0;//原位置为空
                            map[x][y - 1] = '&';//下一个位置赋给

                            map[l][k - 1] = 'o';
                            map[l][k] = 0;
                        k--;//箱子左移
                            y--;//玩家左移
                        }
                    if(map[l][k]==map[6][5]){
                        isFlag=false;
                        System.out.println("游戏结束");
                    }
                    break;
                case "w":
                    if (map[x - 1][y] == 'H') {//往上走情况一
                        map[x][y] = map[x][y];
                    }
                    if (map[x - 1][y] != 'H' && map[x - 1][y] != 'o') {//往上走情况二
                        map[x - 1][y] = '&';
                        map[x][y] = 0;
                        x--;
                    }
                    if (map[x - 1][y] == 'o'&&map[x - 2][y] != 'H') {//往上走情况三
                            map[l - 1][k] = 'o';
                             map[l][k] = 0;//空
                            map[x - 1][y] = '&';
                            map[x][y] = 0;
                        l--;//箱子上移
                            x--;//玩家上移
                    }
                    if(map[l][k]==map[6][5]){
                        isFlag=false;
                        System.out.println("游戏结束");
                    }
                    break;
                case "s":
                    if (map[x + 1][y] == 'H') {//向下移动情况一
                        map[x][y] = map[x][y];
                    }
                   else if (map[x + 1][y] != 'H' && map[x + 1][y] != 'o') {//向下移动情况二
                        map[x + 1][y] = '&';
                        map[x][y] = 0;
                        x++;

                    }
                   else if (map[x + 1][y] == 'o'&&map[x + 2][y] != 'H') {//向下移动情况三碰到箱子
                        //箱子下一个位置不是墙壁
                            map[l + 1][k] = 'o';//空
                            map[l][k] = 0;
                            map[x + 1][y] = '&';
                            map[x][y] = 0;
                            l++; //箱子移动
                            x++;//玩家移动
                        }
                    if(map[l][k]==map[6][5]){
                        isFlag=false;
                        System.out.println("游戏结束");
                    }
                    break;
                case "d"://向右
                    if (map[x][y + 1] == 'H') {//情况一有墙
                        map[x][y] = map[x][y];
                    }
                    else if (map[x][y + 1] != 'H' && map[x][y + 1] != 'o') {//情况二无墙也不是箱子
                        map[x][y] = 0;
                        map[x][y + 1] = '&';
                        y++;
                    }
                    else if (map[x][y + 1] == 'o'&&map[x][y + 2] != 'H') {//情况三碰见箱子//无墙壁
                            map[l][k + 1] = 'o';
                            map[l][k] = 0;
                            map[x][y + 1] = '&';
                            map[x][y]=0;
                            k++;
                            y++;
                        }
                    if(map[l][k]==map[6][5]){
                        isFlag=false;
                        System.out.println("游戏结束");
                    }
                    break;
            }
        }

    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值