방학인데 배운건 C밖에 없는 상황, 배웠으니 어딘가에는 써먹어봐야겠지요.
이것저것 생각해보다가 한번 루빅스 큐브를 콘솔 창 위에 구현시켜보기로 했습니다.
enum, include, typedef, struct, union, pointer와 array.. 같은 기본적인 것들만 다루다가,
system이라던지 Windows.h의 함수들을 다뤄보려니 인터넷이 참 큰 도움이 되는 것 같네요.
이게 현재까지 완료된 형태입니다.
명령 프롬프트를 켜면 나오는 바로 그 창 모습 그대로 하고 싶었지만, 한국어 코드 페이지에서는 확장 아스키(여기선 →←↑↓)가 출력이 되질 않아 어쩔 수 없이 저런 도스분위기 하나도 안나는 창을 쓰게 되었네요.
만들다보니 왜 로그라이크 게임들이 그렇게 복잡한 조작법을 가지고 있는 지 알것같더군요.
줄을 선택해서 상하좌우 키를 이용해 움직이려고 하면 두 번의 조작을 거쳐야 해서 오래 걸리고, 그렇다고 한번에 바로 움직이게끔 하니 필요한 키의 수가 쭉 늘어나네요.
저기까지가 67줄. 가독성을 위해 개행을 많이 해서, 정리하면 50줄 안쪽으로 될 수준입니다.
다른 파일로 빼 둔 부분까지 합하면 90여줄 정도군요.
코딩은 했지만 저 화면과는 전혀 관계없는 부분은 178줄.
3차원을 펼쳐서 2차원에 구겨넣어놓으니 도저히 반복구문을 써먹을 수가 없겠더라구요.
그 외에도 검색으로(...) Sleep()함수 등을 배워서
이런식으로 S키를 누르면 화면이 위로 죽 올라가서 다음 화면으로 넘어간다던지 하는 연출도 만들어 보았습니다.
시간이 많았다면 움짤로 만들어봤겠지만 그래봤자 영양가도 없고...
큐브를 회전시킨다던지 하는 기본적인 기능까지 제외시켜버린 담백한(?) 게임인 만큼, 하루정도 작업을 더 하면 500줄 안쪽으로 어느정도 만들어질 것 같습니다.
생각보다 별다른 작업도 없고(무언가가 필요하다면 검색을 하면 함수째로 다 나옴),
할만한 최적화도 없고(for구문 하나 더 써보려면 구조 전체를 갈아엎어야 함),
공부가 되는지도 잘 모르겠지만 재미는 있네요 ㅋㅋ...
댓글 없음:
댓글 쓰기