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

2014-11-24 11:30:19 · 作者: · 浏览: 26
射的数组元素值设置为4,表示不可走通,以便于重绘
map.setMap((stack.peek().Gety() - 133)/48,(stack.peek().GetX() - 23)/48,4);
//将当前的路径的方向设置为4,表示四个方向均无法走通,貌似没有多大用处,下一行代码有没有都行
stack.peek().SetPointerTo(4);
//System.out.println(stack.peek().GetNowValue());
//将栈顶路径对象删除
stack.pop();
//如果栈非空并且当前栈顶路径对象还没开始向北探索,即标志值为3
if(stack.empty() == false && (stack.peek().GetPointerTo() != 3))
{
//将当前栈顶对象设置为当前路径,并设置值2,便于重绘
map.setMap((stack.peek().Gety() - 133)/48,(stack.peek().GetX() - 23)/48,2);
//System.out.println(map.readMap((stack.peek().Gety() - 133)/48, (stack.peek().GetX() - 23)/48));
//将当前路径的方向自增1,一直迷惑这句有什么用处?
stack.peek().SetPointerTo(stack.peek().GetPointerTo() + 1);
//重绘
repaint();
}
try {
Thread.sleep(SleepTime/5);
}catch (InterruptedException e){
e.printStackTrace();
};
}
}
}//while循环结束
//若栈最终为空,则迷宫无路可通,弹出提示对话框
if(stack.empty() != false)
JOptionPane.showMessageDialog(null,"Oh my God, We fail, There is no way to the distict!");
}//run()方法结束
}//画图线程结束
//内部类
class Monitor implements ActionListener {
int i = 0;
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//点击了开始按钮
if(arg0.getSource() == a){
//所有线程均启动
changetoTrue();
Painter.start();
}
//点击了进入按钮
else if(arg0.getSource() == l){
String s = t.getText();
int m = Integer.parseInt(s);
map = init.InitGameArea(m);
map = new Map(m);
repaint();
}
//点击了暂停按钮
else if(arg0.getSource() == b){
//所有线程均休眠
i++;
if(i%2 == 0){
resumeThread();
}
else if(i%2 == 1){
changetoFalse();
}
}
//点击了推出按钮
else if(arg0.getSource() == c){
//游戏推出,窗口消失
System.exit(0);
}
}
public void changetoFalse(){
flag = false;
}
public void changetoTrue(){
flag = true;
}
//线程挂起
public synchronized void hangThread() throws InterruptedException
{
st.wait();
}
//线程恢复
public synchronized void resumeThread()
{
Thread.currentThread().notifyAll();
}
}
//内部类
class ItemMonitor implements ItemListener {
@Override
public void itemStateChanged(ItemEvent arg0) {
///// TODO Auto-generated method stub
int id = arg0.getID();
System.out.println("id"+id);
}
}
//内部类
class ItemActionMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int id = e.getID();
init.InitGameArea(++id);
}
}
}
//内部类
/***
class TextfieldMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
TextField str = (TextField)e.getSource();
String s = str.getText();
int m = Integer.parseInt(s);
map = init.InitGameArea(m);
map = new Map(m);
rep