⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roadgui.java

📁 基于JXTA的P2P交通仿真程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				else{
					g.clearRect(x-5,y-5,10,5);
					g.clearRect(x-5,y,5,5);
				}
				
				if((y==255)&&(x==375)){
					//g.clearRect(x+5,y-5,5,5);
					g.clearRect(x-5,y-5,10,5);
				}
				
				
				break;
			}
			else if (runstate==2)  //右转
			{
				g.setColor(clour);
				g.fillRect(x,y,10,10);
				for (m=1;m<v+1;m++)
				{   
				g.clearRect(x,y-m,10,m);
				}
				break;
			}
			else if (runstate==3)  //左换道
			{
			    g.setColor(clour);
				g.fillRect(x,y,10,10);
				if (y>10)
				{
				   if (x==315)
				   {
					   g.clearRect(x,y-5,10,5);
				   }
				   else if (x==327)
				   {
					   g.clearRect(x-2,y,2,10);
				   }
				   else
				   {
						g.clearRect(x-2,y-1,10,1);
						g.clearRect(x-2,y,2,9);
				   }
					
				}
				if (y>=490)
					g.clearRect(x,y,10,10);
				break;
			}
			else if (runstate==4)  //右换道
			{
			    g.setColor(clour);
				g.fillRect(x,y,10,10);
				if (y>10)
				{
					   if (x==335)
					   {
						   g.clearRect(x,y-5,10,5);
					   }
					   else if (x==323)
					   {
						   g.clearRect(x+10,y,2,10);
					   }
					   else
					   {
							g.clearRect(x+2,y-1,10,1);
							g.clearRect(x+10,y,2,9);
					   }
				}
				if (y>=490)
					g.clearRect(x,y,10,10);
				break;
			}
			else  //停车
			{
				break;
			}
			}//end case FromNorth
		}//end switch
	}
}


class roads
{
	int rdx,rdy; //十字路口的x、y坐标
	int halfwid=40;//路宽的一半 
	int mleft=10,mright,mup=10,mdown; 
	int roadwidth=700,roadheight=500;
	int s[][]=new int[700][500]; //整个区域的一个映射数组;
	private SimpleJxtaApp myAgent;
	Dimension roadSize; 
	Color c;
	roads(SimpleJxtaApp a) //路类的构造函数:每个全区域映射数组代表一个点,为1表示有车在上面,为0表示没有; 
	{
		this.myAgent=a;
		this.s=myAgent.s;
	} 

	public void show(Graphics g) { 
		    Graphics2D g2 = (Graphics2D) g;		
			//System.out.println(" height1 = "+roadwidth);
			//System.out.println(" height2 = "+roadheight);
		    
			rdx=roadwidth / 2;
			rdy=roadheight / 2;
			mright=roadwidth - 10;
			mdown=roadheight - 10;
		    g2.setColor(Color.pink); //十字路口中心的中心线; 
			g2.fillRoundRect(10,rdy-2,rdx-halfwid-10,4,5,5); 
			g2.fillRoundRect(rdx+halfwid,rdy-2,rdx-55,4,5,5); 
			g2.fillRoundRect(rdx-2,10,4,rdy-55,5,5); 
			g2.fillRoundRect(rdx-2,rdy+40,4,rdy-55,5,5); 
			//g2.setColor(Color.magenta); //十字路口中心的交警指挥台; 
			//g2.fillOval(rdx-8,rdy-8,16,16); 
		    g2.setColor(Color.gray); //道路边界; 
		    g2.drawLine(mleft,rdy-halfwid,rdx-halfwid,rdy-halfwid); 
		    g2.drawLine(mleft,rdy+halfwid,rdx-halfwid,rdy+halfwid); 
		    g2.drawLine(rdx-halfwid,rdy-halfwid,rdx-halfwid,mup); 
		    g2.drawLine(rdx-halfwid,rdy+halfwid,rdx-halfwid,mdown); 
		    g2.drawLine(rdx+halfwid,mup,rdx+halfwid,rdy-halfwid);  
		    g2.drawLine(rdx+halfwid,rdy+halfwid,rdx+halfwid,mdown);
		    g2.drawLine(rdx+halfwid,rdy+halfwid,mright,rdy+halfwid);  
		    g2.drawLine(rdx+halfwid,rdy-halfwid,mright,rdy-halfwid);
	  }
}

class signalroads extends JApplet {
	private SimpleJxtaApp myAgent;
	int roadwidth=700,roadheight=500;
	Dimension roadSize; 
	Light light1;
	Light light2;
	Light light3;
	Light light4;
	Light light5;
	Light light6;
	Light light7;
	Light light8;

