kangsecu's B1og

[네퓨즈 - 게임 프로그래밍 프로젝트] 본문

포트폴리오/동아리 활동

[네퓨즈 - 게임 프로그래밍 프로젝트]

Kangsecu 2017. 5. 21. 13:44

네퓨즈-게임 프로그래밍 프로젝트 보고서- 10107 강준혁

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

1. 프로젝트 이름 : H3X4G0N project

2. 개발요소 : c언어 , window, visual studio 



3. 프로젝트 진행 동기:

c언어를 활용한 게임 프로그래밍 프로젝트를 진행한다는 계획을 듣고선 바로 머릿속에 평소에 쉬는시간이나 자유시간에 즐겨하던 '테리 카바네흐' 가 개발한

'슈퍼 헥사곤 (super hexagon)' 을 c언어를 이용하여 콘솔창에서 구현 해보고 싶다는 생각이 들었습니다. 평소 c언어의 활용을 힘들어했기에, 이번 프로젝트를

통해 c언어에 대한 폭넓은 이해와 지식을 학습하고자 하였기에 조금은 힘들지도 모르는 이 게임을 구현하려고 했습니다. 물론 처음 이 게임을 기획하며

'내가 과연 이 게임을 구현할 수 있을까?' 라고 생각했지만, 그럼에도 이 프로젝트를 진행하며 얻을 수 있는 것이 많다고 판단되어 진행하게 되었습니다.

마지막으로 해당 게임을 구현 하면서 저의 c언어 활용 능력을 시험해보고 싶었고, 평소 즐기기만 하던 게임을 내가 직접 구현을 해보고 싶은 마음에 진행 하게

되었습니다.





4. 예상 프로젝트 내용:



이렇게 시작화면이 나오고, 난이도를 설정 가능하며, 원하는 난이도를 설정후 바로 실행이 가능합니다.





본 게임의 플레이 화면 입니다. 미리 설정해두었던 bgm이 실행되며 가운데 육각형 모양의 도형을 화살표 모양의 사용자가 방향키를 이용하여 회전합니다. 그리고 여섯방향으로 부터 벽이 출력되어 가운데 육각형을 향해 이동합니다. 그리고 사용자는 방향키를 이용하여 그 벽을 피하고 그렇게 최대한 죽지않고 오랫동안 버티는 게임 입니다. 또한 좌측 하단에 타이머를 통해 현재 사용자가 어느정도 아웃되지 않고 플레이 하고 있는지 확인을 시켜 줍니다.



마지막으로 이 화면은 플레이 도중 사용자의 캐릭터가 벽과 충돌하여 아웃이 되는 상황입니다. 이렇게 몇초동안 플레이 했는지가 출력이 되고

다시 실행을 할건지 아니면 메인으로 돌아 갈지를 선택이 가능하도록 할 것 입니다.





5. 프로젝트 진행 & 기간

진행 기간: 2017/04/21 ~ 2017/05/16

5-1 . 04/21 ~ 04/26 : 기본적인 초석(게임의 주제, 프로젝트 이름 , 진행 방법) 등등 기획

5-2. 04/26 ~ 04/27 : 게임의 기반이 되는 알고리즘 기획

5-3. 04/28 ~ 04/30 : 헤더파일 구현 및 시작 화면 구현, 모든 화면에 색상 구현

5-4. 05/01 ~ 05/03 : 게임 플레이 화면에 사용자 인터페이스를 구축 , 게임에 삽입할 음원파일 확보 및 삽입

5-5. 05/04 ~ 05/08 : 벽을 랜덤으로 생성하는 SpawnBlock() 함수 구축, 사용자 캐릭터 이동 코드 구현

5-6. 05/09 ~ 05/13 : 처음 시작화면에서 H3X4G0N이 아름답게 지워지는 Clear() 함수 구축, 벽이 랜덤으로 이동하게 하는 함수 MoveBlock()구축

5-7. 05/14 ~ 05/15  : 몇초 동안 플레이 했는지를 알기 위한 타이머 세팅과, 벽에 충돌할 경우 아웃되는 코드를 구현 및 아웃환경 구축

5-8. 05/16 ~ 05/16 : 동아리 내에서 발표 자료 제작(ppt) 및 시연준비






6. 실제 프로젝트 내용:



[첫 시작 화면]



