📄 statechange.c
字号:
//状态转换函数
#define q0 0
#define q1 1
#define q2 2
#define q3 3
extern int STATE;
extern int LOCATION;
extern int HEADING;
extern int TIME;
extern int CALL;
extern int floorcall[9];
extern int upcall[8];
extern int downcall[8];
extern int destination[100];
extern int CALLSOURSE;
extern int P;
extern int des[100][2];
int dtime=0,waittime=0;
void statechange(void)
{
int a;
switch (STATE)
{
case '0':STATE='1';
HEADING=0;
break;
case '1':if(CALL==0&&destination[0]==0&&des[0][0]==0)
{
STATE='1';
HEADING=0;
if(LOCATION==1)
{
STATE='1';
HEADING=0;
}
else
{
waittime++;
if(waittime==50)
{
waittime=0;
STATE='2';
if(P==1)
destination[0]=1;
else if(P==2)
{
des[0][0]=1;
des[0][1]=2;
}
HEADING=2;
}
}
}
else{
waittime=0;
if(LOCATION==destination[0]||LOCATION==des[0][0])
STATE='3';
else
{
STATE='2';
if(P==1)
if(LOCATION>destination[0])
HEADING=2;
else
HEADING=1;
else if(P==2)
if(LOCATION>des[0][0])
HEADING=2;
else
HEADING=1;
}
}
break;
case '2':
waittime++;
HEADING=HEADING;
STATE='2';
if(waittime==50)
{
waittime=0;
if(HEADING==1)
LOCATION++;
else
LOCATION--;
if(P==1&&LOCATION==destination[0])
{
STATE='3';
for(a=0;destination[a]!=0;a++)
destination[a]=destination[a+1];
}
else if(P==2&&LOCATION==des[0][0])
{
STATE='3';
for(a=0;des[a][0]!=0;a++)
{
des[a][0]=des[a+1][0];
des[a][1]=des[a][1];
}
}
else
STATE='2';}
break;
case '3':
waittime++;
HEADING=HEADING;
STATE='3';
if(waittime==50)
{
waittime=0;
if(destination[0]==LOCATION||des[0][0]==LOCATION)
{
STATE='3';
if(P==1)
for(a=0;destination[a]!=0;a++)
destination[a]=destination[a+1];
else if(P==2)
for(a=0;des[a][0]!=0;a++)
{
des[a][0]=des[a+1][0];
des[a][1]=des[a][1];
}
}
else if(destination[0]!=0&&des[0][0]!=0)
{
STATE='2';
if(destination[0]>LOCATION||des[0][0]>LOCATION)
HEADING=1;
else
HEADING=2;
}
else
STATE='1';}
break;
}
sleep(100);
dtime++;
if(dtime%10==9)
TIME++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -