ABOUT ME

-

  • 가위바위보 게임 [파이썬기초예제]
    코딩 연습/파이썬 기초(예제) 2022. 4. 21. 13:03

    rock-paper-scissors 우리말로 가위바위보 게임 (또는 묵찌빠 게임)을 파이썬으로 짜보았다. 터미널 기반에서 실행이 되는 버전을 먼저 코딩하고, 이어서 tkinter 기반으로로 만들어 볼 생각이다.

     

     

    파이썬으로 만든 가위 바위 보 게임

    • 사용자가 가위, 바위, 보 중 하나를 입력하고, 컴퓨터는 '가위 바위 보' 리스트에서 random.randint() 함수로 하나를 임의로 선택한다.
    • '승 패 비김' 또한 리스트로 만들어서 if 조건문으로 비교하여 게임 결과를 표시한다. 
    • 게임은 3세 판으로 진행하고 더 진행 여부를 물은 후 계속하던지 종료하던지 한다.
    • 입력 오류 등의 처리, 게임 카운트, 승/패/비김 카운트 등을 해서 출력한다.

    ※ 파이썬 Tkinter 모듈로 만든 가위바위보 게임 [프로그램다운로드]

     

    [소스 코드]

    import random
    
    def rock_paper_scissors():
        game = ['가위', '바위', '보']
        game_result = ['승', '패', '비김']
    
        game_cnt = 1
        user_win = 0
        computer_win = 0
    
        while True:
            if game_cnt < 4:
                print(f'\n{"="*5} 가위.바위.보 3세판 게임 중 {game_cnt}번째 {"="*5}')
                user = input('\n가위/바위/보 중 1개 입력>> ')
                if not user in game:
                    print('입력 오류! 다시 입력하세요.')
                    continue
    
                computer = game[random.randint(0, 2)]
                # print(f'\nUser {user}, Computer {computer}')
                print()
    
                if user == game[0]:
                    if computer == game[0]:
                        print(f'User:{user} : Computer:{computer}\n"{game_result[2]}"')
                    elif computer == game[1]:
                        print(f'User:{user} : Computer:{computer}\n"Computer {game_result[0]}"')
                        computer_win += 1
                    elif computer == game[2]: 
                        print(f'User:{user} : Computer:{computer}\n"User {game_result[0]}"')
                        user_win += 1
                elif user == game[1]:
                    if computer == game[0]:
                        print(f'User:{user} : Computer:{computer}\n"User {game_result[0]}"')
                        user_win += 1
                    elif computer == game[1]:
                        print(f'User:{user} : Computer:{computer}\n"{game_result[2]}"')
                    elif computer == game[2]:
                        print(f'User:{user} : Computer:{computer}\n"Computer {game_result[0]}"')
                        computer_win += 1
                elif user == game[2]:
                    if computer == game[0]:
                        print(f'User:{user} : Computer:{computer}\n"Computer {game_result[0]}"')
                        computer_win += 1
                    elif computer == game[1]:
                        print(f'User:{user} : Computer:{computer}\n"User {game_result[0]}"')
                        user_win += 1
                    elif computer == game[2]:
                        print(f'User:{user} : Computer:{computer}\n"{game_result[2]}"')
    
                print(f'\nUser vs Computer - {user_win}{computer_win}\n')
                game_cnt += 1
                continue
    
            if game_cnt > 3:
                while True:
                    game_continue = input('게임을 더 하시겠습니까?..("y/n")>>')
                    if game_continue in ('n', 'N'):
                        print('\n게임을 종료합니다.')
                        return False
                    elif game_continue in ('y', 'Y'):
                        game_cnt = 1
                        user_win = 0
                        computer_win = 0
                        break
                    else:
                        print('입력 오류! 다시 입력하세요.')
                        continue
    
    rock_paper_scissors()

     

     

    good4me.co.kr

     

    [실행 결과]

    ===== 가위.바위.보 3세판 게임 중 1번째 =====
    
    가위/바위/보 중 1개 입력>> 보
    
    User:보 : Computer:보
    "비김"
    
    User vs Computer - 00
    
    
    ===== 가위.바위.보 3세판 게임 중 2번째 =====
    
    가위/바위/보 중 1개 입력>> 가위
    
    User:가위 : Computer:보
    "User 승"
    
    User vs Computer - 10
    
    
    ===== 가위.바위.보 3세판 게임 중 3번째 =====
    
    가위/바위/보 중 1개 입력>> 보
    
    User:보 : Computer:바위
    "User 승"
    
    User vs Computer - 20
    
    게임을 더 하시겠습니까?..("y/n")>>ㅛ
    입력 오류! 다시 입력하세요.       
    게임을 더 하시겠습니까?..("y/n")>>y
    
    ===== 가위.바위.보 3세판 게임 중 1번째 =====
    
    가위/바위/보 중 1개 입력>> rk
    입력 오류! 다시 입력하세요.
    
    ===== 가위.바위.보 3세판 게임 중 1번째 =====
    
    가위/바위/보 중 1개 입력>> 가위
    
    User:가위 : Computer:바위
    "Computer 승"
    
    User vs Computer - 01
    
    
    ===== 가위.바위.보 3세판 게임 중 2번째 =====
    
    가위/바위/보 중 1개 입력>> 가위
    
    User:가위 : Computer:가위
    "비김"
    
    User vs Computer - 01
    
    
    ===== 가위.바위.보 3세판 게임 중 3번째 =====       
    
    가위/바위/보 중 1개 입력>> 바위
    
    User:바위 : Computer:보
    "Computer 승"
    
    User vs Computer - 02
    
    게임을 더 하시겠습니까?..("y/n")>>n
    
    게임을 종료합니다.

     

     

    [난이도 있는 간단한 소스 코드]

    import random
    
    def rock_paper_scissors():
        rps = ['가위', '바위', '보']
        user_win_dict = {'가위':'보','바위':'가위','보':'바위'}  # User 기준 '승'인 경우
        game_result = ['승', '패', '비김']
        user_win = 0
        computer_win = 0
    
        game_cnt = '0'
        while game_cnt == '0' or not game_cnt.isdigit():
            game_cnt = input('\n몇 게임 할까요? : ')
    
        for i in range(int(game_cnt)):
            user = ''
            while user not in rps:
                user = input(f'\n[{i+1}번째 게임]\n가위/바위/보 중 1개 입력하세요 : ')
            
            computer = random.choice(rps)
            print(f'\nUser: {user} vs Computer: {computer}')
            if user == computer:
                print(f'"{game_result[2]}"')
            elif user_win_dict[user] == computer:
                print(f'User "{game_result[0]}"')
                user_win += 1
            else:
                print(f'User "{game_result[1]}"')
                computer_win += 1
    
        print(f'\n게임 결과: User vs Computer - {user_win}{computer_win}\n')
        user_win = 0
        computer_win = 0
    
    rock_paper_scissors()
    • isdigit() : 0 포함 양의 정수와 지수만 True 반환
    • random.choice(rps) : parameter는 시퀀스 타입 --> 1개 추출
    • rps[random.randint(0, 2)] : parameter는 0 <= x <=2 범위
    • random.sample(rps, 1)[0] : parameter는 시쿼스 또는 세트 타입과 N개 --> list 반환

     

    [실행 결과]

    몇 게임 할까요? : 5
    
    [1번째 게임]
    가위/바위/보 중 1개 입력하세요 : 가위
    
    User: 가위 vs Computer: 바위     
    User "패"
    
    [2번째 게임]
    가위/바위/보 중 1개 입력하세요 : 가이
    
    [2번째 게임]
    가위/바위/보 중 1개 입력하세요 : 가위
    
    User: 가위 vs Computer: 가위     
    "비김"
    
    [3번째 게임]
    가위/바위/보 중 1개 입력하세요 : 가위
    
    User: 가위 vs Computer: 보       
    User "승"
    
    [4번째 게임]
    가위/바위/보 중 1개 입력하세요 : 가위
    
    User: 가위 vs Computer: 바위     
    User "패"
    
    [5번째 게임]
    가위/바위/보 중 1개 입력하세요 : 가위
    
    User: 가위 vs Computer: 가위        
    "비김"
    
    게임 결과: User vs Computer - 12

     

     

    [파이썬 Tkinter 모듈로 만든 가위바위보 게임]

    프로그램 다운로드

    가위바위보 게임 GUI-1
    가위바위보 게임 GUI-1

     

    가위바위보 게임 GUI-2
    가위바위보 게임 GUI-2

     

    가위바위보 게임 GUI-3
    가위바위보 게임 GUI-3

     

    가위바위보 게임 GUI-4
    가위바위보 게임 GUI-4

     

     

    구구단 게임

    파이썬 기초 예제로 구구단을 게임으로 만들어보는 코딩 연습임. 구구단 게임 함수의 매개변수로 구구단 단수와 답변 제한 시간(초)을 넘겨주면 실행 게임수를 입력받아 설정하고 랜덤 하게 구

    goodthings4me.tistory.com

     

     

Designed by goodthings4me.