이번엔 일련의 참, 거짓 퀴즈를 풀고 정답인지 아닌지 나타내는 프로그램을 작성해보기로 하자.
이번엔 파일을 4개로 구분해서 진행하자.
먼저 quiz 내용을 저장해놓을 data.py을 만든다.
data.py에는 우리가 main.py에서 다룰 question_data 라는 list가 여러 dict 형태로 중첩되어 있다.
여기서 text에 해당하는 value값으로 질문을, answer에 해당하는 value 값으로 답변을 가져올 것이다.
그 다음은 question_model.py 을 만들 것이다.
이 question_model.py에서는 data.py에서 text와 answer을 가져와 질문 형식을 만들어준다.
이제 실제 게임이 진행되는 과정을 다룬 quiz_brain.py를 만들어줄 것이다.
QuizBrain 클래스는 인자로 question_list를 받고, 속성 question_number, score를 각각 0으로 설정한다.
여기에 3개의 함수를 선언하는데,
다음 문제가 있는지 판단하여 퀴즈 진행을 결정하는 함수, 퀴즈 번호와 정답 여부 및 다음 퀴즈를 표현하는 함수,
그리고 입력한 정답이 맞는지 판단하는 함수 이렇게 3개이다.
정답 여부를 확인하는 check_answer 함수의 경우 인자로 내가 입력한 답과 실제 정답을 받아 비교하고
QuizBrain 속성으로 설정한 score에 점수를 추가하는 것까지 작성한다.
이제 실제 퀴즈를 진행하는 main.py를 작성한다.
앞 단계에서 만들었던 파일들에서 Question, quesion_data, QuizBrain 을 각각 불러온다.
그리고 QuizBrain은 list를 인자로 받고, 우리가 quetion_data에서 가져올 퀴즈 목록을 저장할 question_bank를 빈 list로 선언한다.
for 반복문을 통해 question_data의 text, answer에 해당하는 값을 가져와 Question 함수에 넣어 이를 new_question 변수에 할당하고, 이를 빈 list 였던 question_bank에 append한다.
이제 question_bank 가 채워진 list 로 준비되었기에 이를 QuizBrain에 인자로 넘기고 이를 quiz 라는 변수에 저장한다.
그렇다면 QuizBrain의 method였던 still_has_question와 next_question을 그대로 quiz가 사용할 수 있게 된다.
마무리로 퀴즈가 다 종료되면 최종 점수도 출력해준다.
'Studying > Python' 카테고리의 다른 글
16. miniProject(7) - 거북이 경주 게임 (feat. turtle) (0) | 2022.07.28 |
---|---|
15. miniProject(6) - hirst spot drawing (feat. turtle) (0) | 2022.07.24 |
13. miniProject(4) - 커피 자판기 (0) | 2022.07.24 |
12. miniProject(3) - Higher or Lower 게임 (0) | 2022.07.14 |
11. miniProject(2) - 랜덤 숫자 맞추기 게임 (0) | 2022.07.14 |