📄 elevator1.h
字号:
// Elevator1.h: interface for the CElevator class.
//
// 自定义的电梯基类
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ELEVATOR1_H__7A1E60E5_BF5A_476F_9181_214905F2F226__INCLUDED_)
#define AFX_ELEVATOR1_H__7A1E60E5_BF5A_476F_9181_214905F2F226__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CElevator //:CWnd
{
public:
CElevator();
virtual ~CElevator();
//定时器相关
public:
static void CALLBACK MyTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);
void KillMyTimer();
void SetMyTimer(UINT nElapse);
//用于定时器的ID
UINT m_timerID;
static CElevator* pThis; //指向本类的指针
//方法声明
public:
int IsStay(); //是否处于停留状态
void CentralControl(); //中央控制逻辑
int GetStatus(); //获取电梯当前运行状态
float GetLocation(); //获取电梯当前的位置
void Move(); //电梯的运行逻辑
void CloseDoor(); //当用户按下“Go”之后,电梯关门
void RequestDest(int floor); //接收用户发出的去往某个楼层的请求
void RequestDown(int floor); //接收某个楼层发出的向下的请求
void RequestUp(int floor); //接收某个楼层发出的向上的请求
//属性声明
private:
float m_location; //指示电梯轿厢在电梯内部所处的位置
int m_direction; //指示电梯运动的方向
//0表示停止
//1表示向上
//-1表示向下
int m_aim; //指示电梯向下一个目标楼层运行的目的
//0表示响应该楼层的dest请求
//1表示响应该楼层的up请求
//-1表示响应该楼层的down请求
int m_nextFloor; //下一个目的楼层
int m_stayTime; //在某个楼层的停留时间计数值
bool m_bStay; //是否处于停留状态
int m_upRequestTime; //所有向上请求的次数
int m_upRequest[8]; //保存所有发出向上请求的楼层号
int m_downRequestTime; //所有向下请求的次数
int m_downRequest[8]; //保存所有发出向下请求的楼层号
int m_destRequestTime; //所有目标楼层的次数
int m_destRequest[8]; //保存所有被选择的目标楼层号
//注:所有的请求按照顺便服务的策略进入队列
//常量声明
private:
const int m_stayAtFloor; //电梯在一个楼层的停留时间,包括开门和关门时间,初始化为16
const int m_door; //电梯开门和关门的时间,初始化为4
const int m_move; //电梯在两个楼层之间的运行时间,初始化为8
//注:这里所有的运行时间均为该时间所包含电梯控制周期的次数
// 电梯控制周期设为0.25s=250ms。
const float m_space; //在一个电梯控制周期内,电梯可以运行的最大距离
//为了运算简便,可以假设每个楼层代表一个座标点
//如楼层1代表座标1,楼层2代表座标2。。。
//电梯的运行即不断改变其自身的座标,
//当其座标恰好在某一个整数座标点时,即表示电梯停靠在该楼层
//电梯在两个楼层之间运行时,其经过的距离为1
//由于电梯在两个楼层之间运行需要8个电梯控制周期
//则每一个电梯周期内,电梯走过的座标距离=1/8=0.125;
};
#endif // !defined(AFX_ELEVATOR1_H__7A1E60E5_BF5A_476F_9181_214905F2F226__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -