mirror of
https://github.com/ZGCA-Forge/Elevator.git
synced 2025-12-18 05:21:08 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b60359894 | ||
|
|
0157496e6f | ||
|
|
1031e677e1 | ||
|
|
889d554f19 |
@@ -1,5 +1,5 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
current_version = 0.0.6
|
current_version = 0.0.8
|
||||||
commit = True
|
commit = True
|
||||||
tag = True
|
tag = True
|
||||||
tag_name = v{new_version}
|
tag_name = v{new_version}
|
||||||
|
|||||||
@@ -284,6 +284,7 @@ The controller provides these event handlers:
|
|||||||
- ``on_passenger_alight(elevator, passenger, floor)``: Passenger alights
|
- ``on_passenger_alight(elevator, passenger, floor)``: Passenger alights
|
||||||
- ``on_elevator_passing_floor(elevator, floor, direction)``: Elevator passes floor
|
- ``on_elevator_passing_floor(elevator, floor, direction)``: Elevator passes floor
|
||||||
- ``on_elevator_approaching(elevator, floor, direction)``: Elevator about to arrive
|
- ``on_elevator_approaching(elevator, floor, direction)``: Elevator about to arrive
|
||||||
|
- ``on_elevator_move(elevator, from_position, to_position, direction, status)``: Elevator moves
|
||||||
|
|
||||||
Complete Example
|
Complete Example
|
||||||
----------------
|
----------------
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ A Python implementation of the Elevator Saga game with event-driven architecture
|
|||||||
realistic elevator dispatch algorithm development and testing.
|
realistic elevator dispatch algorithm development and testing.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = "0.0.6"
|
__version__ = "0.0.8"
|
||||||
__author__ = "ZGCA Team"
|
__author__ = "ZGCA Team"
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ class ElevatorController(ABC):
|
|||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
# @abstractmethod 为了兼容性暂不强制要求elevator_move必须实现
|
||||||
def on_elevator_move(
|
def on_elevator_move(
|
||||||
self, elevator: ProxyElevator, from_position: float, to_position: float, direction: str, status: str
|
self, elevator: ProxyElevator, from_position: float, to_position: float, direction: str, status: str
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|||||||
@@ -162,12 +162,13 @@ class PassengerInfo(SerializableModel):
|
|||||||
arrive_tick: int
|
arrive_tick: int
|
||||||
pickup_tick: int = 0
|
pickup_tick: int = 0
|
||||||
dropoff_tick: int = 0
|
dropoff_tick: int = 0
|
||||||
|
arrived: bool = False
|
||||||
elevator_id: Optional[int] = None
|
elevator_id: Optional[int] = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def status(self) -> PassengerStatus:
|
def status(self) -> PassengerStatus:
|
||||||
"""乘客状态"""
|
"""乘客状态"""
|
||||||
if self.dropoff_tick > 0:
|
if self.arrived:
|
||||||
return PassengerStatus.COMPLETED
|
return PassengerStatus.COMPLETED
|
||||||
elif self.pickup_tick > 0:
|
elif self.pickup_tick > 0:
|
||||||
return PassengerStatus.IN_ELEVATOR
|
return PassengerStatus.IN_ELEVATOR
|
||||||
|
|||||||
@@ -138,6 +138,17 @@ class ElevatorBusController(ElevatorController):
|
|||||||
elevator.go_to_floor(elevator.target_floor + 1, immediate=True)
|
elevator.go_to_floor(elevator.target_floor + 1, immediate=True)
|
||||||
print(f" 不让0号电梯上行停站,设定新目标楼层 {elevator.target_floor + 1}")
|
print(f" 不让0号电梯上行停站,设定新目标楼层 {elevator.target_floor + 1}")
|
||||||
|
|
||||||
|
def on_elevator_move(
|
||||||
|
self, elevator: ProxyElevator, from_position: float, to_position: float, direction: str, status: str
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
电梯移动时的回调
|
||||||
|
可以在这里记录电梯移动信息,用于调试或性能分析
|
||||||
|
"""
|
||||||
|
# 取消注释以显示电梯移动信息
|
||||||
|
# print(f"🚀 电梯 E{elevator.id} 移动: {from_position:.1f} -> {to_position:.1f} ({direction}, {status})")
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
algorithm = ElevatorBusController(debug=True)
|
algorithm = ElevatorBusController(debug=True)
|
||||||
|
|||||||
@@ -457,6 +457,7 @@ class ElevatorSimulation:
|
|||||||
passenger = self.passengers[passenger_id]
|
passenger = self.passengers[passenger_id]
|
||||||
if passenger.destination == current_floor:
|
if passenger.destination == current_floor:
|
||||||
passenger.dropoff_tick = self.tick
|
passenger.dropoff_tick = self.tick
|
||||||
|
passenger.arrived = True
|
||||||
passengers_to_remove.append(passenger_id)
|
passengers_to_remove.append(passenger_id)
|
||||||
|
|
||||||
# Remove passengers who alighted
|
# Remove passengers who alighted
|
||||||
|
|||||||
Reference in New Issue
Block a user