python 电梯模拟器(命令行终端下极速版)

本文介绍了一个在命令行终端运行的Python电梯模拟器,包括电梯状态机设计、信息线程处理电梯内外信号及开关门逻辑。提供运行截图、源代码及详细代码分析,帮助理解电梯模拟的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

拥有较为良好的界面,完善的模拟电梯实现思路。

电梯模拟器实现逻辑

电梯模拟器分为三个部分:

1,将电梯堪称一台状态机,根据外界传来的信号改变自身的运动状态

2,与电梯同步运行的是信息线程,电梯的消息主要来自

      a. 电梯外部的某一楼层有人按上或下按钮

      b. 电梯内部有人按下某一楼层的按钮

3,开关门,电梯只有关门状态下才会上下运行

运行截图

源代码

import random
import time
import gevent
from gevent import monkey
import os

monkey.patch_all()


class Elevator():
	"""定义电梯类,并且初始化"""
	def __init__(self,CAPACITY):
		# 电梯运行状态:0 待机,1 上行,2 下行
		self.state = 0
		# 最大容量
		self.capacity = CAPACITY
		# 电梯目前所在楼层:任意
		self.curPosition = random.randint(1,TOP)
		# 电梯门的开关标志:0 关,1 开
		self.door = 0
		# 电梯下一停靠楼层:空
		self.dest_floor = None
		# 电梯内人数:0
		self.num = 0
		# 电梯转向标志:0 不转向,1 转向
		self.change_dir = 0


class People():
	"""创建人类,并且初始化"""
	def __init__(self):
		# 起点楼层
		self.pos = random.randint(1,TOP)
		# 终点楼层
		self.dest = random.randint(1,TOP)
		# 起点楼层 不等于 终点楼层
		while self.dest == self.pos:
			self.dest = random.randint(1,TOP)
		# 在某一楼层按 上/下楼 按钮:-1 下楼,1 上楼
		if self.dest <= self.pos:
			self.dir = -1
		else:
			self.dir = 1
		# 是否在电梯内标志:0 不在,1 在
		self.inside = 0


def visual_display(e):
	"""可视化显示电梯运行情况"""
	os.system("cls")
	# 创建标题与边框
	print("\r\n"*3 + "\r\t" + "&"*92)
	print("\r\t" + "&" + "\t"*5 + "电梯模拟程序" + "\t"*5 + "   &")
	print("\r\t" + "&"*92)
	# 创建列名
	print("\r\t 电梯入口 \t\t" + "*楼层*" + "\t\t#电梯#\t\t" + "|电梯内人员|")
	# 绘制电梯
	for i in range(TOP):
		floor = TOP - i
		floor_img =""
		# 绘制电梯外等待人员, T代表上, V代表下
		if len(msgQueen) >= 1:
			floor_img += "\t"
			i = 0
			for people in msgQueen:
				if people[0] == floor and people[3] != 1:
					floor_img += "呉"
					if people[1] == 1:
						floor_img += "T"
					else:
						floor_img += "V"
					i+=1
		if len(msgQueen) < 1:
			floor_img += "\t"
		# 绘制楼层号
		floor
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值