티스토리 뷰

반응형

 

youtu.be/o1FuqSH9sb8

모든 강의 자료 : www.codingnow.co.kr/

파이썬 기초 문법을 활용한 간단한 게임을 만들어 봅니다.

여기에서 사용되는 것은 random 메소드를 import하여 난수를 가져오고

문자열 리스트(sel)를 접근하여 값을 가져오며

간단한 딕셔너리를 선언하고 이것을 키값으로 가져와 print합니다.

 

또한 if문을 사용하여 비교하며, 논리연산자(and)의 사용법을 활용해 봅니다.

while을 사용하여 조건에 따른 반복과 종료를 위한 break를 사용합니다.

 

자세한 코드 설명은 첨부된 동영상으로 확인하시면 됩니다.

 

파이썬 가위바위보 게임

소스코드입니다.
import random

sel = ['가위', '바위', '보']
result = {0: '승리했습니다.', 1: '패배했습니다.', 2: '비겼습니다.'}

def checkWin(user, com):

    if not user in sel:
       print('잘못입력하였습니다. 다시 입력하세요')
       return False

    print(f'사용자 ( {user} vs {com} ) 컴퓨터')
    if user == com:
        state = 2
    elif user == '가위' and com == '바위':
        state = 1
    elif user == '바위' and com == '보':
        state = 1
    elif user == '보' and com == '가위':
        state = 1
    else:
        state = 0
    print(result[state])
    return True


print('\n-------------------------------------------')
while True:
    user = input("가위, 바위, 보 : ")
    com = sel[random.randint(0, 2)]
    if checkWin(user, com):
        break
print('-------------------------------------------\n')

[다시하시겠습니까] 추가 버전입니다.

continue와 break를 활용하면 다음과 같이 구현할 수 있습니다.

위의 코드에서 추가된 부분입니다.

import random

sel = ['가위', '바위', '보']
result = {0: '승리했습니다.', 1: '패배했습니다.', 2: '비겼습니다.'}

def checkWin(user, com):

    if not user in sel:
       print('잘못입력하였습니다. 다시 입력하세요')
       return False

    print(f'사용자 ( {user} vs {com} ) 컴퓨터')
    if user == com:
        state = 2
    elif user == '가위' and com == '바위':
        state = 1
    elif user == '바위' and com == '보':
        state = 1
    elif user == '보' and com == '가위':
        state = 1
    else:
        state = 0
    print(result[state])
    return True

def continueComfirm():
    while True:
        user = input("다시하시겠습까? : 예, 아니요")
        if user == '예':
            return True
        elif user == '아니요':
            return False
        else:
            print("예 또는 아니요를 입력하세요.")

print('\n-------------------------------------------')
while True:
    user = input("가위, 바위, 보 : ")
    com = sel[random.randint(0, 2)]
    if checkWin(user, com):
        if continueComfirm():
            continue
        else:
            break
print('-------------------------------------------\n')

 

묵찌빠 강의 입니다.

 

https://cflab2017.tistory.com/111

 

파이썬과 C언어 기초 활용편#가위바위보 게임 응용하여 #묵찌빠 게임 만들기 2번째 #3선승제 #rando

이전 강의에 가위바위보 게임을 응용하여 묵찌빠 게임을 만들어 보았는데요. cflab2017.tistory.com/110 파이썬과 C언어 기초 활용편#가위바위보 게임 응용하여 #묵찌빠 게임 만들기#random 다른 강의자

cflab2017.tistory.com

 

[라운드 형태로 변경]

위의 다시하시겠습니까? 버전을 응용하여 라운드 개념으로 변경해 본 코드 입니다.

비교하면서 보면 좋을 겁니다. ㅎㅎ

import random

sel = ['가위', '바위', '보']
result = {0: '승리했습니다.', 1: '패배했습니다.', 2: '비겼습니다.'}

def checkWin(user, com):
    if not user in sel:
       print('잘못입력하였습니다. 다시 입력하세요')
       return False

    print(f'사용자 ( {user} vs {com} ) 컴퓨터')
    if user == com:
        state = 2
    elif user == '가위' and com == '바위':
        state = 1
    elif user == '바위' and com == '보':
        state = 1
    elif user == '보' and com == '가위':
        state = 1
    else:
        state = 0
    print(result[state])
    return True, state

def continueComfirm():
    while True:
        user = input("다시하시겠습까? : 예, 아니요")
        if user == '예':
            return True
        elif user == '아니요':
            return False
        else:
            print("예 또는 아니요를 입력하세요.")

print('\n-------------------------------------------')
round_count = 1
user_hp = 0
com_hp = 0
while True:
    print(round_count,"번째 Round")
    user = input("가위, 바위, 보 : ")
    com = sel[random.randint(0, 2)]
    check, ret = checkWin(user, com) #잘못된 값인지와 결과값을 가져온다.
    if check == True:
        if ret == 1: #결과 값에 따라 점수를 누적한다.
            com_hp += 2
        if ret == 0:
            user_hp += 2
        
        print("\n유저 HP : ",user_hp," ,컴퓨터 HP : ",com_hp)
        round_count += 1
        if(round_count > 3): #라운드를 카운트 한다.
            print("종료합니다")
            break
print('-------------------------------------------\n')
반응형