강의/C언어 게임 만들기 7

C언어로 게임 만들기 2. 시분할 (3) 시분할 구현, (4) 키 입력 함수 바꾸기

C언어로 게임 만들기 2. 시분할 (3) 시분할 구현, (4) 키 입력 함수 바꾸기 반갑습니다. 이번 강의에서는 지난 강의에서 만들었던 기초적인 게임 구조 위에 시분할을 구현하고 적용해 보도록 하겠습니다. ​게임에 시분할을 적용하려면 어떻게 해야 할까? 시분할이 적용된 전체 코드를 보기 전, 대략적인 구조를 먼저 예상해 봅시다. 화면을 업데이트하고, 키 입력을 받고, 여러 정보들을 출력하는 루틴이 있어야 하겠죠. 이를 간단하게 표현해 보겠습니다. while (...) { updateScreen(); getInput(); printPlayerInfo(); ... } 그러나 여기에서 문제가 발생하게 됩니다. 우리가 지금껏 써 왔던 키 입력 함수는 사용자가 키를 누르기 전까지 무한정 대기하거나, 키를 누르더라..

C언어로 게임 만들기 2. 시분할 (2) 필자가 만든 프로그램

C언어로 게임 만들기 2. 시분할 (2) 필자가 만든 프로그램 반갑습니다. 이번 강의에서는 조금 쉬어 가는 뜻으로 필자의 초등학생 시절 프로그램을 분석해 볼 것입니다. 이를 통해 잘못 구현된 게임의 예와 시분할의 중요성에 대해 알아보도록 하겠습니다. ​필자가 약 8년 전에 만들었던 프로그램 필자가 초등학생이던 시절, C언어를 사용하여 처음으로 슈팅 게임을 만들어 보았습니다. 아무 것도 몰라 기분 내키는 대로 키보드를 두드렸던 기억이 납니다. 그때 짰던 저의 코드를 요약하여 공개합니다. ... int main(void) { ... while (1) // 게임 시작 { input = getch(); // 키 입력받기 ... gotoxy(x, y); printf("O"); // 플레이어 출력 ... ex = ..

C언어로 게임 만들기 2. 시분할 (1) 시분할이란?

C언어로 게임 만들기 2. 시분할 (1) 시분할이란? 반갑습니다. 이번 강의에서는 슈팅 게임을 개발할 때 필수적으로 구현해야 할 시분할 기법에 대해 다룰 것입니다. 시분할은 무엇이며, 왜 쓸까? 우선 시분할이 무엇인지 알아야겠죠? 쉬운 예를 들어 봅시다. 0.3초마다 ‘A’를 출력하고, 0.4초마다 ‘B’를 출력하는 작업을 동시에 수행하는 프로그램을 작성해야 합니다. 이 때 여러분은 어떻게 코드를 작성할 것인가요? while (true) { printf("A"); Sleep(300); // usleep(300000); printf("B"); Sleep(400); } 이런 코드를 작성했다고 가정합시다. 분명히 'A'를 출력하는 부분과 'B'를 출력하는 부분을 모두 작성하긴 했습니다. 문제는 두 개의 작업이..

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (2) 플레이어 움직이기

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (2) 플레이어 움직이기 반갑습니다. 이번 강의에서는 키를 눌러 플레이어를 움직이는 방법에 대해 설명하겠습니다. 플레이어를 움직이려면? 먼저 플레이어를 움직이는 간단한 로직을 알아봅시다. 1. 키를 입력받는다. - w, s, a, d 등 조작 키를 입력받아야 합니다. 2. 출력되었던 플레이어를 지운다. - 새로운 위치에 플레이어가 출력될 때 잔상이 생기는 것을 막습니다. 3. 플레이어의 위치를 조사한다. - 현재 플레이어의 좌표가 어디인지 조사해야 합니다. 4. 플레이어의 위치를 제한 범위 내에서 옮긴다. - 플레이어의 좌표를 조사한 후, 화면을 벗어나지 않게 좌표를 옮깁니다. 5. 새 위치에 플레이어를 출력한다. 위의 다섯 가지만 구현하면 플레이어를..

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (1) 기초 함수들

C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (1) 기초 함수들 반갑습니다. 본격적인 첫 강의입니다. 1장에서는 윈도우 콘솔 게임을 만들 때 쓰이는 기초 함수의 구현과, 플레이어를 움직이는 방법에 대해 설명합니다. 그중 (1)은 가장 중요한 기초 함수들에 대한 내용입니다. gotoxy() 함수 우리가 만드는 게임은 텍스트 모드에서 돌아갑니다. 플레이어를 움직이라는 명령을 내리면, 먼저 터미널 위의 커서가 이동하고 그 위에 플레이어를 출력하게 됩니다. 이때, 커서의 위치를 지정된 좌표로 옮기는 함수가 gotoxy() 함수입니다. gotoxy(x좌표값, y좌표값); 의 형태로 사용합니다. // WINAPI 버전 void gotoxy(int x, int y) { COORD CursorPosition ..

C언어로 게임 만들기 0. 개발 환경 설정하기

C언어로 게임 만들기 0. 개발 환경 설정하기 반갑습니다. 본격적으로 시작하기 전, 개발 환경을 설정해 봅시다. 권장하는 환경 본 강의는 윈도우 환경을 사용합니다 (필수는 아님). 앞으로 나올 강의의 코드에서, 특정 기능 (이를테면 좌표 이동)을 구현하기 위해 Windows API의 함수를 호출하거나 Turbo C에서 유래된 헤더를 사용하는 부분이 있습니다. 이 부분은 맥이나 리눅스에서는 실행되지 않습니다. 그러나 특수 함수를 사용하지 않고도 구현할 수 있는 기능이라면, 최대한 맥이나 리눅스 터미널용 대체 함수도 함께 제공할 것입니다. 사용할 개발툴로는 Visual Studio 2019 Community를 권장합니다. 그러나 더 익숙한 개발툴이나 컴파일러가 있다면 대체해도 됩니다. Visual Studi..

C언어로 게임 만들기 - 시작

반갑습니다! C언어를 활용하여 간단한 윈도우 콘솔용 게임을 제작하는 방법을 알아봅시다. 기본적으로 저의 예전 블로그에 올렸던 강의를 재구성하고 오류를 고쳐 재업로드할 예정입니다. 강의가 아직 완결되지 않았으므로 남은 부분은 이곳에서 완성할 것입니다. blog.naver.com/PostList.nhn?blogId=moon44432&from=postList&categoryNo=175 에서 아직 옮기지 못한 부분을 미리 읽어볼 수 있습니다. 간단한 강의 소개 C언어를 이용하여 텍스트 터미널(윈도우 콘솔 등) 상에서 실행되는 간단한 탑뷰 슈터 게임을 만들어 봅시다. 강의 순서 0. 개발 환경 설정하기 1. 기초 & 플레이어 움직이기 ​(1) 기초 함수들 (2) 플레이어 움직이기 2. 시분할 ​(1) 시분할이란?..

1