void move_elevator() {
if (direction == IDLE) {
// 检查是否有外部请求
for (int i = 0; i < FLOORS; i++) {
if (requests[i] != 0) {
direction = requests[i];
break;
}
}
// 检查是否有内部请求
for (int i = 0; i < FLOORS; i++) {
if (internal_requests[i] != 0) {
direction = (i > current_floor) ? UP : DOWN;
break;
}
}
}
if (direction == UP) {
if (current_floor < FLOORS - 1) {
current_floor++;
} else {
direction = IDLE;
}
} else if (direction == DOWN) {
if (current_floor > 0) {
current_floor--;
} else {
direction = IDLE;
}
}
// 检查是否到达请求的楼层
if (requests[current_floor] == direction || internal_requests[current_floor]) {
printf("Elevator stopped at floor %d\n", current_floor);
requests[current_floor] = 0;
internal_requests[current_floor] = 0;
direction = IDLE;
}
}