可用'*'表示
FileMap.java /** *
*/
package map;
import java.io.*; import java.util.*; /**
* @author guhonglueying * */
// map生成方法之从文件中读取
public class FileMap extends SubMap {
} catch (IOException e) { e.printStackTrace(); }
charArr = new char[stk.size()][];
for (int i = charArr.length - 1; i > -1; i--) { }
charArr[i] = stk.pop();
try {
FileReader fr = new FileReader(s[0]);
BufferedReader bw = new BufferedReader(fr); while ((str = bw.readLine()) != null) { stk.push(str.toCharArray()); }
// 重写父类create方法,用于从文件中读取新地图 public void create(String... s) {
String str = null;
Stack
}
}
SimpleMap.java /** *
*/
package map;
/**
* @author guhonglueying * */
// map生成方法之程序中定义map
public class SimpleMap extends SubMap { // 重写父类create方法,用来从程序中创建新地图 }
SubMap.java /** *
*/
package map;
}
charArr = new char[][] { { '0', '0', '1', '1', '1', '0', '0', '0' }, { '1', '0', '0', '0', '0', '0', '1', '0' }, };
{ '0', '0', '0', '1', '1', '0', '1', '0' }, { '0', '1', '0', '0', '0', '0', '0', '0' }, { '0', '1', '0', '1', '0', '1', '0', '0' }, { '0', '0', '0', '1', '0', '0', '0', '1' }, { '1', '1', '0', '0', '0', '1', '0', '1' }, { '1', '1', '1', '1', '1', '1', '0', '0' }
public void create(String... s) {
/**
* @author guhonglueying * */
// 生成map的抽象类,用来定义map的一些public属性和方法 public abstract class SubMap { }
SystemInMap.java /**
* */
package map;
public void setCol(int col) { }
this.col = col; int row; int col;
char[][] charArr;
public void setRow(int row) { this.row = row; }
public int getRow() { return row; }
public int getCol() { }
return col;
// 抽象方法,在子类中实现新地图生成的不同实现 public abstract void create(String... s); public char[][] getMap() { }
this.row = charArr.length; this.col = charArr[0].length; return charArr;
import java.io.*; import java.util.*; /**
* @author guhonglueying * */
// map生成方法之从标准输入流获取
public class SystemInMap extends SubMap {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader bw = new BufferedReader(isr); System.out.println(\请用以下字符输入一方形地图:\\n1-墙,0-路,@-入口,#-出口\\n每次输入一行回车,输入E结束\ }
}
while ((str = bw.readLine()) != null) { if (str.equalsIgnoreCase(\ }
break; }
stk.push(str.toCharArray());
// 重写父类create方法,用于从命令操作符中读取新地图 public void create(String... s) {
String str = null;
Stack
} catch (IOException e) { e.printStackTrace(); }
charArr = new char[stk.size()][];
for (int i = charArr.length - 1; i > -1; i--) { charArr[i] = stk.pop(); }
Person.java /** * */
package objectmovable;
import util.*; /**
* @author guhonglueying * */
// 实现person的走迷宫过程
public class Person extends SubObjectMovable { }
public void Maze(char[][] ch) { System.out.println(\ }
h = new Helper(ch);
h.searchTheWay(System.out); h.printTheWay(System.out, 2);
Ship.java /** * */
package objectmovable;
import util.*;
/**
* @author guhonglueying * */
// 实现ship的走迷宫过程
public class Ship extends SubObjectMovable {
public void Maze(char[][] ch) { System.out.println(\