파이썬으로 배우는 게임개발

게임 개발 (1) : 퀴즈 게임

Nullsector_1 2021. 5. 22. 22:51

첫 게임으로는 간단한 퀴즈 게임을 만들었다.

 

사용자에게 준비된 문제들을 랜덤으로 보여주고, 플레이어가 답안을 입력하면 미리 정해진 답안과 비교하여

정답인지 오답인지 알려주는 게임이다.

 

먼저 퀴즈게임에 필요한 요소들은 무엇일까?

 

일단 게임을 플레이하는 플레이어는 당연히 있다고 가정한다면,

 

첫번째로 풀어야 할 문제가 있어야 하고

두번째로 그 문제에 답안이 있어야 할 것이다.

세번째로 플레이어가 답안을 입력할 수 있어야 하고

네번째로 답안과 정답을 비교하여 정답인지 오답인지를 판별할 수 있어야한다.

 

이렇게 네가지 요소를 최소한으로 한 ox퀴즈게임을 프로토 타입으로 만들었다.

 

Ver.1 o/x 퀴즈

한국인이라면 모두 풀 수 있는 문제

 

실행

 

다음엔 여기에서 몇 가지 변화를 줘보자.

내가 생각한 보완점은

 

1. 장르를 나누어 플레이어가 원하는 장르의 퀴즈를 풀 수 있도록 하는것,

2. o/x퀴즈만이 아닌 주관식과 객관식 문제들을 추가해주는 것,

3. 게임이 모두 끝났을 때, 문제를 푼 갯수와 점수를 표시해주는 것

 

이렇게 세 개의 기능을 추가해주려한다.

 

Ver.2 Quiz게임改

1. 새로운 문제집 생성

 

먼저 장르를 나누고 각 장르별 퀴즈를 생성하는데, 각각 주관식/객관식/ox 문제로 나뉘어 구성되어 있다.

처음에는 장르별로 나오는 문제들의 순서를 다 통일하고 문제의 답안도 그 순서에 맞게 구성했지만

어차피 깔끔하려고 만드는 것도 아니고, 파이썬 연습을 위해 만드는 것이니 최대한 꼬아서 만들어보자 생각했다.

 

따라서 Python의 Hash 구조를 이중으로 구성하였고,

첫 key에는 퀴즈 장르, 장르 내부의 key는 각 문제들의 종류로 사용했다.

 

2. 게임 플레이

게임 플레이에선 플레이어가 원하는 장르를 선택할 수 있도록 했고

문제를 푼 갯수만큼 점수를 획득하고 모든 문제를 푼 다음 총점을 출력하도록 했다.

 

여기서 가장 고민한 것은

객관식 문제에 어떻게 보기를 전달 할 건지에 대한 부분이었다.

 

보기를 전달하는 방법은 처음엔 문제와 동일하게 대응되는 key값을 넣은 Hash 구조를 만들려다가

일단 아주 단순하게 각 문제별로 객관식 문제가 하나이기 때문에

"객관식" 이라는 key값이 전달되면 각각 장르별로 미리 준비한 보기를 출력하도록 했다.

 

만약 문제의 수가 많아지고 객관식 문제의 수도 늘어난다면 자연스럽게 db를 사용하게 될 것 같다.

 

 

 

 

이렇게 첫번째 게임으로 퀴즈게임을 만들어보았다.

사실 책에서는 이렇게까지 나오진 않았지만 오랜만에 개인적으로 만드는 프로그램이란 느낌이라

생각보다 시간을 많이 써봤다.

 

제대로 된 게임으로 만들려면 보완해야 할 점이 아직도 산더미처럼 보이지만

생각나는대로 다 하다간 책의 진도가 못나갈 것 같아서 일단 이정도만 해야겠다.

책을 모두 본 다음에 시간이 나면 하나씩 고쳐봐야지