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

📄 statechange.c

📁 计算机的一个程序作业
💻 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 + -