南哥带你玩转 Java 之 Java 二维数组迷宫游戏
2018-01-06 15:20
288 查看
二维数组迷宫
分析: 1.打印地图 --- 二维数组的遍历 初始角标array[1][1] 结束角标array[1][9] 2.如何让'0'走起来 通过修改横纵角标达到让'0'走起来的目的 如何碰到墙'#'不交换移动 可以先把要走位置的元素取出来判断一下是否为墙'#' 是墙'#'进行交换移动,不是就不进行交换移动 3.循环输入(循环的停止条件就是array[1][9] == ' ' --> array[1][9] == '0' 如果有明确的停止循环条件使用 while 循环比较方便 public static void main(String[] args) { // 有8个一维数组,每个一维数组中有10个元素 // array[1][9] --- 出口 // array[1][1] d ---> array[1][1] == ' ' // array[1][2] == '0' // array[1][2] s ---> array[1][2] == ' ' // array[2][2] == '0' // array[2][2] w ---> array[2][2] == ' ' // array[1][2] == '0' // array[1][2] a ---> array[1][2] == ' ' // array[1][1] == '0' char[][] array = { // y 0 1 2 3 4 5 6 7 8 9 {'#','#','#','#','#','#','#','#','#','#'},// 0 ----- x {'#','0',' ',' ',' ',' ','#','#',' ',' '},// 1 {'#','#',' ','#','#','#','#','#',' ','#'},// 2 {'#',' ',' ',' ',' ','#','#','#',' ','#'},// 3 {'#',' ','#','#',' ','#',' ',' ',' ','#'},// 4 {'#',' ','#','#',' ','#',' ','#','#','#'},// 5 {'#',' ',' ',' ',' ',' ',' ','#','#','#'},// 6 {'#','#','#','#','#','#','#','#','#','#'},// 7 }; // 打印地图 printArray(array); // 声明要用的变量(起始角标、结束角标) // 起始 int x = 1; int y = 1; // 结束 int ex = 1; int ey = 9; Scanner scanner = new Scanner(System.in); while(array[ex][ey] != '0') { // 提示输入(上下左右) w a s d System.out.println("请输入(上下左右) w a s d:"); // 接收输入的值 String string = scanner.nextLine(); // 判断一下,往哪里移动 switch (string) { case "w": // 判断移动位置是否为墙 if (array[x - 1][y] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向上移动 修改坐标 - 1 x--; // 新位置变成'0' array[x][y] = '0'; } break; case "a": // 判断移动位置是否为墙 if (array[x][y - 1] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向左移动 修改坐标 - 1 y--; // 新位置变成'0' array[x][y] = '0'; } break; case "s": // 判断移动位置是否为墙 if (array[x + 1][y] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向下移动 修改坐标 + 1 x++; // 新位置变成'0' array[x][y] = '0'; } break; case "d": // 判断移动位置是否为墙 if (array[x][y + 1] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向右移动 修改坐标 + 1 y++; // 新位置变成'0' array[x][y] = '0'; } break; default: break; } // 修改后再打印一遍地图 printArray(array); } System.out.println("恭喜你通关了!"); scanner.close(); } // 打印地图的方法 public static void printArray(char[][] array) { for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j]); } System.out.println(); } }
二维数组迷宫进阶
把迷宫写成函数 在main函数中调用 并添加些功能 例如 过三关 和 计分 static Scanner scanner = new Scanner(System.in); static int num = 0; public static void main(String[] args) { // 有8个一维数组,每个一维数组中有10个元素 // array[1][9] --- 出口 // array[1][1] d ---> array[1][1] == ' ' // array[1][2] == '0' // array[1][2] s ---> array[1][2] == ' ' // array[2][2] == '0' // array[2][2] w ---> array[2][2] == ' ' // array[1][2] == '0' // array[1][2] a ---> array[1][2] == ' ' // array[1][1] == '0' char[][] array = { // y 0 1 2 3 4 5 6 7 8 9 {'#','#','#','#','#','#','#','#','#','#'},// 0 ----- x {'#','0',' ',' ',' ',' ','#','#',' ',' '},// 1 {'#','#',' ','#','#','#','#','#',' ','#'},// 2 {'#',' ',' ',' ',' ','#','#','#',' ','#'},// 3 {'#',' ','#','#',' ','#',' ',' ',' ','#'},// 4 {'#',' ','#','#',' ','#',' ','#','#','#'},// 5 {'#',' ',' ',' ',' ',' ',' ','#','#','#'},// 6 {'#','#','#','#','#','#','#','#','#','#'},// 7 }; char[][] array1 = { // y 0 1 2 3 4 5 6 7 8 9 {'#','#','#','#','#','#','#','#','#','#'},// 0 ----- x {'#','0',' ',' ',' ','#',' ',' ',' ',' '},// 1 {'#','#','#','#',' ','#',' ','#',' ','#'},// 2 {'#',' ',' ',' ',' ','#',' ','#',' ','#'},// 3 {'#',' ','#','#','#','#',' ','#',' ','#'},// 4 {'#',' ','#','#',' ','#',' ','#',' ','#'},// 5 {'#',' ',' ',' ',' ',' ',' ',' ','#','#'},// 6 {'#','#','#','#','#','#','#','#','#','#'},// 7 }; char[][] array2 = { // y 0 1 2 3 4 5 6 7 8 9 {'#','#','#','#','#','#','#','#','#','#'},// 0 ----- x {'#','0',' ',' ',' ','#',' ',' ',' ',' '},// 1 {'#',' ','#','#',' ','#','#',' ','#','#'},// 2 {'#',' ','#','#',' ','#','#',' ','#','#'},// 3 {'#',' ','#','#',' ','#','#',' ','#','#'},// 4 {'#',' ','#','#',' ','#','#',' ','#','#'},// 5 {'#',' ',' ',' ',' ',' ',' ',' ','#','#'},// 6 {'#','#','#','#','#','#','#','#','#','#'},// 7 }; for (int i = 0; i < 3; i++) { switch (i) { case 0: // 打印地图 printArray(array); System.out.println("第一关"); game(array); break; case 1: // 打印地图 printArray(array1); System.out.println("第二关"); game(array1); break; case 2: // 打印地图 printArray(array2); System.out.println("第三关"); game(array2); System.out.println("你用了" + num + "步走完三关迷宫"); break; default: break; } } } // 打印地图的方法 public static void printArray(char[][] array) { for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j]); } System.out.println(); } } // 循环游戏 public static void game(char[][] array) { // 声明要用的变量(起始角标、结束角标) // 起始 int x = 1; int y = 1; // 结束 int ex = 1; int ey = 9; while(array[ex][ey] != '0') { // 提示输入(上下左右) w a s d System.out.println("请输入(上下左右) w a s d:"); // 接收输入的值 String string = scanner.nextLine(); num++; // 判断一下,往哪里移动 switch (string) { case "w": // 判断移动位置是否为墙 if (array[x - 1][y] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向上移动 修改坐标 - 1 x--; // 新位置变成'0' array[x][y] = '0'; } break; case "a": // 判断移动位置是否为墙 if (array[x][y - 1] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向左移动 修改坐标 - 1 y--; // 新位置变成'0' array[x][y] = '0'; } break; case "s": // 判断移动位置是否为墙 if (array[x + 1][y] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向下移动 修改坐标 + 1 x++; // 新位置变成'0' array[x][y] = '0'; } break; case "d": // 判断移动位置是否为墙 if (array[x][y + 1] != '#') { // 把原来改为空格 array[x][y] = ' '; // 向右移动 修改坐标 + 1 y++; // 新位置变成'0' array[x][y] = '0'; } break; default: break; } // 修改后再打印一遍地图 printArray(array); } System.out.println("恭喜你通关了!"); }
http://blog.csdn.net/huzongnan/article/list
相关文章推荐
- java游戏制作之迷宫代码
- 南哥带你玩转 Java 之 Java FIle 类
- 南哥带你玩转 Java 之 Java 集合应用 -- DVD管理
- 南哥带你玩转 Java 之 Java 代码块
- 南哥带你玩转 Java 之 Java 文件过滤器
- 南哥带你玩转 Java 之 Java 基本数据类型的包装类
- 南哥带你玩转 Java 之 Java StringBuffer
- 南哥带你玩转 Java 之 Java 石头剪刀布游戏
- 南哥带你玩转 Java 之 Java 初识运行原理和操作
- 南哥带你玩转 Java 之 Java 继承
- java游戏之迷宫
- 南哥带你玩转 Java 之 Java 集合(泛型及集合删除方法)
- 南哥带你玩转 Java 之 Java 类和对象
- 二维数组应用:迷宫游戏
- 南哥带你玩转 Java 之 Java 字符流与转换流
- 南哥带你玩转 Java 之 Java 流程控制
- 南哥带你玩转 Java 之 Java 异常处理
- 南哥带你玩转 Java 之 Java String 类
- 南哥带你玩转 Java 之 Java 抽象(abstract)
- 南哥带你玩转 Java 之 Java 接口