java迷宫线程问题
你需要建立一个2-D迷宫,这个迷宫是有格子构成的,200列*100行。这个数组是用null字符预定义的(如果不行的话,0也可以)。可以选在在左边(第0列)任意一行开始一个新的路径,并且这条路径可以在右边任意一行结束(第199列)。对于起点任何合法的列数可以被选择,同样对于终点任何合法的列数可以被选择。路径在最多10个格子处就必须拐弯,在路径里必须要有支路,要求必须有至少5个二叉路和3个三岔路。这些支路都是不同的thread(必须要用thread来构造支路)。这些支路含有同样的行为但是独立的运行。所有路径不能交叉和重复。在交叉路口必须至少有1个格子的间隔。程序必须用applet实现。 package zmaze;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Point;
public class Radomnum extends Applet{
private byte paths[][]=new byte[100][200];
private int x;//横坐标
private int y;//纵坐标
public void init()
{
setSize(1005,505);
for(byte[]row:paths)
for(byte element:row)
element=0;
setVisible(true);
y=(int)(Math.random()*99+1);
x=0;
IsUsed(x,y);
new Path(0,y).run();
}
public void paint(Graphics g)
{
for(y =0;y<100;y++)
for( x=0;x<200;x++)
{
g.drawRect(x*5, y*5, 5, 5);
if(paths[y][x]==1)
g.fillRect(x, y, 5, 5);
}
}
public void IsUsed(int x,int y)//将该点添加进路径
{
paths[y][x]=1;
}
public boolean Pathed(int x,int y)//判断是否在路径中
{
if(paths[x][y]==1)
return true;
else return false;
}
public boolean IsUseful(int x,int y)//判断该点是否在数组中
{
if(x<0) return false;
if(x>199) return false;
if(y<0) return false;
if(y>100) return false;
return true;
}
public boolean IsNextUseful(int x,int y,int direction)//判断下一个位置是否有效
{ //0:left 1:up 2:right 3:down
switch( direction)
{
case 0:
if(!IsUseful(x-1,y)) return false;
if(!(!Pathed(x-2,y)&&!Pathed(x-1,y+1)&&!Pathed(x-1,y-1)))
return false;
return true;
case 1:
if(!IsUseful(x,y-1)) return false;
if(!(!Pathed(x-1,y-1)&&!Pathed(x+1,y-1)&&!Pathed(x,y-2)))
return false;
return true;
case 2:
if(!IsUseful(x+1,y)) return false;
if(!(!Pathed(x+2,y)&&!Pathed(x+1,y-1)&&!Pathed(x+1,y+1)))
return false;
return true;
case 3:
if(!IsUseful(x,y+1)) return false;
if(!(!Pathed(x,y+2)&&!Pathed(x-1,y+1)&&!Pathed(x+1,y+1)))
return false;
return true;
}
return false;
}
class Path extends Thread
{
private int x,y;
public Path(int x,int y)
{
this.x=x;
this.y=y;
}
public void run()
{
if(x==0)//起点
IsUsed(x,y);
else//其他点
{
}
}
}
}
那部分线程开始的那块就不明白了