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

📄 cartest01.java

📁 基于JXTA的P2P交通仿真程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	    		  					flag4=false;
	    		  			}
	    		  		}
	    		  		if (flag1&&flag2&&flag3&&flag4)
	    		  			Dece1=true;
		    		  		if(Dece1)
		    		  		{
		    		  			RunState=ChangeLeft; 
		    		  		 	//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;
	    	    				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(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;
	    	    			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=350;pe<=390;pe++){        //判断右转方向是否有车
	    		  					if(Road.s[pe][275]==0)           //yCenter+LaneWidth*5/4
	    	    						RightWait=false;
	    		  					else
	    		  						RightWait=true;
	    	    				} 
								if(RightWait)
									//RunState=StopWait;
									y=yCenter+40;
								else	
	    	    	 				RunState=TurnRight;  
								                   
								    Road.s[x][y]=0;
								    y=290; 
			    				    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=y-290;			
	    	     				}
	    	     				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==355)              //左面车道
    	    {
    	    	LeftLane=0;// left 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;
	    	    			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[355][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
	    		  				{           			
	    	    					Dece=true;
	    	    					penew=pe;
	    	    					//System.out.println("There is a 1car1, x = "+x+"y ="+y+"pe ="+pe); 
	    	    				} 
	    	    			}
		    		  		for(int pe=y-40;pe<=(y-10);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-40;pe<=(y+75);pe++)	//判断右面车道是否有车
		    		  			{       
		    		  				if(Road.s[375][pe]==1)			//这种判断方法是否有效,还需要详细考虑??
		    		  				{           			
		    	    				 flag2=false; 
		    	    				} 
		    	    			}
		    		  		for (int pe=y-24;pe<y;pe++)
		    		  		{
		    		  			for (int m=356;m<376;m++)
		    		  			{
		    		  				if (Road.s[m][pe]==1)
		    		  					flag3=false;
		    		  			}
		    		  		}
		    		  		for (int pe=y+1;pe<y+45;pe++)
		    		  		{
		    		  			for (int m=356;m<376;m++)
		    		  			{
		    		  				if (Road.s[m][pe]==1)
		    		  					flag4=false;
		    		  			}
		    		  		}
		    		  		if (flag1&&flag2&&flag3&&flag4)
		    		  			Dece1=true;
		    				
		    		  		if(Dece1)
		    		  		{
		    		  			RunState=ChangeRight; 
		    		  		 	System.out.println("ChangeRight"+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;
			    				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(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;
	    	    			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[5]==2)				  //??加入相应的信号灯相位??
	    	     					//RunState=StopWait;							  //如果是红灯就停车等待
	    	    	 				y=yCenter+40;
	    	     				else
	    	     					RunState=TurnLeft;   
	    	     				
	    	     					Road.s[x][y]=0;
	    	     					y=290;
	    	     					Road.s[x][y]=1;						//左转
	    	     			//	}
	    	     		/*	else if(IsGoStrait){									//是否直行
	    	     				if(Road.lightstatus[2]==2)					//如果是红灯就停车等待
	    	     				{
	    	     					v=y-290;
			    	    			//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; 
	}//FromSouth结束
    	case FromNorth:
	 	{                      
    		if((y>=100)&&(y<200-MaxV))              //判断车辆到达区域
    		  	Area=1;
    	    else if((y>=200-MaxV)&&(y<=200))         //外围区
    	    	Area=2;
    	    else if((y>200)&&(y<290))           //核心区
    	    	Area=3;
    	    else if(y<=75) //进入区
    	    	Area=4;
    	    else if(y>=455)  //驶出区
    	    	Area=5;
    	    else 
    	    	Area=0;
	    	
    	    peold=penew;	
	          
    	    if (x==315)              //左面车道
    	    {
    	    	LeftLane=0;// left lane
	    	    switch(Area){
		    	    case 4:                 //进入
		    	    {
    		  			Dece=false;
    		  			v=MaxV;
		    	    	for(int pe=y+1;pe<=y+20;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<=490-v)
	    				{
		    				y=y+v;
		    				Road.s[x][y]=1;
	    				}
	    				else
	    				{
	    					y=1;
    		  				Road.s[x][y]=1;
	    				}

⌨️ 快捷键说明

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