벽돌깨기 게임

개요

예전에 즐겼던 벽돌깨기 게임을 만들어 보면 좋겠다는 생각을 오래전부터 하고 있었습니다. 간단하게 기획하고 실제로 만들어 보기로 했습니다.

개발 과정

개발을 시작했을 때 어렵지 않게 구현을 할 수 있을 것이라고 생각했습니다. 일단 벽돌, 공, 막대 이 세가지 요소를 배치하고 기본적인 로직을 구현했습니다.

메인화면

그 다음 화면의 좌우, 위쪽에 벽을 만들고 공이 벽에 부딪치도록 했습니다.

첫 번째 문제

큰 문제 없이 동작할 것으로 생각하고 테스트 해보니 막대, 벽돌, 벽에 부딪칠 때 어떤 경우에 공이 튕겨 나오지 않고 벽을 따라 이동하는 경우가 있었습니다. 가만히 생각해 보니 입사각이 아주 작은 경우 그렇게 되는 것이 실제 물리 법칙에 맞았습니다. 그러나 게임에서는 진행이 불가능해져서 해결해야 할 문제였습니다.

이리저리 변경해 보다가 문득 이전에 오락실에 있었던 게임은 어떻게 동작했는지 확인해 보았습니다. 실제 물리 법칙을 따르지 않는 것을 확인했습니다.

공이 투사체이므로 ProjectileMovement 를 이용해서 구현했습니다. 공에 원래 없었는데 부자연스러운 동작을 보여 추가했습니다.

두 번째 문제

기본적인 동작은 완료되어 다양한 모양의 스테이지를 추가하는 작업을 진행했습니다. 처음에는 간단하게 코드에 추가해서 테스트 해 보았습니다. 실제 기기에 올려보니 세로 방향이라서 벽돌을 길게 배치할 필요가 있었습니다.

코드에 스테이지 정보가 있으면 나중에 수정하기가 너무 어려울 것 같아서 다른 방법을 알아보게 되었습니다.

이리저리 찾아보니 DataTable 이라는 클래스가 있었습니다. 별도의 파일에 게임에 필요한 정보를 저장해 놓고 그것을 사용할 수 있도록 해 줍니다.

스테이지 정보를 별도의 텍스트 파일로 만들고 그 정보를 읽어서 구현하는 방법으로 진행했습니다.

게임 화면

처음에 생각했던 것 보다는 개발하는데 어려웠습니다. 간단해 보이는데 그 안에서 동작하고 판단하고 처리하는 부분은 쉽지 않았습니다.

다시 한번 쉬운 것은 없고 초기에 문제가 될 것 같은 것을 미리미리 정리해 두는 것이 중요하다고 느꼈습니다.

여기에서 다운로드 받으실 수 있습니다. 광고가 포함되어 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Time limit is exhausted. Please reload the CAPTCHA.