• 大小: 1.41M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-29
  • 语言: 其他
  • 标签: 其他  

资源简介

第2小组_第一版本_源程序清单.zip

资源截图

代码片段和文件信息

#include “whole.h“


void checktrainmove(int i)//检测火车下一个时刻往哪个方向运行主要传入火车的坐标和速度 
{
   
   if(train[i].direction==1)//当火车北向行驶时 
   {
    if(train[i].y == train[i].turn1_y && train[i].circle == ‘c‘)
    train[i].direction = 4;
    else if(train[i].y == train[i].turn2_y && train[i].circle == ‘a‘)
    train[i].direction = 3;
   }
   
   else if(train[i].direction==2)//当火车南向行驶时
   {
    if(train[i].y == train[i].turn3_y && train[i].circle == ‘a‘)
    train[i].direction = 4;
    else if(train[i].y == train[i].turn4_y && train[i].circle == ‘c‘)
    train[i].direction = 3;

   }
   
   else if(train[i].direction==3)//当火车西向行驶时
   {
    if(train[i].x == train[i].turn1_x && train[i].circle == ‘a‘)
    train[i].direction = 2;
    else if(train[i].x == train[i].turn3_x && train[i].circle == ‘c‘)
    train[i].direction = 1;
}
  

   else if(train[i].direction==4)//当火车东向行驶时
   {
      if(train[i].x == train[i].turn4_x && train[i].circle == ‘a‘)
         train[i].direction = 1;
        else if(train[i].x == train[i].turn2_x && train[i].circle == ‘c‘)
train[i].direction = 2;


}

}
//三种控制策略部分  先通过探测点判断函数确定轨道同时被占用,将两个被判断的火车编号传进来 
void alternate_control_policy(int num1int num2)//交替控制策略将优先行驶的火车的编号返回到公共轨道的结构中 
{                                                   
static int count1=1count2=1;//设置count为静态变量 方便数量上的累计 

if(((num1==1&&num2==0)||(num1==0&&num2==1))&&(train[num1].speed==train[num2].speed))//A B火车同时进入公共轨道1时 
{
if(count1==1)
{
track[0].train=‘A‘; //优先选择的火车
train[0].state=RUN;
count1++;
}
else 
{
if(count1%2==0)
{
  track[0].train=‘B‘; 
  train[1].state=RUN;
  count1++;
}
if(count1%2!=0)
{
  track[0].train=‘A‘; //优先选择的火车设
  train[0].state=RUN;
      count1++;
}
}
}

if(((num1==0&&num2==2)||(num1==2&&num2==0))&&(train[num1].speed==train[num2].speed))//A C火车同时进入公共轨道1时 
{
if(count2==1)
{
track[1].train=‘A‘; //优先选择的火车设置为全局变量,要输出 
train[0].state=RUN;
count2++;
}
else 
{
if(count2%2==0)
{
  track[1].train=‘C‘; 
  train[2].state=RUN;
  count2++;
}
if(count2%2!=0)
{
  track[1].train=‘A‘; 
  train[0].state=RUN;
  count2++;
}
}
}


 void speed_control_policy(int num1 int num2)//快车优先控制策略
{
if(((num1==0&&num2==1)||(num2==0&&num1==1))&&train[num1].speed!=train[num2].speed)//AB两车同时进入公共轨道1
{
if(train[0].speed>train[1].speed)
{
track[0].train=‘A‘;
track[0].state=1;
train[0].state=RUN;
}
else if(train[1].speed>train[0].speed)
{
    track[0].train=‘B‘;
    track[0].state=1;
train[1].state=RUN;
}


if(((num1==0&&num2==2)||(num1==2&&num2==0))&&train[num1].speed!=train[num2].speed)
{
    train[num2].state=PAUSE;
    train[num1].state=PAUSE;
if(train[0].speed>train[2].speed)
{

track[1].train=‘A‘;
track[1].state=1;
train[0].state=RUN;
}
else if(t

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       11430  2016-06-04 12:35  Input.c
     文件        2313  2016-06-05 23:47  ManEvent.c
     文件       12157  2016-06-05 23:47  control.c
     文件           0  2016-06-05 23:47  event.txt
     文件        1231  2016-06-04 13:34  main.c
     文件         862  2016-06-05 22:19  map.txt
     文件        4391  2016-06-05 23:43  output.c
     文件        4339  2016-06-05 23:47  record.txt
     文件         232  2016-06-04 11:52  time.c
     文件        2935  2016-06-05 23:47  whole.h
     文件         115  2016-06-05 22:28  初始化信息.txt
     文件        2266  2016-06-04 13:40  新托马斯.dev
     文件     5396501  2016-06-05 23:47  新托马斯.exe
     文件        1063  2016-06-05 23:48  新托马斯.layout

评论

共有 条评论