본문 바로가기

Studying/Python

12. miniProject(3) - Higher or Lower 게임

이번에는 무작위로 나타나는 보기 A와 B 의 인스타 팔로워 수를 비교하여 높은 것을 골라 점수를 쌓는 게임을 만들어볼 것이다. 

 

더 많은 팔로워 수를 보유한 보기를 선택하면, 기존 A와 B 항목 중 B 항목이 자동으로 새로운 A가 되고,

 

무작위로 뽑힌 새로운 항목이 B가 되어 게임이 반복 진행되게 된다. 

 

큰 구상을 먼저 해보자. 

 

가장 먼저 random으로 항목을 가져올 list로 구성된 data 파일이 준비되어야한다. 이 list는 수많은 dictionary로 구성될 것이며, key 값으로 'name', 'follower_count', 'description', 'country'가 설정될 것이다. 

 

그 다음, (1) 랜덤으로 보기 A와 B를 뽑을 함수, (2) 랜덤으로 뽑힌 보기의 format을 설정할 함수, (3) 두 보기의 팔로워 수를 추측하여 정답을 추론하는 함수와 (4) 게임 과정을 나타내는 함수가 필요하다. 

 


먼저 랜덤으로 data list에서 보기를 가져올 함수와 data format을 정하는 함수를 만들어보자. 

 

함수 getRandomAccount와 dataFormat 선언

 

random 함수를 import 하여 앞서 정의된 data에서 2개를 무작위로 가져오도록 설정한다. 

 

그리고 게임이 진행될 떄 우리에게 출력되는 문구에서 사용할 data 형식을 설정한다. 

 

우리는 data의 각 dictionary에 있는 key 값 중 'name, description, country'를 가져와 return 할 것이다. 

 

그 다음 선언할 함수는 두 보기 중에서 선택하고 결과를 설정할 함수이다. 

 

함수 checkAnswer 선언

 

checkAnswer 함수는 3개를 인자로 받을 것이다. 

 

먼저 우리가 추측해서 고를 guess, 그리고 보기 A의 followers와 B의 followers 수이다. 

 

a_followersb_followers에 해당하는 값은 게임 플레이 중 data의 'followers_countkey 에 해당하는 value 값으로 가져올 것이다. 

 

이 때, A의 팔로워 수가 B의 팔로워 수보다 크다면, 플레이어가 추측한 guess 값과 "a"를 비교하여 booleanTrue, 혹은 False 를 return 할 것이고, 반대의 경우도 마찬가지로 "b"와 비교하여 boolean 값을 반환할 것이다. 

 

이제 게임 과정을 만들어보자. 

 

함수 game 선언

 

일단 점수를 누적할 score, 게임을 계속 진행하도록 설정할 isGameContinue를 생성한다.

 

두 개의 보기에 해당하는 항목을 위에서 만든 getRandomAccount 함수를 통해 a_Account, b_Account에 할당한다. 

 

isGameContinueTrue 로 설정되어있는 동안 게임은 계속 진행되기 때문에 while 반복문을 이용한다.  

 

여기서 무작위로 설정된 두 개의 보기가 같을 경우를 방지하기 위해 먼저 설정된 B의 값을 A로 보낸다. 

 

그 후 B는 새롭게 뽑는다. ( 이 때 또다시 A와 B가 동일한 경우를 방지하기 위해 while 문을 추가한다. )

 

자, 이제 게임 실행 시 출력될 것을 설정해야한다. 

 

위에서 만든 dataFormat 함수와 무작위로 설정된 a_Account를 사용하여 vs구조를 출력한다. 

 

문제가 완성되면 이제 골라야한다. 

 

우리가 고를 값을 guess 로 받고, 각 보기의 팔로워 수를 key 'follower_count' 를 통해 가져와 앞서 만들어준

checkAnswer 함수에 3개의 인자로 넣는다. 

 

그렇게 되면 isCorrectTrue, 혹은 False 값이 지정될 것이고, 각 결과에 맞게 점수를 추가하고 게임을 이어가거나 게임을 끝내고 최종 점수를 출력하게 만들자.