python电梯调度模拟-pygame实现

主要介绍了Python模拟简单电梯调度算法,涉及Python线程、队列、时间延迟等相关操作技巧,需要的朋友可以参考下。
需求:
某栋楼16层楼,有2部电梯。基于线程思想,模拟一个电梯调度程序。
目的:
1、学习调度算法
2、通过实现电梯调度,体会操作系统调度过程
3、学习特定环境下多线程编程方法
实现过程:

定义people类:

#定义people类
pygame.init()
up = pygame.image.load("up.png")
down = pygame.image.load("down.png")
people = []
count = 5
floor_count = 16


def init_people():
    for i in range(0, count):
        people_in = random.randint(1, floor_count)
        people_out = random.randint(1, floor_count)
        if people_in > people_out:
            up_down = 2
        else:
            up_down = 1
        t = random.randint(1, 50)
        people.append([people_in, people_out, up_down, t, 1])


init_people()
input_finish = False
arrive = 0
elevator_right = False

def people_start():
    for i in range(0, count):
        if people[i][3] == t:
            people[i][4] = 1

输入小人进入电梯的楼层:

# 输入小人进入电梯的楼层
def people_wait():
    for i in range(0, count):
        if people[i][3] == t:
            print(i, "号小人从", people[i][0], "楼按了电梯")
            if direction[people[i][0]] == 1:
                if people[i][2] == 2:
                    direction[people[i][0]] = 3
            if direction[people[i][0]] == 2:
                if people[i][2] == 1:
                    direction[people[i][0]] = 3
            if direction[people[i][0]] == 0:
                if people[i][2] == 1:
                    direction[people[i][0]] = 1
                if people[i][2] == 2:
                    direction[people[i][0]] = 2
            if running[people[i][0]] == 0:
                running[people[i][0]] = 1
            if running[people[i][0]] == 2:
                running[people[i][0]] = 3
            if running1[people[i][0]] == 0:
                running1[people[i][0]] = 1
            if running1[people[i][0]] == 2:
                running1[people[i][0]] = 3


# 小人在电梯里按楼层
def people_sit():
    for j in range(0, count):
        if people[j][4] == 1:  # 状态
            if people[j][0] == i:  # 楼层
                people[j][4] = 2
                print(j, "号小人进入了左边电梯并按了", people[j][1], "楼")
                if running[people[j][1]] == 1:
                    running[people[j][1]] = 3
                if running[people[j][1]] == 0:
                    running[people[j][1]] = 2


def people_sit1():
    for j in range(0, count):
        if people[j][4] == 1 and people[j][0] == i:
            people[j][4] = 2
            print(j, "号小人进入了右边电梯并按了", people[j][1], "楼")
            if running1[people[j][1]] == 1:
                running1[people[j][1]] = 3
            if running1[people[j][1]] == 0:
                running1[people[j][1]] = 2


#  小人离开电梯
def people_out():
    for j in range(0, count):
        if people[j][4] == 2 and people[j][1] == i:
            people[j][4] = 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值