haitao:
【设计问题-如何作一个够用而且好用的设计?】昨晚开始动手了,大家进来讨论讨论
[阅读: 483] 2005-06-08 06:43:44
type
Tmslift=record //电梯的公共特征(也可以不同)
fpmax //最大载人数
,fmsopen //开门的费时ms
,fmsclose //关门的费时ms
,fmspin //每进一个人的费时ms
,fmspout //每出一个人的费时ms
,fmsup //每升一层的费时ms
,fmsdown //每降一层的费时ms
:Integer;
fstopopen:Boolean; //休息时,开着门还是关着门
fstopfloor:Integer; //休息时,停在哪一层 9999:表示在当前层休息
end;
Tlift=record //电梯的信息
//静态属性
fno:Integer; //编号
fcanclear //可以删除按错了的楼层数字灯
:Boolean;
fcangoupf:array of {所有楼层} Boolean; //本电梯上行时可以到达的楼层
fcangodownf:array of {所有楼层} Boolean; //本电梯下行时可以到达的楼层
mslift:Tmslift;
IMG:Timage;
//运行时信息
fcurf //当前位置:楼层
,fpcount //里面的人数
:Integer;
//电梯运行状态图: 停,关好门---fmsopen--->停,开好门-->停,进人---fmsclose--->停,关好门-->运行-->停,关好门-->...
fruning //正在运行? f f f f t f
,fopen //门开好了? f t t f f f
,fgoup //准备向上?
:Boolean;
flgof:array of {所有楼层} Boolean; //当前已按的楼层数字灯
fpgof:array of {电梯里的所有人} Integer; //每个人打算去的楼层
fbgof:array of {所有楼层} Boolean; //大楼总控分配本电梯需要停的楼层
end;
Tfloor=record //楼层的信息
//静态属性
fno:Integer; //楼层号
fupgroup //向上的电梯分组(一个向上的电梯到达了,同组的向上的请求灯都灭)
,fdowngroup //向下的电梯分组(一个向下的电梯到达了,同组的向下的请求灯都灭)
:array of {所有电梯} Integer; //某个方向不到达本层的电梯的请求灯不可见或不可按
//数组元素为组号,相同组号的电梯为同一组
IMG:Timage;
//运行时信息
fuppcout //等待向上的人数
,fdownpcount //等待向下的人数
:Integer;
end;
Tbuilding=record //大楼的信息
liftcount
,floormax
,floormin
:Integer;
mslift:Tmslift;
lifts:array of Tlift;
floors:array of Tfloor;
end;