elevator
0.7
Симулятор пассажирского лифта
Титульная страница
Классы
Файлы
Файлы
Список членов всех файлов
Elevator.h
См. документацию.
1
// Проект elevator
2
// (c) И.К. Марчевский, 2021-2022
3
12
#pragma once
13
14
#include <string>
15
#include <vector>
16
17
#include "
Passenger.h
"
18
36
enum class
ElevatorIndicator
{
37
both
,
38
up
,
39
down
,
40
};
41
42
46
enum class
ElevatorStatus
{
47
staying
,
48
movingUp
,
49
movingDn
,
50
};
51
52
56
enum class
ElevatorAcceleration
{
57
breaking
,
58
accelerating
,
59
uniform
,
60
};
61
62
66
enum class
ElevatorDoorsStatus
{
67
opening
,
68
openedUnloading
,
69
openedLoading
,
70
closing
,
71
closed
,
72
waiting
,
73
};
74
75
79
class
Elevator
80
{
81
friend
class
Control
;
82
83
private
:
85
std::vector<Passenger> passengers;
86
88
std::vector<bool> buttons;
89
91
const
size_t
capacity;
92
94
ElevatorIndicator
indicator;
95
97
size_t
position;
98
100
size_t
destinationFloor;
101
103
size_t
myid;
104
106
ElevatorStatus
status;
107
109
ElevatorAcceleration
acceleration;
110
112
ElevatorDoorsStatus
doorsStatus;
113
114
115
void
setIndicator(
ElevatorIndicator
indicator);
116
117
ElevatorIndicator
getIndicator()
const
118
{
119
return
indicator;
120
}
121
122
bool
isGoingButtonPressed()
const
;
123
124
size_t
lastChechedPassenger;
125
size_t
timeToSelfProgramme;
126
127
size_t
getNumberOfPassengers()
const
128
{
129
return
passengers.size();
130
}
131
132
std::string getStateString()
const
;
133
134
bool
isEmpty()
const
135
{
136
return
(passengers.size() == 0);
137
}
138
139
bool
isEmptyAfterUnloading()
const
140
{
141
return
((doorsStatus ==
ElevatorDoorsStatus::openedUnloading
) && (isEmpty()));
142
}
143
144
bool
isDestinationAchieved(
const
std::vector<bool>& upButtons,
const
std::vector<bool>& dnButtons)
const
;
145
146
bool
isStaying()
const
147
{
148
return
(status ==
ElevatorStatus::staying
);
149
}
150
151
bool
isGoingUp()
const
152
{
153
return
(status ==
ElevatorStatus::movingUp
);
154
}
155
156
bool
isGoingDn()
const
157
{
158
return
(status ==
ElevatorStatus::movingDn
);
159
}
160
161
bool
isGoingUniformly()
const
162
{
163
return
((status ==
ElevatorStatus::movingDn
|| status ==
ElevatorStatus::movingUp
) && (acceleration ==
ElevatorAcceleration::uniform
));
164
}
165
166
bool
isAccelerating()
const
167
{
168
return
((status ==
ElevatorStatus::movingDn
|| status ==
ElevatorStatus::movingUp
) && (acceleration ==
ElevatorAcceleration::accelerating
));
169
}
170
171
bool
isBreaking()
const
172
{
173
return
((status ==
ElevatorStatus::movingDn
|| status ==
ElevatorStatus::movingUp
) && (acceleration ==
ElevatorAcceleration::breaking
));
174
}
175
176
bool
isDoorsOpening()
const
177
{
178
return
((status ==
ElevatorStatus::staying
) && (doorsStatus ==
ElevatorDoorsStatus::opening
));
179
}
180
181
bool
isDoorsClosing()
const
182
{
183
return
((status ==
ElevatorStatus::staying
) && (doorsStatus ==
ElevatorDoorsStatus::closing
));
184
}
185
186
bool
isDoorsOpened()
const
187
{
188
return
((status ==
ElevatorStatus::staying
) && (doorsStatus ==
ElevatorDoorsStatus::openedLoading
|| doorsStatus ==
ElevatorDoorsStatus::openedUnloading
|| doorsStatus ==
ElevatorDoorsStatus::waiting
));
189
}
190
191
bool
isStayingDoorsClosed()
const
192
{
193
return
((status ==
ElevatorStatus::staying
) && ((position % 100) == 0) && (doorsStatus ==
ElevatorDoorsStatus::closed
));
194
}
195
196
double
getPosition()
const
197
{
198
return
position / 100 + 0.01 * (position % 100);
199
}
200
201
void
setDestination(
size_t
i);
202
203
size_t
getDestination()
const
204
{
205
return
destinationFloor;
206
}
207
208
const
std::vector<bool>& getButtons()
const
209
{
210
return
buttons;
211
}
212
213
bool
getButton(
size_t
i)
const
214
{
215
return
buttons[i];
216
}
217
218
219
public
:
225
Elevator
(
size_t
numberOfFloors
,
size_t
maxCapacity,
size_t
id
);
226
};
227
ElevatorIndicator::both
стрелочки в обоих направлениях
Elevator
Класс — кабина лифта
Definition:
Elevator.h:79
numberOfFloors
const size_t numberOfFloors
Общее число этажей
Definition:
main.cpp:67
ElevatorIndicator
ElevatorIndicator
Состояния лампочки (индикатора направления движения) кабины лифта
Definition:
Elevator.h:36
ElevatorDoorsStatus
ElevatorDoorsStatus
Состояние дверей кабины лифта (не может быть использовано напрямую в системе управления, внутренний параметр)
Definition:
Elevator.h:66
ElevatorStatus::movingDn
движется вниз
ElevatorAcceleration::uniform
движется равномерно или стоит
ElevatorStatus::movingUp
движется вверх
ElevatorIndicator::up
стрелочка вверх
ElevatorDoorsStatus::openedLoading
открыты (идет посадка пассажиров)
ElevatorDoorsStatus::waiting
открыты (лифт ожидает отправления)
ElevatorStatus
ElevatorStatus
Definition:
Elevator.h:46
ElevatorDoorsStatus::openedUnloading
открыты (идет высадка пассажиров)
ElevatorStatus::staying
стоит (не движется)
ElevatorDoorsStatus::opening
открываются
Control
Основной класс — симулятор пассажирского лифта
Definition:
Control.h:25
Passenger.h
Заголовочный файл с описанием класса Passenger и сопутствующих структур
ElevatorAcceleration
ElevatorAcceleration
Ускорение лифта (не может быть использовано напрямую в системе управления, внутренний параметр) ...
Definition:
Elevator.h:56
ElevatorDoorsStatus::closing
закрываются
ElevatorDoorsStatus::closed
закрыты
ElevatorAcceleration::breaking
замедляется (тормозит)
ElevatorAcceleration::accelerating
ускоряется (разгоняется)
ElevatorIndicator::down
стрелочка вниз
Elevator.h
Создано системой
1.8.11