	signalroads(SimpleJxtaApp a) //路类的构造函数:每个全区域映射数组代表一个点,为1表示有车在上面,为0表示没有; 
	{
		this.myAgent=a;
	} 
	public void start()
	{
		Graphics g=getGraphics(); 
		light1 = new Light(g,0,0,roadheight,roadwidth,myAgent);
		light1.start();
		light2 = new Light(g,1,0,roadheight,roadwidth,myAgent);
		light2.start();
		light3 = new Light(g,2,0,roadheight,roadwidth,myAgent);
		light3.start();
		light4 = new Light(g,3,0,roadheight,roadwidth,myAgent);
		light4.start();
		light5 = new Light(g,4,0,roadheight,roadwidth,myAgent);
		light5.start();
		light6 = new Light(g,5,0,roadheight,roadwidth,myAgent);
		light6.start();
		light7 = new Light(g,6,0,roadheight,roadwidth,myAgent);
		light7.start();
		light8 = new Light(g,7,0,roadheight,roadwidth,myAgent);
		light8.start();
		
		roads r=new roads(myAgent);
		/*r.s[60][275]=1;
		r.s[10][255]=1;
		r.s[100][235]=1;
		r.s[315][89]=1;
		r.s[315][119]=1;
		r.s[310][255]=1;*/
	}
	public void paint(Graphics g) 
		{ 
		roads r=new roads(myAgent);
		r.show(g); 
		//System.out.println(" Gui show");
		} 

}


class Light extends Thread
{
	Graphics g; //数据成员;
	private SimpleJxtaApp myAgent;
	int x,y; 
	int roadwidth,roadheight;
	Light(Graphics g,int x,int y,int roadheight,int roadwidth,SimpleJxtaApp a) //灯类的constructor; 
	{ 
	this.g=g; 
	this.x=x; 
	this.y=y; 
	this.roadheight=roadheight;
	this.roadwidth=roadwidth;
	this.myAgent=a;
	} 

	public void run() 
	{ 
		while(true) 
		{ 
            paint(g,x,myAgent.lightstatus[x]);
			try 
			{ 
			this.sleep(500); 
			} 
			catch(InterruptedException e) 
			{} 
		} 
	} 
	
	public void paint(Graphics g, int x,int y) //四组灯,x 灯组号,y 灯状态
	{ 
		switch (x)
		{
		case 0:  //西直行
			if (y==0)
			{
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2-85,roadheight/2-75,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-70,roadheight/2-75,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2-75,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-85,roadheight/2-75,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2-70,roadheight/2-75,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2-75,13,13);
			}
			else
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-85,roadheight/2-75,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-70,roadheight/2-75,13,13); 
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2-55,roadheight/2-75,13,13);
			}
			break;
		case 1: //北直行
			if (y==0)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+65,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+65,roadheight/2-70,13,13); 
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2+65,roadheight/2-85,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+65,roadheight/2-55,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2+65,roadheight/2-70,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+65,roadheight/2-85,13,13);
			}
			else
			{
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2+65,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+65,roadheight/2-70,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+65,roadheight/2-85,13,13);
			}
			break;
		case 2: //南直行
			if (y==0)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-75,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-75,roadheight/2+60,13,13); 
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2-75,roadheight/2+75,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-75,roadheight/2+45,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2-75,roadheight/2+60,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-75,roadheight/2+75,13,13);
			}
			else
			{
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2-75,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-75,roadheight/2+60,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-75,roadheight/2+75,13,13);
			}
			break;
		case 3: //东直行
			if (y==0)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2+65,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+60,roadheight/2+65,13,13); 
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2+75,roadheight/2+65,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2+65,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2+60,roadheight/2+65,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+75,roadheight/2+65,13,13);
			}
			else
			{
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2+45,roadheight/2+65,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+60,roadheight/2+65,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+75,roadheight/2+65,13,13);
			}
			break;
		case 4:  //西左转
			if (y==0)
			{
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2-85,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-70,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2-55,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-85,roadheight/2-55,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2-70,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2-55,13,13);
			}
			else
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-85,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-70,roadheight/2-55,13,13); 
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2-55,roadheight/2-55,13,13);
			}
			break;
		case 5: //北左转
			if (y==0)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2-70,13,13); 
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2+45,roadheight/2-85,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2-55,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2+45,roadheight/2-70,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2-85,13,13);
			}
			else
			{
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2+45,roadheight/2-55,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2-70,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2-85,13,13);
			}
			break;
		case 6: //南左转
			if (y==0)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2+60,13,13); 
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2-55,roadheight/2+75,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2+45,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2-55,roadheight/2+60,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2+75,13,13);
			}
			else
			{
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2-55,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2+60,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2-55,roadheight/2+75,13,13);
			}
			break;
		case 7: //东左转
			if (y==0)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+60,roadheight/2+45,13,13); 
				g.setColor(Color.green); 
				g.fillOval(roadwidth/2+75,roadheight/2+45,13,13);
			}
			else if (y==1)
			{
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+45,roadheight/2+45,13,13); 
				g.setColor(Color.yellow); 
				g.fillOval(roadwidth/2+60,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+75,roadheight/2+45,13,13);
			}
			else
			{
				g.setColor(Color.red); 
				g.fillOval(roadwidth/2+45,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+60,roadheight/2+45,13,13); 
				g.setColor(Color.lightGray); 
				g.fillOval(roadwidth/2+75,roadheight/2+45,13,13);
			}
			break;
	}
	} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -