본문 바로가기
Python/☞

[43]-A. 승강기 제어시스템

by TR. 2020. 7. 24.

abs() : 절대값을 반환해주는 함수

 

import random 

# set EV
BOX = 7

ev = [[0]*15 for i in range(3)]
no = ["EV1004","EV1005","EV1006"]
on = [0,0,0]

for i in range(len(ev)):
    r = random.randint(0,len(ev[0])-1)
    ev[i][r] = BOX

# set Me
me = [0]*len(ev[0])
now = random.randint(0,len(ev[0])-1)

# run
while True:
    # update Me
    me[now] = 1
    
    # print1
    print("------- The Grand Budapest Hotel --------")
    for y in range(len(ev)):
        if on[y] == 0:
            print(end="off ")
        elif on[y] == 1:
            print(end="on  ")
        print(no[y], end=" ")
        for x in range(len(ev[i])):
            if ev[y][x] == BOX:
                print(end="■■")
            elif ev[y][x] == 0:
                print(end="==")
        print()
    print("-----------------------------------------")
    print(end="         ")
    for x in range(len(me)):
        if me[x] == 1:
            print(end=" ↑")
        else:
            print(end="  ")
    print()
    
    # print Button
    print("나는 지금 %d층에 있다." % (now+1))
    print("1) 위로 \n2) 아래로")
    sel = int(input("입력: "))
    
    # call BOX
    min = len(ev[0])
    idx1 = -1
    idx2 = -1
    for y in range(len(ev)):
        for x in range(len(ev[i])):
            if ev[y][x] == BOX and abs(now-x) < min:
                min = abs(now-x)
                idx1 = y
                idx2 = x
    on[idx1] = 1
    print(no[idx1], "승강기가 이동합니다>>")

    # move
    dir = 0
    if sel == 1:
        dir = int(input("층수입력[%d~15]: " % (now+2)))
        if dir > now and dir <= len(ev[0]):
            ev[idx1][idx2] = 0
            ev[idx1][dir-1] = BOX
            me[now] = 0
            now = dir-1
            me[now] = 1
            print("%d층에 도착했습니다." % dir)
        else:
            print("BEEP!")
    elif sel == 2:
        dir = int(input("층수입력[1~%d]: " % now))
        if dir > 0 and dir < now:
            ev[idx1][idx2] = 0
            ev[idx1][dir-1] = BOX
            me[now] = 0
            now = dir-1
            me[now] = 1
            print("%d층에 도착했습니다." % dir)
        else:
            print("BEEP!")

    # print2
    print("------- The Grand Budapest Hotel --------")
    for y in range(len(ev)):
        if on[y] == 0:
            print(end="off ")
        elif on[y] == 1:
            print(end="on  ")
        print(no[y], end=" ")
        for x in range(len(ev[i])):
            if ev[y][x] == BOX:
                print(end="■■")
            elif ev[y][x] == 0:
                print(end="==")
        print()
    print("-----------------------------------------")
    print(end="         ")
    for x in range(len(me)):
        if me[x] == 1:
            print(end=" ↑")
        else:
            print(end="  ")
    print()

    # 초기화 및 랜덤 (탑승한 승강기 제외)
    on[idx1] = 0
    for y in range(len(ev)):
        for x in range(len(ev[y])):
            if y != idx1 and ev[y][x] == BOX:
                ev[y][x] = 0
                r = random.randint(0, len(ev[0])-1)
                ev[y][r] = BOX

                

'Python > ' 카테고리의 다른 글

[44]-A. 사다리 게임  (0) 2020.07.24
[44] 사다리 게임  (0) 2020.07.24
[43] 승강기 제어시스템  (0) 2020.07.24
[42]-A. 캐릭터 이동  (0) 2020.07.24
[42] 캐릭터 이동  (0) 2020.07.24

댓글