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

📄 cartest01.java

📁 基于JXTA的P2P交通仿真程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	    				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+15;pe<=(y+40);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-75;pe<=(y+40);pe++)	//判断上面车道是否有车
	    		  			{       
	    		  				if(Road.s[335][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
	    		  				{           			
	    	    				 flag2=false; 
	    	    				} 
	    	    			}
	    		  		for (int pe=y+1;pe<y+25;pe++)
	    		  		{
	    		  			for (int m=316;m<336;m++)
	    		  			{
	    		  				if (Road.s[m][pe]==1)
	    		  					flag3=false;
	    		  			}
	    		  		}
	    		  		for (int pe=y-45;pe<y;pe++)
	    		  		{
	    		  			for (int m=316;m<336;m++)
	    		  			{
	    		  				if (Road.s[m][pe]==1)
	    		  					flag4=false;
	    		  			}
	    		  		}
	    		  		if (flag1&&flag2&&flag3&&flag4)
	    		  			Dece1=true;
		    		  		if(Dece1)
		    		  		{
		    		  			RunState=ChangeLeft; 
		    		  		 	//System.out.println("ChangeLeft"+RunState);
		    		  		}
		    		  		else if (Dece)
		    		  		{
	    	    				if(penew-peold<=15)
	    	    					v=0;
	    	    				else if((penew-peold>15)&&(penew-peold<=20))
	    	    					v=1;
	    	    				else if((penew-peold>20)&&(penew-peold<=30))
	    	    					v=3;
	    	    				else if((penew-peold>30)&&(penew-peold<=35))
	    	    					v=MaxV-2;
	    	    				else if(penew-peold>35)
	    	    					v=MaxV-1;
	    	    				Road.s[x][y]=0;
	    	    				y=y+v; 	//跟驰行驶逻辑结束
	    	    				Road.s[x][y]=1;
		    		  		}
		    		  		else
		    		  		{
		    		  			v=MaxV;
			    				Road.s[x][y]=0;
			    				y=y+v;                            //向西行驶	
			    				Road.s[x][y]=1;
		    		  		}
		    		  		break;
	    	    		}
	    	    	case 1:{                         //进入路口外围区
    	    				Dece=false;
    	    				peold=y;
    	    				penew=y;
	    		  			for(int pe=y+40;pe>y;pe--){       //判断前方是否有车
	    		  				if(Road.s[x][pe]==1){           			//这种判断方法是否有效,还需要详细考虑??
	    	    					Dece=true;
	    	    					penew=pe;
	    	    				} 
	    	    			}
	    	    			if(Dece){
	    	    				if(penew-peold<=15)
	    	    					v=0;
	    	    				else if((penew-peold>15)&&(penew-peold<=20))
	    	    					v=1;
	    	    				else if((penew-peold>20)&&(penew-peold<=30))
	    	    					v=3;
	    	    				else if((penew-peold>30)&&(penew-peold<=35))
	    	    					v=MaxV-2;
	    	    				else if(penew-peold>35)
	    	    					v=MaxV-1;
	    	    			} 
	    	    			else if(!Dece)
	    	    				v=MaxV;  		
	    	    			Road.s[x][y]=0;
	    	    			y=y+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=310;pe<=350;pe++){        //判断右转方向是否有车
	    		  					if(Road.s[pe][215]==0)           //yCenter+LaneWidth*5/4
	    		  						RightWait=false;
	    		  					else
	    		  						RightWait=true;
	    	    				} 
								if(RightWait)
									//RunState=StopWait;
									y=yCenter-50;
								else	
	    	    	 				RunState=TurnRight;    
								                       
								    Road.s[x][y]=0;
								    y=200;
			    				    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[2]==2)					//如果是红灯就停车等待
	    	     				{
	    	     					v=200-y;
	    	     				}
	    	     				else
	    	     				{
	    	     					v=5;                              //匀速通过路口,是否移至具体的函数中???
	    	     				}
	    	       				Road.s[x][y]=0;
		    				    y=y+v;
		    				    Road.s[x][y]=1;
	    	     				}
	
	    	     			break;    
	    	     	}//Area2区结束
	    	    	case 3:{                         //进入路口核心区 
		    	   		//System.out.println("Center  x = "+x);
		    	     		v=5;                              //匀速通过路口,是否移至具体的函数中???
		    	     		Road.s[x][y]=0;
			    			y=y+v;
			    			Road.s[x][y]=1;
		    	     	break;    
	    	    		}//Area3区结束
	    	    	}//switch Area 
	    	  
    	    	}//end if 上面车道
    	    
    	    else if (x==335)              //右面车道
    	    {
    	    	LeftLane=1;// right lane
	    	    switch(Area){
		    	    case 4:
		    	    {
    		  			Dece=false;
    		  			v=MaxV;
		    	    	for(int pe=y+1;pe<=y+20;pe++)	//判断前方是否有车
    		  			{       
    		  				if(Road.s[x][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
    		  				{           			
    		  					//System.out.println("pe"+pe);
    		  					Dece=true;
    	    				} 
    	    			}
    		  			if (!Dece)
    		  			{
    		  				Road.s[x][y]=0;
    		  				//System.out.println("x"+x);
    		  				y=y+MaxV;
    		  				Road.s[x][y]=1;
    		  			}
    		  			break;
		    	    }
		    	    case 5:
		    	    {
    		  			v=MaxV;
	    				Road.s[x][y]=0;  				  //向西行驶	
	    				if (y<=490-v)
	    				{
	    					y=y+v; 
	    					Road.s[x][y]=1;
	    				}
	    				else
	    				{
	    					y=1;
    		  				Road.s[x][y]=1;
	    				}
	    				break;
		    	    }
	    	    	case 0:{
	    	    			Dece=false;
	    	    			Dece1=false;
	    	    			peold=y;
	    	    			penew=y;
	    	    			boolean flag1=false;
	    	    			boolean flag2=true;
	    	    			boolean flag3=true;
	    	    			boolean flag4=true;					//四个标志决定是否换道
	    		  			for(int pe=y+40;pe>y;pe--)	//判断前方是否有车
	    		  			{       
	    		  				if(Road.s[x][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
	    		  				{           			
	    	    					Dece=true;
	    	    					penew=pe;
	    	    					//System.out.println("There is a 1car1, x = "+x+"y ="+y+"pe ="+pe); 
	    	    				} 
	    	    			}
		    		  		for(int pe=y+10;pe<=(y+40);pe++)	//判断前方10-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-75;pe<=(y+40);pe++)	//判断上面车道是否有车
		    		  			{       
		    		  				if(Road.s[315][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
		    		  				{           			
		    	    				 flag2=false; 
		    	    				} 
		    	    			}
		    		  		for (int pe=y+1;pe<y+24;pe++)
		    		  		{
		    		  			for (int m=315;m<335;m++)
		    		  			{
		    		  				if (Road.s[m][pe]==1)
		    		  					flag3=false;
		    		  			}
		    		  		}
		    		  		for (int pe=y-45;pe<y;pe++)
		    		  		{
		    		  			for (int m=315;m<335;m++)
		    		  			{
		    		  				if (Road.s[m][pe]==1)
		    		  					flag4=false;
		    		  			}
		    		  		}
		    		  		if (flag1&&flag2&&flag3&&flag4)
		    		  			Dece1=true;
		    				
		    		  		if(Dece1)
		    		  		{
		    		  			RunState=ChangeRight; 
		    		  		 	//System.out.println("ChangeLeft"+RunState);
		    		  		}
		    		  		else if (Dece)
		    		  		{
	    	    				if(penew-peold<=15)
	    	    					v=0;
	    	    				else if((penew-peold>15)&&(penew-peold<=20))
	    	    					v=1;
	    	    				else if((penew-peold>20)&&(penew-peold<=30))
	    	    					v=3;
	    	    				else if((penew-peold>30)&&(penew-peold<=35))
	    	    					v=MaxV-2;
	    	    				else if(penew-peold>35)
	    	    					v=MaxV-1;
			    				Road.s[x][y]=0;
			    				y=y+v;                            //向西行驶	
			    				Road.s[x][y]=1;
		    		  		}
		    		  		else
		    		  		{
		    		  			v=MaxV;
			    				Road.s[x][y]=0;
			    				y=y+v;                            //向西行驶	
			    				Road.s[x][y]=1;
		    		  		}
		    		  		break;
	    	    		}
	    	    	case 1:{                         //进入路口外围区
    	    				Dece=false;
    	    				penew=y;
    	    				peold=y;
	    		  			for(int pe=y+40;pe>y;pe--){       //判断前方是否有车
	    		  				if(Road.s[x][pe]==1){           			//这种判断方法是否有效,还需要详细考虑??
	    	    					Dece=true;
	    	    					penew=pe;
	    	    				} 
	    	    			}
	    	    			if(Dece){
	    	    				if(penew-peold<=15)
	    	    					v=0;
	    	    				else if((penew-peold>15)&&(penew-peold<=20))
	    	    					v=1;
	    	    				else if((penew-peold>20)&&(penew-peold<=30))
	    	    					v=3;
	    	    				else if((penew-peold>30)&&(penew-peold<=35))
	    	    					v=MaxV-2;
	    	    				else if(penew-peold>35)
	    	    					v=MaxV-1;
	    	    			} 
	    	    			else if(!Dece)
	    	    			{
	    	    				v=MaxV;  
	    	    			}

	    	    			Road.s[x][y]=0;
	    	    			y=y+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[6]==2)				  //??加入相应的信号灯相位??
	    	     					//RunState=StopWait;							  //如果是红灯就停车等待
	    	    	 				y=yCenter-50;
	    	     				else
	    	     					RunState=TurnLeft;  //左转    
	    	     				
	    	     					Road.s[x][y]=0;
	    	     					y=200;
	    	     					Road.s[x][y]=1;
	    	     		//		}
	    	     		/*	else if(IsGoStrait){									//是否直行
	    	     				if(Road.lightstatus[2]==2)					//如果是红灯就停车等待
	    	     				{
	    	     					v=200-y;
			    	    			//System.out.println("x"+x);
	    	     				}
	    	     				else
	    	     				{
	    	     					v=3;                              //匀速通过路口,是否移至具体的函数中???
	    	     				}
	    	     					//RunState=GoAhead;                 //直行状态 
	    	     				Road.s[x][y]=0;
	    	     				y=y+v;
	    	     				Road.s[x][y]=1;
	    	     				}*/
	
	    	     			break;    
	    	     	}//Area2区结束
	    	    	case 3:{                         //进入路口核心区 
		    	   		//System.out.println("Center  x = "+x);
		    	     		v=5;                              //匀速通过路口,是否移至具体的函数中???
		    	     		Road.s[x][y]=0;
			    			y=y+v;
			    			Road.s[x][y]=1;
		    	     	break;    
	    	    		}//Area3区结束
	    	    	}//switch Area 
	    	  
    	    	} //end if 下面车道
    	    
    	    break; 
	}//FromNorth结束
    	case FromWest:
	 	{                      
    		if((x>=200)&&(x<300-MaxV))              //判断车辆到达区域
    		  	Area=1;

⌨️ 快捷键说明

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