package maze;
public interface State {
String SOUTH = "SOUTH";
String WEST = "WEST";
String NORTH = "NORTH";
String EAST = "EAST";
void left(Person p);
void right(Person p);
boolean run(Person p);
abstract String getState();
}
class SouthState implements State {
@Override
public void left(Person p) {
p.state = new EastState();
}
@Override
public void right(Person p) {
p.state = new WestState();
}
@Override
public String getState() {
return SOUTH;
}
@Override
public boolean run(Person p) {
if (p.isBackPath())
return false;
p.y++;
if (Maze.isThrough(p.x, p.y, p.maze)) {
p.path.push(new Point(p.x, p.y, getState()));
return true;
} else {
p.y--;
return false;
}
}
}
class WestState implements State {
@Override
public void left(Person p) {
p.state = new SouthState();
}
@Override
public void right(Person p) {
p.state = new NorthState();
}
@Override
public String getState() {
return WEST;
}
@Override
public boolean run(Person p) {
if (p.isBackPath())
return false;
p.x--;
if (Maze.isThrough(p.x, p.y, p.maze)) {
p.path.push(new Point(p.x, p.y, getState()));
return true;
} else {
p.x++;
return false;
}
}
}
class NorthState implements State {
@Override
public void left(Person p) {
p.state = new WestState();
}
@Override
public void right(Person p) {
p.state = new EastState();
}
@Override
public String getState() {
return NORTH;
}
@Override
public boolean run(Person p) {
if (p.isBackPath())
return false;
p.y--;
if (Maze.isThrough(p.x, p.y, p.maze)) {
p.path.push(new Point(p.x, p.y, getState()));
return true;
} else {
p.y++;
return false;
}
}
}
class EastState implements State {
@Override
public void left(Person p) {
p.state = new NorthState();
}
@Override
public void right(Person p) {
p.state = new SouthState();
}
@Override
public String getState() {
return EAST;
}
@Override
public boolean run(Person p) {
if (p.isBackPath())
return false;
p.x++;
if (Maze.isThrough(p.x, p.y, p.maze)) {
p.path.push(new Point(p.x, p.y, getState()));
return true;
} else {
p.x--;
return false;
}
}
}
Java迷宫算法 Java迷宫算法
4星 · 超过85%的资源 需积分: 44 91 浏览量
2010-09-07
22:30:59
上传
评论 2
收藏 2KB RAR 举报
qq317480299
- 粉丝: 0
- 资源: 1
最新资源
- Three.js介绍.zip
- Android14 CTS Verifier测试手册.pdf
- NC65 UAP65 流程开发 – 业务流 – 推单 详细笔记
- 两种计算CDF累加分布函数的Matlab程序,可以选择使用 .rar
- Windows操作系统介绍.zip
- 汉森的广义t分布的matlab程序(金融)cdf.zip
- Three.js介绍.zip0002
- 人工智能BBSO算法,MATLAB实现,很基本的人工智能算法,里面有很多源程序
- 高端大气科技互联网项目融资商业计划书产品公司品牌介绍PPT模板.pptx
- Sora AI文字生成视频实操教程、由给定的图片生成视频的教程说明书,祝你一臂之力 轻松上手Sora
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