| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 785 人关注过本帖
标题:java迷宫线程问题
只看楼主 加入收藏
lqqnjust
Rank: 1
来 自:江苏南通
等 级:新手上路
帖 子:52
专家分:0
注 册:2008-7-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:1 
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//其他点
                {
                    
                }
            }
        }
        
}
那部分线程开始的那块就不明白了
搜索更多相关主题的帖子: 线程 迷宫 java 
2009-07-17 21:51
ET_bug
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:黑侠
帖 子:89
专家分:602
注 册:2009-7-21
收藏
得分:7 
你的问题是什么呀?说清楚呀!

编程之路无止境!
可是小子才入门!
2009-07-23 00:02
快速回复:java迷宫线程问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027030 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved