-
가위바위보 게임 [파이썬기초예제]코딩 연습/파이썬 기초(예제) 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()
[실행 결과]
===== 가위.바위.보 3세판 게임 중 1번째 ===== 가위/바위/보 중 1개 입력>> 보 User:보 : Computer:보 "비김" User vs Computer - 0 대 0 ===== 가위.바위.보 3세판 게임 중 2번째 ===== 가위/바위/보 중 1개 입력>> 가위 User:가위 : Computer:보 "User 승" User vs Computer - 1 대 0 ===== 가위.바위.보 3세판 게임 중 3번째 ===== 가위/바위/보 중 1개 입력>> 보 User:보 : Computer:바위 "User 승" User vs Computer - 2 대 0 게임을 더 하시겠습니까?..("y/n")>>ㅛ 입력 오류! 다시 입력하세요. 게임을 더 하시겠습니까?..("y/n")>>y ===== 가위.바위.보 3세판 게임 중 1번째 ===== 가위/바위/보 중 1개 입력>> rk 입력 오류! 다시 입력하세요. ===== 가위.바위.보 3세판 게임 중 1번째 ===== 가위/바위/보 중 1개 입력>> 가위 User:가위 : Computer:바위 "Computer 승" User vs Computer - 0 대 1 ===== 가위.바위.보 3세판 게임 중 2번째 ===== 가위/바위/보 중 1개 입력>> 가위 User:가위 : Computer:가위 "비김" User vs Computer - 0 대 1 ===== 가위.바위.보 3세판 게임 중 3번째 ===== 가위/바위/보 중 1개 입력>> 바위 User:바위 : Computer:보 "Computer 승" User vs Computer - 0 대 2 게임을 더 하시겠습니까?..("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 - 1 대 2
[파이썬 Tkinter 모듈로 만든 가위바위보 게임]
가위바위보 게임 GUI-1 가위바위보 게임 GUI-2 가위바위보 게임 GUI-3 가위바위보 게임 GUI-4 구구단 게임
파이썬 기초 예제로 구구단을 게임으로 만들어보는 코딩 연습임. 구구단 게임 함수의 매개변수로 구구단 단수와 답변 제한 시간(초)을 넘겨주면 실행 게임수를 입력받아 설정하고 랜덤 하게 구
goodthings4me.tistory.com
'코딩 연습 > 파이썬 기초(예제)' 카테고리의 다른 글
구구단 게임 [파이썬기초예제] (0) 2022.04.28 진수 변환 - 2진수 변환, 8진수 변환, 16진수 변환 [파이썬기초예제] (0) 2022.04.23 bmi 계산하기 - 한국인의 체질량 지수 계산 [파이썬기초예제] (0) 2022.04.20 북마크 관리 프로그램 코딩, 엑셀 생성 관리 [파이썬기초(예제)] (0) 2022.04.17 파이썬 반복문 - 김밥 주문 계산하기 [파이썬기초(예제)] (0) 2022.04.15