파이 게임(Pygame)을 활용하여 스도쿠를 개발하다

파이 게임(Pygame)을 활용하여 스도쿠를 개발하다 파이 게임(Pygame)을 활용하여 스도쿠를 개발하다

필자는 게임을 매우 좋아합니다. 장르를 불문하고 뭐든지 하는 편입니다. 2004년경 필자가 미취학 아동이었을 때 사촌동생이 컴퓨터 게임을 하는 모습을 계속 보면서 나도 하고 싶은 마음이 굴뚝같았지만, 막상 하게 해달라고 말할 수는 없었습니다. 그 모습을 보던 아버지가 집에 오자마자 당시 기준으로 사양이 우수한 컴퓨터를 사주셨습니다. 처음에는 플래시 게임을 하다가 초등학교에 입학하기 전에 온라인 게임을 하다가 한 번쯤은 직접 게임을 만들고 싶다는 생각도 들었습니다. 어쨌든 그렇게 시간을 보내면서 어느덧 중학교에 입학하기 직전 즈음에 우연히 방과 후 수업에서 코딩을 공부하고 직접 게임을 만들어보겠다는 의지가 불타올랐습니다. 다만 클라이언트의 모니터와 같은 디스플레이 장치에서 시각적으로 출력되는 요소(그래픽, 물리엔진 등)를 구현하는 데 필요한 지식에 대한 이해도는 상당히 떨어졌기 때문에 시중에 유통되던 게임 중 합법적으로 서버를 구축하고 필요한 요소 중 일부만 코딩을 통해 직접 개발했습니다. 블로그를 운영하면서 게임 개발에 대한 내용은 크게 다룬 경험이 없기 때문에 이번 포스팅에서는 파이썬의 게임 개발 관련 모듈로 알려진 파이게임(Pygame)을 활용하여 스도쿠 게임을 개발하도록 하겠습니다. 필자는 게임을 매우 좋아합니다. 장르를 불문하고 뭐든지 하는 편입니다. 2004년경 필자가 미취학 아동이었을 때 사촌동생이 컴퓨터 게임을 하는 모습을 계속 보면서 나도 하고 싶은 마음이 굴뚝같았지만, 막상 하게 해달라고 말할 수는 없었습니다. 그 모습을 보던 아버지가 집에 오자마자 당시 기준으로 사양이 우수한 컴퓨터를 사주셨습니다. 처음에는 플래시 게임을 하다가 초등학교에 입학하기 전에 온라인 게임을 하다가 한 번쯤은 직접 게임을 만들고 싶다는 생각도 들었습니다. 어쨌든 그렇게 시간을 보내면서 어느덧 중학교에 입학하기 직전 즈음에 우연히 방과 후 수업에서 코딩을 공부하고 직접 게임을 만들어보겠다는 의지가 불타올랐습니다. 다만 클라이언트의 모니터와 같은 디스플레이 장치에서 시각적으로 출력되는 요소(그래픽, 물리엔진 등)를 구현하는 데 필요한 지식에 대한 이해도는 상당히 떨어졌기 때문에 시중에 유통되던 게임 중 합법적으로 서버를 구축하고 필요한 요소 중 일부만 코딩을 통해 직접 개발했습니다. 블로그를 운영하면서 게임 개발에 대한 내용은 크게 다룬 경험이 없기 때문에 이번 포스팅에서는 파이썬의 게임 개발 관련 모듈로 알려진 파이게임(Pygame)을 활용하여 스도쿠 게임을 개발하도록 하겠습니다.

1. 파이게임(Pygame) 개요 파이게임(Pygame)은 이전 게시물에서 자주 다루었던 프로그래밍 언어 파이썬의 오픈소스 라이브러리로 간단한 2D 게임을 개발할 때 활용하기에 적합하며 그래픽 자체는 이미지 파일을 로드하고 텍스트는 기본적인 요소(글꼴, 크기, 색상 등) 정도 다듬을 수 있으며 사운드까지 출력할 수 있습니다. 시중에서 유통되는 게임에 비해 퀄리티는 상당히 낮아 보이지만 무엇이든 기초가 가장 중요한 만큼 게임 개발에 관심을 갖고 학습을 하려는 마음이 있다면 파이게임과 비교적 가벼운 기술부터 익혀가는 것이 좋습니다. 이번 프로젝트에서는 파이 게임을 기반으로 스도쿠를 개발해 보고 싶습니다. 1. 파이게임(Pygame) 개요 파이게임(Pygame)은 이전 게시물에서 자주 다루었던 프로그래밍 언어 파이썬의 오픈소스 라이브러리로 간단한 2D 게임을 개발할 때 활용하기에 적합하며 그래픽 자체는 이미지 파일을 로드하고 텍스트는 기본적인 요소(글꼴, 크기, 색상 등) 정도 다듬을 수 있으며 사운드까지 출력할 수 있습니다. 시중에서 유통되는 게임에 비해 퀄리티는 상당히 낮아 보이지만 무엇이든 기초가 가장 중요한 만큼 게임 개발에 관심을 갖고 학습을 하려는 마음이 있다면 파이게임과 비교적 가벼운 기술부터 익혀가는 것이 좋습니다. 이번 프로젝트에서는 파이 게임을 기반으로 스도쿠를 개발해 보고 싶습니다.

2. 개발 툴 UI 디자인과 같은 요소에 대해 별로 신경 쓰지 않는다면 파이 게임을 활용한 스도쿠 개발에는 특별히 이미지나 사운드까지는 필요하지 않습니다. 다만 파이썬과 파이게임 라이브러리(모듈)만 설치하면 됩니다. 개발에 활용할 라이브러리는 pygame과 플레이타임을 표시하는 과정에서 사용하는 time인데, time은 Python 설치 시 기본적으로 함께 설치되는 내장 라이브러리이기 때문에 명령 프롬프트에서 아래 명령어를 통해서 Pygame만 설치하면 됩니다. 2. 개발 툴 UI 디자인과 같은 요소에 대해 별로 신경 쓰지 않는다면 파이 게임을 활용한 스도쿠 개발에는 특별히 이미지나 사운드까지는 필요하지 않습니다. 다만 파이썬과 파이게임 라이브러리(모듈)만 설치하면 됩니다. 개발에 활용할 라이브러리는 pygame과 플레이타임을 표시하는 과정에서 사용하는 time인데, time은 Python 설치 시 기본적으로 함께 설치되는 내장 라이브러리이기 때문에 명령 프롬프트에서 아래 명령어를 통해서 Pygame만 설치하면 됩니다.

파이게임 설치 파이게임 설치 파이게임 설치 파이게임

 

3. 개발 과정 개발 과정에서 스크롤이 너무 긴 것을 방지하기 위해 보드 초기 상태는 랜덤이 아닌 최초 입력한 코드에 맞게 출력되도록 설정했고, 네이버 블로그의 소스코드 창은 최대 5000자까지 입력할 수 있어 나눠 작성했습니다. 작성한 코드와 객체의 기능은 주석과 코드 자체에 대한 영어 단어를 여러 개 읽으면 각각 실행하는 기능을 쉽게 인지할 수 있을 정도인데, 기본적으로 Pygame은 게임을 실행했을 때 출력되는 창의 해상도와 제목에 대한 설정이 반드시 필요합니다. 이와 관련된 내용은 메인 함수로 처리하였으며, 추가로 스도쿠에서 필요한 조작키도 동일한 함수로 처리하였습니다. 그 외에는 시각적인 요소와 게임 플레이를 진행하는 과정에서 필요한 열과 행에 대한 규칙 등을 처리하는 함수와 다른 값을 넣거나 클리어를 했을 때 이를 알릴 수 있는 함수를 추가했습니다. 또한, 잘못된 값을 넣었을 때 나오는 알림은 행과 열 중 중복된 숫자가 있을 경우에만 출력되도록 하였습니다. 그래야 게임 난이도가 너무 쉬워지니까요. 3. 개발 과정 개발 과정에서 스크롤이 너무 긴 것을 방지하기 위해 보드 초기 상태는 랜덤이 아닌 최초 입력한 코드에 맞게 출력되도록 설정했고, 네이버 블로그의 소스코드 창은 최대 5000자까지 입력할 수 있어 나눠 작성했습니다. 작성한 코드와 객체의 기능은 주석과 코드 자체에 대한 영어 단어를 여러 개 읽으면 각각 실행하는 기능을 쉽게 인지할 수 있을 정도인데, 기본적으로 Pygame은 게임을 실행했을 때 출력되는 창의 해상도와 제목에 대한 설정이 반드시 필요합니다. 이와 관련된 내용은 메인 함수로 처리하였으며, 추가로 스도쿠에서 필요한 조작키도 동일한 함수로 처리하였습니다. 그 외에는 시각적인 요소와 게임 플레이를 진행하는 과정에서 필요한 열과 행에 대한 규칙 등을 처리하는 함수와 다른 값을 넣거나 클리어를 했을 때 이를 알릴 수 있는 함수를 추가했습니다. 또한, 잘못된 값을 넣었을 때 나오는 알림은 행과 열 중 중복된 숫자가 있을 경우에만 출력되도록 하였습니다. 그래야 게임 난이도가 너무 쉬워지니까요.

 

 

 

 

4. 게임 개발에 대한 견해 필자가 이전에 했던 게임 개발은 이미 완성되어 있던 게임에 추가적인 기능을 개발하는 것이 전부였습니다. 건축으로 치면 리모델링이나 보완 같은 느낌이죠. 완성된 게임에 추가적인 기능을 개발하는 것은 비교적 어렵지 않지만, 특별한 기반 없이 기획 단계부터 게임 개발까지 모든 과정을 혼자서 수행한다는 것은 매우 어려운 일입니다. 당장 위스독만 봐도 이전에 진행하던 데이터 시각화나 크롤링 개발, 웹사이트 개발 등에 비해 들어가는 코드도 복잡하고 별다른 언급은 없었지만 필자도 직접 개발하면서 많은 버그가 발생했습니다. 스도쿠의 룰이 깨지는 변수가 많았거든요. 그렇기 때문에 게임 개발에 대해 관심을 갖고 학습을 하려는 목적이 취업처럼 무거운 내용이라면 여러 가지로 잘 살펴보는 것이 좋습니다. 4. 게임 개발에 대한 견해 필자가 이전에 했던 게임 개발은 이미 완성되어 있던 게임에 추가적인 기능을 개발하는 것이 전부였습니다. 건축으로 치면 리모델링이나 보완 같은 느낌이죠. 완성된 게임에 추가적인 기능을 개발하는 것은 비교적 어렵지 않지만, 특별한 기반 없이 기획 단계부터 게임 개발까지 모든 과정을 혼자서 수행한다는 것은 매우 어려운 일입니다. 당장 위스독만 봐도 이전에 진행하던 데이터 시각화나 크롤링 개발, 웹사이트 개발 등에 비해 들어가는 코드도 복잡하고 별다른 언급은 없었지만 필자도 직접 개발하면서 많은 버그가 발생했습니다. 스도쿠의 룰이 깨지는 변수가 많았거든요. 그렇기 때문에 게임 개발에 대해 관심을 갖고 학습을 하려는 목적이 취업처럼 무거운 내용이라면 여러 가지로 잘 살펴보는 것이 좋습니다.

5. 마무리로 이번 게시물에서 파이게임(Pygame) 라이브러리를 활용해 만든 스도쿠는 이전과 마찬가지로 필자의 깃허브 리포지터리에 업로드하였으니 참고하시기 바랍니다. 5. 마무리로 이번 게시물에서 파이게임(Pygame) 라이브러리를 활용해 만든 스도쿠는 이전과 마찬가지로 필자의 깃허브 리포지터리에 업로드하였으니 참고하시기 바랍니다.

깃허브 – woong980623/ PygameGitHub.github.com 로 계정을 생성하여 woong980623/Pygame 개발에 기여하다 깃허브 – woong980623/PygameGitHub.github.com 로 계정을 생성하여 woong980623/Pygame 개발에 기여하다

그러면 이상으로 파이게임(Pygame)을 활용하여 스도쿠 개발하기, 포스팅은 이것으로 끝입니다. 그러면 이상으로 파이게임(Pygame)을 활용하여 스도쿠 개발하기, 포스팅은 이것으로 끝입니다.

 

error: Content is protected !!