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

📄 cartest01.java

📁 基于JXTA的P2P交通仿真程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		    	    			Road.s[x][y]=0;
		    	    			x=x-v; 	//跟驰行驶逻辑结束
		    	    			Road.s[x][y]=1;
	    	    				
				    	    	if(v>0)
				    	    	{
				    	    		IsGoStrait=true;
				    	    		//LeftLane=false;
				    	    		//LeftLane=1;
				    	    	}
				    	    	break;
	    	   				}//Area1结束
		    	    	case 2:{                         //进入路口核心区 
		    	    		
		    	    		/*if(Math.random()<0.6){
		    	    			IsTurnRight=true;
		    	    			IsGoStrait=false;
		    	    		}
		    	    		else{
		    	    			IsTurnRight=false;
		    	    			IsGoStrait=true;
		    	    		}*/
		    	     				if(IsTurnRight){							        //是否右转
		    	     				for(int pe=210;pe<=250;pe++){        //判断右转方向是否有车
		    		  					if(Road.s[375][pe]==0)           //yCenter+LaneWidth*5/4
		    	    						RightWait=false;
		    		  					else
		    		  						RightWait=true;
		    	    				} 
									if(RightWait){
										//RunState=StopWait;
										x=xCenter+40;
										System.out.println("Right Wait");
									}
									else	
		    	    	 				RunState=TurnRight;               //右转不用判断红绿灯,但要判断右转路上是否有车
									
									Road.s[x][y]=0;
									x=390;
			    				    Road.s[x][y]=1;
		    	    	 			}
		    	     		/*	else if(IsTurnLeft){									//是否左转
		    	    	 			if(Road.lightstatus[4]==2)				  //??加入相应的信号灯相位??
		    	     					//RunState=StopWait;							  //如果是红灯就停车等待
		    	    	 				x=xCenter+40;
		    	     				else
		    	     					RunState=TurnLeft;                //左转
		    	     				}*/
		    	     			else if(IsGoStrait){									//是否直行
		    	     				if(Road.lightstatus[0]==2)					//如果是红灯就停车等待
		    	     				{
		    	     					v=x-390;
		    	     					
		    	     				}
		    	     				else
		    	     				{
		    	     					v=5;                              //匀速通过路口,是否移至具体的函数中???
		    	     				}
		    	       				Road.s[x][y]=0;
			    				    x=x-v;
			    				    Road.s[x][y]=1;
		    	     				}
		
		    	     			break;    
		    	     	}//Area2区结束
		    	    	case 3:{                         //进入路口核心区 
			    	   		//System.out.println("Center  x = "+x);
			    	     		v=5;                              //匀速通过路口,是否移至具体的函数中???
			    	     		Road.s[x][y]=0;
				    			x=x-v;
				    			Road.s[x][y]=1;
			    	     	break;    
		    	    		}//Area3区结束
		    	    	}//switch Area 
		    	  
	    	    	}//end if 上面车道
	    	    
	    	    else if (y==235)              //下面车道
	    	    {
	    	    	LeftLane=0;// left lane
		    	    switch(Area){
			    	    case 4:
			    	    {
	    		  			Dece=false;
	    		  			v=MaxV;
			    	    	for(int pe=x-20;pe<x;pe++)	//判断前方是否有车
	    		  			{       
	    		  				if(Road.s[pe][y]==1)			//这种判断方法是否有效,还需要详细考虑??
	    		  				{           			
	    		  					//System.out.println("pe"+pe);
	    		  					Dece=true;
	    	    				} 
	    	    			}
	    		  			if (!Dece)
	    		  			{
	    		  				Road.s[x][y]=0;
	    		  				//System.out.println("x"+x);
	    		  				x=x-5;
	    		  				Road.s[x][y]=1;
	    		  			}
	    		  			break;
			    	    }
			    	    case 5:
			    	    {
	    		  			v=MaxV;
		    				Road.s[x][y]=0;  				  //向西行驶	
		    				if (x>=v)
		    				{
		    					x=x-v; 
		    					Road.s[x][y]=1;
		    				}
		    				else
		    				{
		    					x=690;
	    		  				Road.s[x][y]=1;
		    				}
		    				break;
			    	    }
		    	    	case 0:{
		    	    			Dece=false;
		    	    			Dece1=false;
		    	    			peold=x;
		    	    			penew=x;
		    	    			boolean flag1=false;
		    	    			boolean flag2=true;
		    	    			boolean flag3=true;
		    	    			boolean flag4=true;					//四个标志决定是否换道
		    		  			for(int pe=x-40;pe<x;pe++)	//判断前方是否有车
		    		  			{       
		    		  				if(Road.s[pe][235]==1)			//这种判断方法是否有效,还需要详细考虑??
		    		  				{           			
		    	    					Dece=true;
		    	    					penew=pe;
		    	    					//System.out.println("There is a 1car1, x = "+x+"y ="+y+"pe ="+pe); 
		    	    				} 
		    	    			}
			    		  		for(int pe=x-40;pe<=(x-10);pe++)	//判断前方10-40是否有车
		    		  			{       
		    		  				if(Road.s[pe][235]==1)			
		    		  				{           			
		    	    					flag1=true;
		    	    					//System.out.println("There is a car1, x = "+x+"y ="+y+"pe ="+pe); 
		    	    				} 
		    	    			}  		
			    		  		for(int pe=x-40;pe<=(x+75);pe++)	//判断上面车道是否有车
			    		  			{       
			    		  				if(Road.s[pe][215]==1)			//这种判断方法是否有效,还需要详细考虑??
			    		  				{           			
			    	    				 flag2=false; 
			    	    				} 
			    	    			}
			    		  		for (int pe=x-24;pe<x;pe++)
			    		  		{
			    		  			for (int m=215;m<235;m++)
			    		  			{
			    		  				if (Road.s[pe][m]==1)
			    		  					flag3=false;
			    		  			}
			    		  		}
			    		  		for (int pe=x+1;pe<x+45;pe++)
			    		  		{
			    		  			for (int m=215;m<235;m++)
			    		  			{
			    		  				if (Road.s[pe][m]==1)
			    		  					flag4=false;
			    		  			}
			    		  		}
			    		  		if (flag1&&flag2&&flag3&&flag4)
			    		  			Dece1=true;
			    				
			    		  		if(Dece1)
			    		  		{
			    		  			RunState=ChangeRight; 
			    		  		 	//System.out.println("ChangeLeft"+RunState);
			    		  		}
			    		  		else if (Dece)
			    		  		{
		    	    				if(peold-penew<=15)
		    	    					v=0;
		    	    				else if((peold-penew>15)&&(peold-penew<=20))
		    	    					v=1;
		    	    				else if((peold-penew>20)&&(peold-penew<=30))
		    	    					v=3;
		    	    				else if((peold-penew>30)&&(peold-penew<=35))
		    	    					v=MaxV-2;
		    	    				else if(peold-penew>35)
		    	    					v=MaxV-1;
				    				Road.s[x][y]=0;
				    				x=x-v;                            //向西行驶	
				    				Road.s[x][y]=1;
			    		  		}
			    		  		else
			    		  		{
			    		  			v=MaxV;
				    				Road.s[x][y]=0;
				    				x=x-v;                            //向西行驶	
				    				Road.s[x][y]=1;
			    		  		}
			    		  		break;
		    	    		}
		    	    	case 1:{                         //进入路口外围区
	    	    				Dece=false;
	    	    				penew=x;
	    	    				peold=x;
		    		  			for(int pe=x-40;pe<x;pe++){       //判断前方是否有车
		    		  				if(Road.s[pe][235]==1){           			//这种判断方法是否有效,还需要详细考虑??
		    	    					Dece=true;
		    	    					penew=pe;
		    	    				} 
		    	    			}
		    	    			if(Dece){
		    	    				if(peold-penew<=15)
		    	    					v=0;
		    	    				else if((peold-penew>15)&&(peold-penew<=20))
		    	    					v=1;
		    	    				else if((peold-penew>20)&&(peold-penew<=30))
		    	    					v=3;
		    	    				else if((peold-penew>30)&&(peold-penew<=35))
		    	    					v=MaxV-2;
		    	    				else if(peold-penew>35)
		    	    					v=MaxV-1;
		    	    			} 
		    	    			else if(!Dece)
		    	    			{
		    	    				v=MaxV;  
		    	    			}

		    	    			Road.s[x][y]=0;
		    	    			x=x-v; 	//跟驰行驶逻辑结束
		    	    			Road.s[x][y]=1;
	    	    				
				    	    	if(v>0)
				    	    	{
				    	    		IsGoStrait=true;
				    	    		//LeftLane=false;
				    	    		//LeftLane=1;
				    	    	}
				    	    	break;
	    	   				}//Area1结束
		    	    	case 2:{                         //进入路口核心区 
		    	  /*   			if(IsTurnRight){							        //是否右转
		    	     				for(int pe=350;pe<=390;pe++){        //判断右转方向是否有车
		    		  					if(Road.s[pe][275]==1)           //yCenter+LaneWidth*5/4
		    	    						RightWait=true;
		    	    				} 
									if(RightWait)
										//RunState=StopWait;
										x=xCenter+40;
									else	
		    	    	 				RunState=TurnRight;               //右转不用判断红绿灯,但要判断右转路上是否有车
		    	    	 			}*/
		    	     		//	if(IsTurnLeft){		//是否左转
		    	     				if(Road.lightstatus[4]==2){				  //??加入相应的信号灯相位??
		    	     					//RunState=StopWait;							  //如果是红灯就停车等待
		    	     					Road.s[x][y]=0;
			    	     				x=390;
			    	     				Road.s[x][y]=1;
		    	     				}
		    	     				else{
		    	     					RunState=TurnLeft;   //左转
		    	     				
		    	     				Road.s[x][y]=0;
		    	     				x=390;
		    	     				Road.s[x][y]=1;
		    	     				}
		    	     	//			}else
		    	     	/*		if(IsGoStrait){									//是否直行
		    	     				if(Road.lightstatus[0]==2)					//如果是红灯就停车等待
		    	     				{
		    	     					v=x-390;
				    	    			//System.out.println("x"+x);
		    	     				}
		    	     				else
		    	     				{
		    	     					v=3;                              //匀速通过路口,是否移至具体的函数中???
		    	     				}
		    	     					//RunState=GoAhead;                 //直行状态 
		    	     				Road.s[x][y]=0;
		    	     				x=x-v;
		    	     				Road.s[x][y]=1;
		    	     				}*/
		
		    	     			break;    
		    	     	}//Area2区结束
		    	    	case 3:{                         //进入路口核心区 
			    	   		//System.out.println("Center  x = "+x);
			    	     		v=5;                              //匀速通过路口,是否移至具体的函数中???
			    	     		Road.s[x][y]=0;
				    			x=x-v;
				    			Road.s[x][y]=1;
			    	     	break;    
		    	    		}//Area3区结束
		    	    	}//switch Area 
		    	  
	    	    	} //end if 下面车道
	    	    
	    	    break; 
    	}//FromEast结束
    	
    	case FromSouth:
    	{                      
    		if((y>yCenter+40+MaxV)&&(y<=yCenter+140))              //判断车辆到达区域
    		  	Area=1;
    	    else if((y>=yCenter+40)&&(y<=yCenter+40+MaxV))         //外围区
    	    	Area=2;
    	    else if((y>yCenter-40)&&(y<yCenter+40))           //核心区
    	    	Area=3;
    	    else if(y>=425)  //进入区
    	    	Area=4;
    	    else if(y<=45)   //驶出区
    	    	Area=5;
    	    else 
    	    	Area=0;
	    	
    	    peold=penew;	
	          
    	    if (x==375)              //右面车道
    	    {
    	    	LeftLane=1;// right lane
	    	    switch(Area){
		    	    case 4:
		    	    {
    		  			Dece=false;
    		  			v=MaxV;
		    	    	for(int pe=y-20;pe<y;pe++)	//判断前方是否有车
    		  			{       
    		  				if(Road.s[x][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
    		  				{           			
    		  					Dece=true;
    	    				} 
    	    			}
    		  			if (!Dece)
    		  			{
    		  				Road.s[x][y]=0;
    		  				y=y-MaxV;
    		  				Road.s[x][y]=1;
    		  			}
    		  			break;
		    	    }
		    	    case 5:
		    	    {
    		  			v=MaxV;
	    				Road.s[x][y]=0; //向西行驶	
	    				if (y>=v)
	    				{
		    				y=y-v;
		    				Road.s[x][y]=1;
	    				}
	    				else
	    				{
	    					y=490;
    		  				Road.s[x][y]=1;
	    				}
	    				break;
		    	    }
	    	    	case 0:{
	    	    			Dece=false;
	    	    			Dece1=false;
	    	    			boolean flag1=false;
	    	    			boolean flag2=true;
	    	    			boolean flag3=true;
	    	    			boolean flag4=true;
    	    				peold=y;
    	    				penew=y;
		    		  		for(int pe=y-40;pe<y;pe++)	//判断前方是否有车
		    		  			{       
		    		  				if(Road.s[x][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
		    		  				{           			
		    	    					Dece=true;
		    	    					penew=pe;
		    	    					//System.out.println("There is a car1, x = "+x+"y ="+y+"pe ="+pe); 
		    	    				} 
		    	    			}
		    		  		for(int pe=y-40;pe<=(y-15);pe++)	//判断前方15-40是否有车
	    		  			{       
	    		  				if(Road.s[x][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
	    		  				{           			
	    	    					flag1=true;
	    	    					//System.out.println("There is a car1, x = "+x+"y ="+y+"pe ="+pe); 
	    	    				} 
	    	    			}  		
		    		  		for(int pe=y-40;pe<=(y+75);pe++)	//判断左面车道是否有车
	    		  			{       
	    		  				if(Road.s[355][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
	    		  				{           			
	    	    				 flag2=false; 
	    	    				} 
	    	    			}
	    		  		for (int pe=y-24;pe<y;pe++)
	    		  		{
	    		  			for (int m=355;m<375;m++)
	    		  			{
	    		  				if (Road.s[m][pe]==1)
	    		  					flag3=false;
	    		  			}
	    		  		}
	    		  		for (int pe=y+1;pe<y+45;pe++)
	    		  		{
	    		  			for (int m=355;m<375;m++)
	    		  			{
	    		  				if (Road.s[m][pe]==1)

⌨️ 快捷键说明

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