파이썬/파이썬(python) 초급

[4-6 파이썬] 가위바위보 게임 만들기

Olivia-BlackCherry 2022. 8. 12. 09:45

오늘은 가위바위보 게임을 만들어보자. 

가위바위보 규칙을 적용하되

1. 이기는 경우: 주먹 > 가위,  가위 > 보,  보 > 주먹

2. 비기는 경우: 주먹=주먹, 가위=가위, 보=보

 

컴퓨터와 가위바위보 게임을 하는 것이다. 

승부가 끝나면,

이기면 "이겼다", 지면 "졌다"라고 문장을 출력한다.

 

총 5가지 방법으로 코드를 작성해보았다.

 

여러분도 스스로 코드를 작성해보고, 

필자의 코드와 비교해보기 바란다. 

필자보다 더 좋은 코드를 작성할 가능성이 더 높다..

 

아래의 아스키아트를 이용하여 그림까지 출력해보도록 한다.

 

rock = '''
    _______
---'   ____)
      (_____)
      (_____)
      (____)
---.__(___)
'''

paper = '''
    _______
---'   ____)____
          ______)
          _______)
         _______)
---.__________)
'''

scissors = '''
    _______
---'   ____)____
          ______)
       __________)
      (____)
---.__(___)
'''

 

 

 

 

 

첫번째 방법

주먹은 0으로, 가위는 2로, 보는 5로 입력했다. 
나의 선택은 if, elif, else구문을 썼고,
컴퓨터의 선택은 랜덤 choice함수를 썼다.
random.choice(game): game이라는 리스트에 있는 요소 중 하나를 무작위로 뽑는 함수이다.

승부 가르는 로직은 별다른 복잡한 식 없이 

발생할 수 있는 모든 경우를 나열했다.

결과값은 다음과 같다.

 

 

두 번째 경우다.

아래와 같이 주먹, 보, 가위의 값을 0부터 2까지 설정했다. 

이번에는 index 개념을 적용하여 문제를 풀어보았다.

파이썬에서 index는 0부터 시작한다는 것을 유의하자.

랜덤함수에서 randint() 함수를 썼다.

random.randint(0,2): 0에서부터 2까지의 정수 중 하나를 랜덤하게 뽑는다.

논리 연산자 'and'를 사용하여 승부 가르기를 했다.

and: 모두 참일 때 참이고, 모두 거짓일 때 거짓이다.

 

if, elif, else 구문을 중첩하여 사용하여 앞의 예제보다 로직이 좀 더 복잡하다.

결괏값은 다음과 같다.

 

세 번째 경우이다. 

이번에는 두 번째 경우의 결괏값을 보기 좋게 수정해보자.

0,1,2 숫자로 하니 한눈에 이해하기가 어려우니

주먹, 보, 가위로 바꾸어 구현하자.

game이라는 리스트 안에 주먹, 보, 가위를 입력하고

computer choice와 my choice의 값을 0,1,2 인덱스로 적용하여 

주먹, 보, 가위로 출력했다.

 

결괏값은 다음과 같다. 

 

마지막으로

이번에도 결괏값을 보기 좋게 수정해보자.

아스키아트(그림)으로 표현되게끔 말이다.

코드를 조금만 수정하면 된다.

 

이번에는

hands라는 변수에 rock, paper, scissors의 그림을 리스트로 입력한다.

마찬가지로 인덱스 값으로 해당 그림을 출력한다.

결과값이다.