한 시간 만에 게임 만들기
게임도칸 지음, 김은철 외 옮김 / 영진.com(영진닷컴) / 2025년 1월
평점 :
장바구니담기



 

"출판사로부터 도서를 제공받아 작성한 리뷰입니다"


자투리 시간으로 게임을 만들어 볼 생각으로 낙하물퍼즐게임을 만들었네요. 게임을 즐겨하지 않아 여러가지 게임을 보고 이런 게임도 있다는 걸 알았네요. 가족들이 모바일로 하는 게임하는 모습을 보고 아주 쉬워 보였는데 만들어 보니 녹록치않네요. 저자는 게임도캉이구요 동영상으로 생방을 하기도 하네요. 버츄얼 스튜디오를 설치해서 코드를 입력했네요. 라이프게임, 리버시, 도트잇, 던전, 낙하물퍼즐, 전국 시대 시뮬레이션, 삼국지 등 여러 게임들이 있는데 어렸을 적 추억의 게임 테트리스가 생각나서 만들어 보았네요.

먼저 게임을 초기화하는 함수Inint를 추가하고, 간단한 화면을 그리는 함수 DrawScreen를 추가하고 싶었어요. 요즘 너무 힘들어서 심플한 것이 좋요. 함수 Init에서 호출하면 이제 게임이 시작될 때 화면이 그려져. 필드의 데이터를 작성하기 위해 크기는 FIELD_WIDTH(12),FIELD_HEIGHT(18)로 만들고, 블록이 없는 칸에 BLOCK_NONE // [3-1-1],지울 수 없는 블록이 있는 칸은 BLOCK_HARD // [3-1-2], BLOCK_MAX // [3-1-5] 블록 종류의 개수, 필드의 각 칸의 상태를 보유하는 배열 field를 선언해 필드를 그리기 위해 함수에서 화면 버퍼의 모든 칸에 반복하는 코들를 작성했네요. 1행 그릴 때마다 줄바꿈하도록 만들었어요. 낙하 블록은 I형과 L형으로 2종류, 멤버 변수의 size는 너비와 높이,pattern은 형태 데이터, 낙하 블록의 최대 너비와 높이는 매크로 BLOCK_WIDTH_MAX (4) // [2-3], BLOCK_HEIGHT_MAX (4) // [2-4]로 만들었어요. 낙하 블록을 초기화하는 부분에서 랜덤으로 형태를 설정했어요. 낙하 블록을 키보드로 조작할 수 있도록 S키를 누르면 아래로 낙하,a,d키를 누르면 좌우로 이동시킬 수 있게 만들었어요. 낙하 블록의 회전시키는 함수는 RotateBlock으로 넣고, 낙하 블록의 이동과 회전밖에 없으므로 이동 이외의 키를 누르면 회전하게 하려고 했는데 잘 안되네요. 이동 이외의 키를 누르면 낙하 블록을 회전시키는 함수를 호출하게 해줘. 게임을 실시간으로 진행시키려면 1초당 갱신 횟수의 매크로 FPS를 정의하고, 갱신 간격의 매크로 INTERVAL(1000/FPS)로 정의,블록 낙하 함수로 블록의 자동 낙하 처리가 완성되게 만들었어요. 낙하 블록과 필드의 충돌 판정 함수를 추가하고. 낙하 블록을 필드에 쌓이면 지울 수있는 블록으로 모든 칸을 반복으로 다시 표시하게 만들었어요. 낙하 블록을 리셋해 새로운 낙하 블록이 내려오게 하고 블록이 천장까지 쌓이면 게임 오버로 게임을 초기화하고 리셋하도록 했는데 쳐다보니 금방 리셋이 되네요.

자세하게 게임의 탄생을 소개해 가면서 캐릭터부터 알고리즘, 소스 파일, 코드까지 알려주니 만들어 보면서 f5를 자주 클릭하게 만드네요. 어려운 프로그램을 쉽게 접근 할 수 있도록 해 주면서 간단하게 게임 만들기를 해 볼 수 있는 기쁨도 얻으니 좋네요.





댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo