본문 바로가기

Programming Language/C, C++

[Snake Game] 4. 뱀과 먹이 관련 작업하기 4. 뱀과 먹이 관련 작업하기 1. Intro지난 시간까지의 코드는 단순히 하나의 점을 입력받은 방향으로 움직이는 것에 지나지 않았다. 이러한 움직임이 게임이 되기 위해선 현재 상황에 대한 정보를 처리해야 한다. 뱀의 위치, 각 몸의 좌표, 먹이의 위치, 벽의 위치, 뱀의 이동 속도, 현재 점수와 같은 것들을 다루어야 한다. 2. 맵 정보 처리하기맵의 정보를 처리하는 방법은 크게 두 가지가 있다. 첫째로, 맵의 정보를 통째로 저장하는 2차원 배열을 만들어 사용할 수 있다. 이 경우, 30*27의 큰 배열이 필요하지만 정보를 저장하고 관리하는데 매우 편하며 디버깅 할 때 확인이 편하다는 이점이 있다. 둘째로, 배열을 사용하지 않고 몸의 각 부분의 좌표와 먹이의 좌표만 저장하여 비교할 수 있다. 이 경우 첫..
[Snake Game] 3. 중간 점검, 코드 다듬기 3. 중간 점검, 코드 다듬기 1. Intro좋은 코드는 다른 사람이 그것을 보았을 때, 그리고 나중에 개발자 본인이 읽었을 때 쉽게 이해할 수 있는 코드이다. 좋은 코드를 만들기 위해 함수와 변수 이름을 정하는 규칙을 따르고, 별도의 헤더 파일을 만들고, 상수를 선언해 사용한다. 이번 시간에는 지금까지의 우리의 코드를 보다 예쁘게 다듬어보도록 하자. 2. 상수 선언상수란 변하지 않는 수이다. 수학에서 3.141592...를 π로 부르고, 2.718281828...을 e로 불러 유의미한 수로 취급한다. 개발을 하다 보면 비슷하게 유의미하면서 변하지 않는 수를 다루어야 하는 경우가 빈번히 발생한다. 이 때, 그 수가 상수임을 명시하기 위해 #define이나 const 등을 사용한다.우리의 코드에서 상수로 ..
[Snake Game] 2. 키보드로 플레이어 움직이기 2. 키보드로 플레이어 움직이기 Intro보통 키보드로 입력을 받을 때는 scanf 함수를 사용하지만, 게임의 조작키를 입력받을 경우에는 여기서 다룰 kbhit()과 getch()를 사용한다. 우리가 입력받을 키는 키보드의 상하좌우키 이다. WASD를 사용하고 싶다면 그에 맞게 적절히 고치면 된다. 입력을 받을 때 알아두어야 할 것은 입력받을 값의 ASCII 코드 값이다. 아래의 표를 잘 살펴보자. 위 아스키코드 표는 IBM Knowledge Center에서 가져왔다. 그런데 자세히 살펴보아도 방향키에 대한 코드가 보이지 않는다. 그래서 구글 검색을 통해 상:72, 하:80, 좌:75, 우:77임을 알아내었다. 왜 그런지는 여기를 참고하도록 하자. 일단 맵 출력하는 코드가 보기에 좋지 않기 때문에, 별도..
[Snake Game] 1. 맵과 플레이어 출력하기 1. 맵과 플레이어 출력하기 0. Intro최종 결과물의 모습은 대략 아래와 비슷할 것이다. ■는 맵의 테두리이고, ▲은 뱀(플레이어)이며, ♥은 먹이이다. 오른쪽에 배치된 글씨들은 현재 게임 상태를 나타내는 것으로, 기본적인 뱀게임 시스템을 모두 구현한 다음에 건드릴 부분이다. 1. 맵 출력하기맵을 출력하는 방법은 특별할 것 없이, printf 구문을 이용해 ■(키보드 한글의 'ㅁ'키를 누른 상태로 한자키를 누르면 사용할 수 있다)와 공백을 적절히 출력하는 것이다. 아래의 코드가 그것이다. #include // ■ ▲ ▼ ◀ ▶ ♥ int main() { printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n"); printf("■ ■\n"); printf("■ ■\n"); print..
[Snake Game] 0. 뱀 게임(Snake Game) 0. 뱀 게임 (Snake Game) 0. Intro 프로그래밍 언어를 효과적으로 공부하는 방법이 여럿 있겠지만, 무언가를 직접 만들면서 공부하는 것이 가장 으뜸이라 생각한다. 본인도 중학교 고등학교 다닐 때 테트리스나 에니그마 같은 것들을 코드로 작성해보며 c와 C#을 공부했다. c언어로 만들 수 있는 간단한 것들 중 가장 대표적인 것이 바로 뱀 게임이다. 앞으로 c언어로 뱀게임을 만들어 보면서 basic c language 카테고리의 글의 내용을 직접 사용해 볼 것이다. 1. 뱀 게임이란Snake game은 1970년대부터 지금까지 꾸준히 생산되고 소비되는 매우 간단하고 직관적인 게임이다. 본인의 아버지께서 1969년 출생이시고, 회사에 들어가고 나서 콘솔을 처음 접하셨다고 하니, 뱀게임의 역사가 상..