위에 사진은 실제 직접 구현한 게임의 첫 실행 화면 입니다. 이렇게 초록색 배경에 민트색 색상의 H3X4G0N 이라는 프로젝트 이름(게임 이름) 과 그 밑에

제 소개인 NEFUS 10107 강준혁 이라는 문구가 출력됩니다. 이 상황에서는 아직 bgm이 나오지 않고, 아무키나 누르면 시작 이라는 문구가 출력됩니다.

그리고 이제 아무키나 누르시면 본격적으로 게임이 실행 됩니다.



[게임 실행 화면]



해당 사진은 실제로 게임을 플레이 하는 화면 입니다. 이 화면 역시 민트색 배경에 민트색의 문자열 들을 출력하여 구현 하였습니다. 그리고 이 화면에서 부터 미리 설정해둔 bgm이 실행 됩니다. 사진을 보시면 가운데 사각형 모양이 있는데 그 주변을 0 모양의 사용자 캐릭터가 회전을 할수 있습니다. 그리고 상,하,좌,우 네방향으로 부터 벽이 랜덤으로 생성되어서 가운데 사각형을 향해 이동합니다. 그 이동속도 또한 랜덤이고요. 사용자는 가운데 사각형 주변을 방향키를 이용해 자신의 캐릭터를 움직이며 다가오는 벽에 충돌하지 않게 피하는 형식 입니다. 그리고 좌측 하단에 타이머를 출력해서 현재 사용자가 얼마나 오랫동안 플레이를 하고 있는지를 알게 해 줍니다. 운이 좋지 않다면 시작하자마자 0.28초 만에 아웃이 가능합니다.



[아웃 화면]



마지막으로 이 사진은 사용자의 캐릭터가 벽에 충돌 하였을때 출력되는 화면 입니다. 화면 중앙에 OUT이라는 문자가 출력되며, 그 밑에 사용자가 얼마나 플레이를 했는지 알 수 있는 Time이 출력됩니다. 그리고 아무키나 누르면 다시 시작을 할 수 있다는 문구가 출력이 됩니다.





7. 아쉬운 점:

해당 프로젝트를 진행 하면서 가장 아쉬웠던 점은 바로 네방향에서 밖에 벽을 못 생성 시켰다는 것 입니다. 원래 기획한 게임은 여섯방향으로 부터 벽이 출력되어야 하는데 실제 구현을 한 것은 네방향 뿐이라는 점에서 매우 아쉽습니다. 그리고, 난이도 별로 맵을 각각 구성하려고 했는데 그러지 못한것도 매우 아쉽습니다.

마지막으론 벽의 생성과 이동을 모두 랜덤으로 했기에 벽이 두곳에서 한번에 오거나 이러한 요소가 구현이 안되어 재미가 조금 떨어진 것이 아쉽습니다.

p.s 저의 친구들이 제 코드를 보고 이해를 하기 힘들다는 의견이 조금 있었습니다. 그래서 코드를 난해하게 구현한 것도 아쉬운 감이 없지 않아 있습니다.



8. 느낀점:

이번 프로젝트를 진행 하면서, 처음에 프로젝트를 기획할때 예상했던 것 처럼 c언어에 대한 넓은 이해와, 많은 새로운 문법들, 함수 들을 다양하게 알게 된 것 같아서 매우 뿌듯합니다. 또한, 평소 코딩하던 것 처럼 main함수에 모든 것을 넣는것 이 아니라 각각 기능을 담당하는 함수 들을 구현하여서 main에선 호출만 해서 사용했다는 것에서 매우 새롭단 느낌이 들었습니다. 비록 처음 예상 하고 기획한 내용처럼 똑같이 구현하지는 못하였지만, 그래도 내 자신이 이런걸 만들 수 있다는 점에서 매우 뿌듯하고 자랑스러운 것 같습니다. 이제 어딜가서 c언어로 무엇을 해봤냐고 질문을 받았을때 자신있게 대답할 내용이 생겨서 기분이 좋습니다. 

하지만, 코드를 난해하게 짠다는 것이 아쉬웠습니다. 물론 이또한 앞으로의 노력으로 극복하고 더 발전할 것 입니다.

이번 프로젝트는 내 자신에게 매우 유용하고 새롭고 좋은 경험 이였던 것 같습니다.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

이상 게임 프로그래밍 프로젝트 보고서를 마치겠습니다. 감사합니다.