?? elevator1.h
字號(hào):
// Elevator1.h: interface for the CElevator class.
//
// 自定義的電梯基類(lèi)
//
//////////////////////////////////////////////////////////////////////
#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();
//定時(shí)器相關(guān)
public:
static void CALLBACK MyTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);
void KillMyTimer();
void SetMyTimer(UINT nElapse);
//用于定時(shí)器的ID
UINT m_timerID;
static CElevator* pThis; //指向本類(lèi)的指針
//方法聲明
public:
int IsStay(); //是否處于停留狀態(tài)
void CentralControl(); //中央控制邏輯
int GetStatus(); //獲取電梯當(dāng)前運(yùn)行狀態(tài)
float GetLocation(); //獲取電梯當(dāng)前的位置
void Move(); //電梯的運(yùn)行邏輯
void CloseDoor(); //當(dāng)用戶按下“Go”之后,電梯關(guān)門(mén)
void RequestDest(int floor); //接收用戶發(fā)出的去往某個(gè)樓層的請(qǐng)求
void RequestDown(int floor); //接收某個(gè)樓層發(fā)出的向下的請(qǐng)求
void RequestUp(int floor); //接收某個(gè)樓層發(fā)出的向上的請(qǐng)求
//屬性聲明
private:
float m_location; //指示電梯轎廂在電梯內(nèi)部所處的位置
int m_direction; //指示電梯運(yùn)動(dòng)的方向
//0表示停止
//1表示向上
//-1表示向下
int m_aim; //指示電梯向下一個(gè)目標(biāo)樓層運(yùn)行的目的
//0表示響應(yīng)該樓層的dest請(qǐng)求
//1表示響應(yīng)該樓層的up請(qǐng)求
//-1表示響應(yīng)該樓層的down請(qǐng)求
int m_nextFloor; //下一個(gè)目的樓層
int m_stayTime; //在某個(gè)樓層的停留時(shí)間計(jì)數(shù)值
bool m_bStay; //是否處于停留狀態(tài)
int m_upRequestTime; //所有向上請(qǐng)求的次數(shù)
int m_upRequest[8]; //保存所有發(fā)出向上請(qǐng)求的樓層號(hào)
int m_downRequestTime; //所有向下請(qǐng)求的次數(shù)
int m_downRequest[8]; //保存所有發(fā)出向下請(qǐng)求的樓層號(hào)
int m_destRequestTime; //所有目標(biāo)樓層的次數(shù)
int m_destRequest[8]; //保存所有被選擇的目標(biāo)樓層號(hào)
//注:所有的請(qǐng)求按照順便服務(wù)的策略進(jìn)入隊(duì)列
//常量聲明
private:
const int m_stayAtFloor; //電梯在一個(gè)樓層的停留時(shí)間,包括開(kāi)門(mén)和關(guān)門(mén)時(shí)間,初始化為16
const int m_door; //電梯開(kāi)門(mén)和關(guān)門(mén)的時(shí)間,初始化為4
const int m_move; //電梯在兩個(gè)樓層之間的運(yùn)行時(shí)間,初始化為8
//注:這里所有的運(yùn)行時(shí)間均為該時(shí)間所包含電梯控制周期的次數(shù)
// 電梯控制周期設(shè)為0.25s=250ms。
const float m_space; //在一個(gè)電梯控制周期內(nèi),電梯可以運(yùn)行的最大距離
//為了運(yùn)算簡(jiǎn)便,可以假設(shè)每個(gè)樓層代表一個(gè)座標(biāo)點(diǎn)
//如樓層1代表座標(biāo)1,樓層2代表座標(biāo)2。。。
//電梯的運(yùn)行即不斷改變其自身的座標(biāo),
//當(dāng)其座標(biāo)恰好在某一個(gè)整數(shù)座標(biāo)點(diǎn)時(shí),即表示電梯停靠在該樓層
//電梯在兩個(gè)樓層之間運(yùn)行時(shí),其經(jīng)過(guò)的距離為1
//由于電梯在兩個(gè)樓層之間運(yùn)行需要8個(gè)電梯控制周期
//則每一個(gè)電梯周期內(nèi),電梯走過(guò)的座標(biāo)距離=1/8=0.125;
};
#endif // !defined(AFX_ELEVATOR1_H__7A1E60E5_BF5A_476F_9181_214905F2F226__INCLUDED_)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -