📄 road.cpp
字号:
WestCarLane2Temp1->x=-60;
WestCarLane2Temp1->y=-3*m_WestLaneWidth/2;
WestCarLane2Temp1->direction=2;
WestCarLane2Temp1->m_RoadID=2;
}
}
}
}
}
void CRoad::SouthGenerateCar()
{
static CCar* SouthCarLane1Temp1=NULL;
static CCar* SouthCarLane1Temp2=NULL;
static CCar* SouthCarLane2Temp1=NULL;
static CCar* SouthCarLane2Temp2=NULL;
float n1=(float)rand()/32768;
/////////////////////西向道路产生车流/////////////////////////
if(m_SouthLaneNumber==4) //为双向四车道,有两个方向产生车流
{
float n2=(float)rand()/32768;
if(n1>0.99)
{
//第一个车道产生车,同时产生左转车辆;车道坐标点(m_SouthLaneWidth/2,-60);
if(ptrToSouthLane1==NULL)
{
ptrToSouthLane1=new CCar;
ptrToSouthLane1->x=m_SouthLaneWidth/2;
ptrToSouthLane1->y=-60;
ptrToSouthLane1->direction=3;
ptrToSouthLane1->m_RoadID=3;
ptrToSouthLane1->ptrToBefore=NULL;
ptrToSouthLane1->ptrToNext=NULL;
SouthCarLane1Temp1=ptrToSouthLane1;
SouthCarLane1Temp2=ptrToSouthLane1;
}
else
{
if(n2>0.4&&SouthCarLane1Temp1->y>(-60+SouthCarLane1Temp1->m_CarLenth*2))
{
SouthCarLane1Temp1->ptrToNext=new CCar;
SouthCarLane1Temp1=SouthCarLane1Temp1->ptrToNext;
SouthCarLane1Temp1->ptrToBefore=SouthCarLane1Temp2;
SouthCarLane1Temp1->ptrToNext=NULL;
SouthCarLane1Temp2=SouthCarLane1Temp1;
SouthCarLane1Temp1->x=m_SouthLaneWidth/2;
SouthCarLane1Temp1->y=-60;
SouthCarLane1Temp1->direction=3;
SouthCarLane1Temp1->m_RoadID=3;
SouthCarLane1Temp1->b_TurnLeft=TRUE; //产生左转车辆;
}
if(n2<0.4&&SouthCarLane1Temp1->y>(-60+SouthCarLane1Temp1->m_CarLenth*2))
{
SouthCarLane1Temp1->ptrToNext=new CCar;
SouthCarLane1Temp1=SouthCarLane1Temp1->ptrToNext;
SouthCarLane1Temp1->ptrToBefore=SouthCarLane1Temp2;
SouthCarLane1Temp1->ptrToNext=NULL;
SouthCarLane1Temp2=SouthCarLane1Temp1;
SouthCarLane1Temp1->x=m_SouthLaneWidth/2;
SouthCarLane1Temp1->y=-60;
SouthCarLane1Temp1->direction=3;
SouthCarLane1Temp1->m_RoadID=3;
//产生非左转车辆;
}
}
}
if(n1<0.01)
{
//第二个车道产生车,同时产生右转车辆;车道坐标点(3*m_SouthLaneWidth/2,-60);
if(ptrToSouthLane2==NULL)
{
ptrToSouthLane2=new CCar;
ptrToSouthLane2->x=3*m_SouthLaneWidth/2;
ptrToSouthLane2->y=-60;
ptrToSouthLane2->direction=3;
ptrToSouthLane2->m_RoadID=3;
ptrToSouthLane2->ptrToBefore=NULL;
ptrToSouthLane2->ptrToNext=NULL;
SouthCarLane2Temp1=ptrToSouthLane2;
SouthCarLane2Temp2=ptrToSouthLane2;
}
else
{
if(n2<0.4&&SouthCarLane2Temp1->y>(-60+SouthCarLane2Temp1->m_CarLenth*2))
{
SouthCarLane2Temp1->ptrToNext=new CCar;
SouthCarLane2Temp1=SouthCarLane2Temp1->ptrToNext;
SouthCarLane2Temp1->ptrToBefore=SouthCarLane2Temp2;
SouthCarLane2Temp1->ptrToNext=NULL;
SouthCarLane2Temp2=SouthCarLane2Temp1;
SouthCarLane2Temp1->x=3*m_SouthLaneWidth/2;
SouthCarLane2Temp1->y=-60;
SouthCarLane2Temp1->direction=3;
SouthCarLane2Temp1->m_RoadID=3;
SouthCarLane2Temp1->b_TurnRight=TRUE;
}
if(n2>0.4&&SouthCarLane2Temp1->y>(-60+SouthCarLane2Temp1->m_CarLenth*2))
{
SouthCarLane2Temp1->ptrToNext=new CCar;
SouthCarLane2Temp1=SouthCarLane2Temp1->ptrToNext;
SouthCarLane2Temp1->ptrToBefore=SouthCarLane2Temp2;
SouthCarLane2Temp1->ptrToNext=NULL;
SouthCarLane2Temp2=SouthCarLane2Temp1;
SouthCarLane2Temp1->x=3*m_SouthLaneWidth/2;
SouthCarLane2Temp1->y=-60;
SouthCarLane2Temp1->direction=3;
SouthCarLane2Temp1->m_RoadID=3;
SouthCarLane2Temp1->b_TurnRight=TRUE;
}
}
}
}
}
void CRoad::NorthGenerateCar()
{
static CCar* NorthCarLane1Temp1=NULL;
static CCar* NorthCarLane1Temp2=NULL;
static CCar* NorthCarLane2Temp1=NULL;
static CCar* NorthCarLane2Temp2=NULL;
float n1=(float)rand()/32768;
/////////////////////西向道路产生车流/////////////////////////
if(m_NorthLaneNumber==4) //为双向四车道,有两个方向产生车流
{
float n2=(float)rand()/32768;
if(n1>0.99)
{
//第一个车道产生车,同时产生左转车辆;车道坐标点(-m_NorthLaneWidth/2,60);
if(ptrToNorthLane1==NULL)
{
ptrToNorthLane1=new CCar;
ptrToNorthLane1->x=-m_NorthLaneWidth/2;
ptrToNorthLane1->y=60;
ptrToNorthLane1->direction=4;
ptrToNorthLane1->m_RoadID=4;
ptrToNorthLane1->ptrToBefore=NULL;
ptrToNorthLane1->ptrToNext=NULL;
NorthCarLane1Temp1=ptrToNorthLane1;
NorthCarLane1Temp2=ptrToNorthLane1;
}
else
{
if(n2>0.4&&NorthCarLane1Temp1->y<(60-NorthCarLane1Temp1->m_CarLenth*2))
{
NorthCarLane1Temp1->ptrToNext=new CCar;
NorthCarLane1Temp1=NorthCarLane1Temp1->ptrToNext;
NorthCarLane1Temp1->ptrToBefore=NorthCarLane1Temp2;
NorthCarLane1Temp1->ptrToNext=NULL;
NorthCarLane1Temp2=NorthCarLane1Temp1;
NorthCarLane1Temp1->x=-m_NorthLaneWidth/2;
NorthCarLane1Temp1->y=60;
NorthCarLane1Temp1->direction=4;
NorthCarLane1Temp1->m_RoadID=4;
NorthCarLane1Temp1->b_TurnLeft=TRUE; //产生左转车辆;
}
if(n2<0.4&&NorthCarLane1Temp1->y<(60-NorthCarLane1Temp1->m_CarLenth*2))
{
NorthCarLane1Temp1->ptrToNext=new CCar;
NorthCarLane1Temp1=NorthCarLane1Temp1->ptrToNext;
NorthCarLane1Temp1->ptrToBefore=NorthCarLane1Temp2;
NorthCarLane1Temp1->ptrToNext=NULL;
NorthCarLane1Temp2=NorthCarLane1Temp1;
NorthCarLane1Temp1->x=m_NorthLaneWidth/2;
NorthCarLane1Temp1->y=-60;
NorthCarLane1Temp1->direction=4;
NorthCarLane1Temp1->m_RoadID=4;
//产生非左转车辆;
}
}
}
if(n1<0.01)
{
//第二个车道产生车,同时产生右转车辆;车道坐标点(-3*m_NorthLaneWidth/2,60);
if(ptrToNorthLane2==NULL)
{
ptrToNorthLane2=new CCar;
ptrToNorthLane2->x=-3*m_NorthLaneWidth/2;
ptrToNorthLane2->y=60;
ptrToNorthLane2->direction=4;
ptrToNorthLane2->m_RoadID=4;
ptrToNorthLane2->ptrToBefore=NULL;
ptrToNorthLane2->ptrToNext=NULL;
NorthCarLane2Temp1=ptrToNorthLane2;
NorthCarLane2Temp2=ptrToNorthLane2;
}
else
{
if(n2<0.4&&NorthCarLane2Temp1->y<(60-NorthCarLane2Temp1->m_CarLenth*2))
{
NorthCarLane2Temp1->ptrToNext=new CCar;
NorthCarLane2Temp1=NorthCarLane2Temp1->ptrToNext;
NorthCarLane2Temp1->ptrToBefore=NorthCarLane2Temp2;
NorthCarLane2Temp1->ptrToNext=NULL;
NorthCarLane2Temp2=NorthCarLane2Temp1;
NorthCarLane2Temp1->x=-3*m_NorthLaneWidth/2;
NorthCarLane2Temp1->y=60;
NorthCarLane2Temp1->direction=4;
NorthCarLane2Temp1->m_RoadID=4;
NorthCarLane2Temp1->b_TurnRight=TRUE;
}
if(n2>0.4&&NorthCarLane2Temp1->y<(60-NorthCarLane2Temp1->m_CarLenth*2))
{
NorthCarLane2Temp1->ptrToNext=new CCar;
NorthCarLane2Temp1=NorthCarLane2Temp1->ptrToNext;
NorthCarLane2Temp1->ptrToBefore=NorthCarLane2Temp2;
NorthCarLane2Temp1->ptrToNext=NULL;
NorthCarLane2Temp2=NorthCarLane2Temp1;
NorthCarLane2Temp1->x=-3*m_NorthLaneWidth/2;
NorthCarLane2Temp1->y=60;
NorthCarLane2Temp1->direction=4;
NorthCarLane2Temp1->m_RoadID=4;
NorthCarLane2Temp1->b_TurnRight=TRUE;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -