程序实现搜索迷宫出口完整版(四)

2014-11-24 11:30:19 · 作者: · 浏览: 25
.readMap((stack.peek().Gety() - 133)/48 + 1, (stack.peek().GetX() - 23)/48) == 3){
JOptionPane.showMessageDialog(null,"Very Good! We Succeed, There is a way to the distict!");
break;
}
if((stack.peek().GetX())/48 <= map.readXlength() &&
(stack.peek().Gety() + 48)/48 <= map.readYlength())
{
map.setMap((stack.peek().Gety() - 133)/48 + 1, (stack.peek().GetX() - 23)/48, 2);
map.setMap((stack.peek().Gety() - 133)/48,(stack.peek().GetX() - 23)/48,5);
//当前栈顶路径的方向设为1
stack.peek().SetPointerTo(1);
//新的当前路径入栈
stack.push(new Rect(stack.peek().GetX(),stack.peek().Gety() + 48));
repaint();
}
try {
Thread.sleep(SleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
};
}
//如果当前栈顶元素的西面不是墙体,不是已经走过的路径,不是无法走通的路径
else if(map.readMap((stack.peek().Gety() - 133)/48, (stack.peek().GetX() - 23)/48 - 1) != 1
&& (map.readMap((stack.peek().Gety() - 133)/48, (stack.peek().GetX() - 23)/48 - 1)) != 4
&& (map.readMap((stack.peek().Gety() - 133)/48, (stack.peek().GetX() - 23)/48 -1) != 5
))
{
//如果当前栈顶元素的西面是终点,弹出胜利提示框,并跳出循环
if(map.readMap((stack.peek().Gety() - 133)/48, (stack.peek().GetX() - 23)/48 - 1) == 3){
JOptionPane.showMessageDialog(null,"Very Good! We Succeed, There is a way to the distict!");
break;
}
if((stack.peek().GetX() - 48)/48 <= map.readXlength() &&
stack.peek().Gety()/48 <= map.readYlength())
{
map.setMap((stack.peek().Gety() - 133)/48, (stack.peek().GetX() - 23)/48 - 1, 2);
map.setMap((stack.peek().Gety() - 133)/48,((stack.peek().GetX() - 23)/48),5);
stack.peek().SetPointerTo(2);
stack.push(new Rect(stack.peek().GetX() - 48,stack.peek().Gety()));
repaint();
}
try {
Thread.sleep(SleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
};
}
//如果当前栈顶元素的北面不是墙体,不是已经走过的路径,不是无法走通的路径
else if(map.readMap((stack.peek().Gety() - 133)/48 - 1, (stack.peek().GetX() - 23)/48) != 1
&& (map.readMap((stack.peek().Gety() - 133)/48 - 1, (stack.peek().GetX() - 23)/48)) != 4
&& (map.readMap((stack.peek().Gety() - 133)/48 - 1, (stack.peek().GetX() - 23)/48) != 5
))
{
//如果当前栈顶元素的北面是终点,弹出胜利提示框,并跳出循环
if(map.readMap((stack.peek().Gety() - 133)/48 - 1, ((stack.peek().GetX() - 23)/48)) == 3){
JOptionPane.showMessageDialog(null,"Very Good! We Succeed, There is a way to the distict!");
break;
}
if((stack.peek().GetX())/48 <= map.readXlength() &&
(stack.peek().Gety() - 48)/48 <= map.readYlength())
{
map.setMap((stack.peek().Gety() - 133)/48 - 1, (stack.peek().GetX() - 23)/48, 2);
map.setMap((stack.peek().Gety() - 133)/48,(stack.peek().GetX() - 23)/48,5);
stack.peek().SetPointerTo(3);
stack.push(new Rect(stack.peek().GetX(),stack.peek().Gety() - 48));
//重绘
repaint();
}
//画图线程睡眠一段时间
try {
Thread.sleep(SleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
};
}
//四个方向均无法走通,则退栈
else
{
//according the weather to pop the object
if(stack.empty() == false)
{
//将当前的路径坐标下映