1 부터 시작하는 파이썬 - 14장 [프로젝트 제작]

Sehyun_Kim·2023년 8월 22일
0
post-thumbnail

프로젝트 제작

이제 프로젝트를 만들 준비가 다 되었습니다!
파이썬을 하나도 모르는 상태에서 주사위 프로그램을 만드는데 필요한 기본 함수, 모듈 함수까지 알아보았습니다.
여러분들도 각자의 프로젝트를 만들기 위한 모든 준비를 마췃으리라 생각하고 이제 마지막 블로그의 단계인 '제작' 단계를 시작해 보겠습니다.

앞서 11장에서 설계한 로직을 기반으로 만들어본 저의 주사위 프로그램입니다.

import time, os, random, keyboard
print("🙋 Pandora's box [ πίθος ] \n\n")
print("사용법 ↓ \n   엔터버튼: 주사위 1번 돌리기\n   ESC버튼: 프로그램 종료 \n\n\n")

주사위개수=int(input("주사위 개수를 입력해 주세요: "))
눈수=int(input("주사위 눈의 수를 입력해 주세요: "))

def main():
    for i in range(1,주사위개수+1):
        print(i,"번째 주사위는 ----> ",end = ' ')
        time.sleep(1)
        a=random.randrange(1,눈수+1)
        print("결과: ",a,"\n")
        
        if i==주사위개수:
            time.sleep(1)
            print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")
            print("다음 턴!")


while 1:
    if keyboard.is_pressed('enter'):
        print("주사위 돌리는중!\n")
        main()
        time.sleep(0.1)

    if keyboard.is_pressed('esc'):
        print("\n종료\n")
        time.sleep(1)
        break
    
os.system('pause')
결과>>

🙋 Pandora's box [ πίθος ] 


사용법 ↓ 
   엔터버튼: 주사위 1번 돌리기
   ESC버튼: 프로그램 종료 



주사위 개수를 입력해 주세요: 2
주사위 눈의 수를 입력해 주세요: 6
주사위 돌리는중!

1 번째 주사위는 ---->  결과:  4 

2 번째 주사위는 ---->  결과:  6







다음 턴!
주사위 돌리는중!

1 번째 주사위는 ---->  결과:  3 

2 번째 주사위는 ---->  결과:  4 

앞에서 알아본 random모듈 뿐만아니라 time, os, keyboard 모듈을 추가로 사용하였습니다.

코드 설명

1. 모듈 import, print( ), ----(프로그램 설명)

import time, os, random, keyboard

print("🙋 Pandora's box [ πίθος ] \n\n")
print("사용법 ↓ \n   엔터버튼: 주사위 1번 돌리기\n   ESC버튼: 프로그램 종료 \n\n\n")

다른 사람들도 편하게 사용할 수 있도록 프로그램이 작동하기 전 사용방법을 출력해 주었습니다.

2. input( ), ----(주사위 설정)

주사위개수=int(input("주사위 개수를 입력해 주세요: "))
눈수=int(input("주사위 눈의 수를 입력해 주세요: "))

주사위가 1개 이상이 필요하거나, 주사위의 눈이 6개가 아닌 경우가 있기 때문에 이를 설정할 수 있도록 만들어 주었습니다.

3. 함수 , for문, if문 ----(메인코드)

def main():
    for i in range(1,주사위개수+1):
        print(i,"번째 주사위는 ----> ",end = ' ')
        time.sleep(1)
        a=random.randrange(1,눈수+1)
        print("결과: ",a,"\n")
        
        if i==주사위개수:
            time.sleep(1)
            print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")
            print("다음 턴!")

코드 롤 조금 더 깔끔하게 정돈하기 위해서 메인 코드는 함수에 넣어주었습니다.

- 3.1 for문, if문 ----(주사위 수만큼 반복)

for i in range(1,주사위개수+1):
    print(i,"번째 주사위는 ----> ",end = ' ') 
    
    time.sleep(1)   #1초 정지한다는 뜻의 time모듈의 sleep(초) 함수
    
    a=random.randrange(1,눈수+1)
    
    print("결과: ",a,"\n")

주사위의 개수를 입력받았기 때문에 주사위의 계수만큼 반복 해주도록 하였습니다.
또한 i번째 주사위는 ----> 결과: 3과 같이 옆으로 출력하기 위해 end = ' '을 넣어주었습니다.

- 3.2 if문 ----(마지막 주사위 효과)

if i==주사위개수:
    time.sleep(1)
    print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")
    print("다음 턴!")

만약 마지막 반복일경우 즉 for i in range(1,주사위개수+1):에서의 i 가 변수주사위개수에 저장된 값과 같을 경우 다음 턴의 경과값과의 혼동을 방지하기 위해 print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")을 넣어주었습니다.
(\n은 줄바꿈 명령어 입니다.)

4. while문, if문 ----(주사위 작동 스위치)

while 1:
    if keyboard.is_pressed('enter'):
        print("주사위 돌리는중!\n")
        main()
        time.sleep(0.1)

    if keyboard.is_pressed('esc'):
        print("\n종료\n")
        time.sleep(1)
        break

주사위 프로그램 특성상 연속적으로 프로그램이 동작해야 합니다.
그러기 때문에 메인 함수를 실행하거나 프로그램을 종료하는 키를 설정해 주었습니다.

keyboard 모듈을 사용하여 키보드의 'enter'키와 'esc'키의 동작 감지를 할 수 있게 해주었으며, while 문의 무한 반복으로 동작 감지를 무한하게 설정하였습니다.

키보드의 'enter'를 누를 경우 main( )함수가 실행됩니다.
'esc'를 누를 경우 종료 메시지와 함께 반복 문의 제어명령어인break으로 무한 반복문이 끝나게 되는 방식입니다.

profile
Pandora's box [ πίθος ]

0개의 댓글