(CGP) 1장. C언어

고고 유튜브 동영상 강의 주소

 

(1) http://youtu.be/k6_o6cShEvo

 

여기서 소개하는 C언어는 앞으로 제작하게 되는 게임에서 사용된 C언어 입니다.

즉 C언어로 게임프로그래밍을 하기 위해서 C언어 전체를 알고 시작할 필요가 없음을 알려 드립니다.

 

처음에 C로만 프로젝트를 생성하여 프로그래밍하므로 Visual Studio로 생성하는 방법에 대해 설명하고 있습니다.

그리고 게임 제작에 필요한 C언어 문법의 간략한 내용만을 설명하므로 기존에 C언어 책이 있는 학생은 그 내용만을 찾아서 보면 됩니다.

  

 

 

※ 준비사항

 

1) Visual Studio 2010

   되도록 Visual Studio 2010으로 프로그래밍하시는 것이 좋습니다.

   Visual Studio 2010 Express로 설치하시는 분이 계신데 사운드 출력할 때 약간의 문제가 있을 수 있습니다.

   아무래도 Visual Studio 2010 체험판이므로 프로그래밍에서 제한 사항이 생각외로 많습니다.

 

2) 열정부글부글을 준비하세요.  

 

자 그러면 시작해 보겠습니다. (동영상은 유튜브를 통해 제공하고 있습니다.)

 

3) 전체 소스 나우캠퍼스의 다운로드 게시판에서 비주얼 스튜디오 버전별로 받으실 수 있습니다.

 

01 프로젝트 생성

 

C언어를 이용하여 프로그래밍을 하기 위해서는 기본적으로 Visual C++ 6.0 또는 Visual Studio 2008, Visual Studio 2010 중에

하나는 있어야 한다.

이와 같은 프로그래밍 툴에서 맨 처음 프로그래밍을 하기 위해서는 먼저 프로젝트를 만들어야 한다이때 생성되는 프로젝트

 파일에는 각종 링크 정보와 컴파일 정보 그리고 소스 정보 등이 들어 있다실제 프로그래밍은 프로젝트 안에 새롭게 생성된

파일에 작성하게 된다.

 

이와 같은 과정이 프로그래밍 툴에 따라서 약간의 차이가 있으므로 C언어를 학습하기 전에 이 과정을 먼저 살펴보도록 하자.

이제까지 Visual C++ 6.0을 사용해 왔다면 이번 기회에 Visual Studio 2008 이상의 툴을 사용하여 최신의 툴 환경에서 안정적인

프로그래밍을 하도록 하자.

 

 

■ 생성 순서

 

프로젝트 생성 순서는 Visual C++ 6.0과 Visual Studio 2008, Visual Studio 2010 두 가지 형태로 나눠서 살펴보겠다.

 

Visual C++ 6.0

 

① Visual C++ 6.0에서 프로젝트를 생성하기 위해 ‘File’에서 ‘New’를 클릭한다.

 

 

[그림 1-1] 프로젝트를 생성하기 위한 New 메뉴 선택

 

② 아래 [그림 1-2]의 대화 창에서 상단의 Projects 탭을 클릭하면 Visual C++ 6.0에서 생성할 수 있는 프로젝트 목록이

나타난다.

Projects 탭의 왼쪽에 있는 목록에서 ‘Win32 Console Application’ 항목을 클릭하고 오른쪽 상단의 ‘Project name’

생성하려는 프로젝트 이름을 입력한다.

 

[그림 1-2] 프로젝트 생성을 위한 대화 창

 

‘Location’ 에 프로젝트를 생성할 경로를 입력하는 방법에는직접 입력하는 방법과 을 클릭한 후 아래 [그림 1-3]

'Choose Directory' 대화 창에서 경로를 선택하는 방법이 있다.

 

 

[그림 1-3] 프로젝트를 생성하기 위한 경로 설정

 

③ Visual C++ 6.0은 프로젝트 생성 외에 다양한 형식의 소스 파일을 생성하게 해 준다.

그중에서 전형적인 프로그래밍을 하기 위해서는 'An empty project' 항목을 선택해야 한다이와 같이 하는 이유는

다른 항목들은 프로젝트에 C++ 소스 파일을 자동으로 생성하기 때문이다이 과정이 끝나면 하단의 ‘Finish’ 버튼을

클릭하고 다음 단계로 진행한다.

 

[그림 1-4] 비어 있는 프로젝트 생성

 

④ 아래의 [그림 1-5]는 이제까지 진행해 온 모든 단계에 대한 최종 승인을 하는 단계이다만약 이전 단계로 돌아가

다른 선택을 하려면 'Cancel' 버튼을 누르면 된다.

 

[그림 1-5] 프로젝트 생성을 최종 승인

 

⑤ 프로젝트가 최종 생성되었다.

프로젝트 생성을 확인하기 위해서 [그림 1-6]과 같이 왼쪽 하단의 ‘File View’ 탭을 클릭하여 프로젝트에 포함된

여러 폴더를 확인해 보자.

 

 

[그림 1-6] 프로젝트의 기본 폴더

 

 

 

Visual Studio 2008과 Visual Studio 2010

 

① Visual Studio 2008과 Visual Studio 2010의 메뉴는 한글화가 되어 있으며프로젝트를 생성하는 방법은 Visual C++ 6.0

크게 차이가 없다.

'파일(F)'에서 새로 만들기(N)’을 선택하면 아래 [그림 1-7]과 같이 프로젝트(P)’ 항목이 나오는데 이 메뉴를 선택하여

프로젝트 생성을 시작한다.

 

 

[그림 1-7] 프로젝트 생성 메뉴

 

② Visual Studio 2008과 Visual Studio 2010에는 언어 외에 다양한 언어의 프로젝트를 선택할 수 있다. C 프로젝트를

생성하기 위해 아래 [그림 1-8]과 같이 프로젝트 형식(P)’ 목록에서 'Visual C++’을 선택하면 하단에 세부 항목이 펼쳐진다.

이 세부 항목에서 'Win32'를 선택한 후에 오른쪽 '템플릿(T)'에서 'Win32 콘솔 응용 프로그램'을 선택한다.

 

[그림 1-8]의 하단을 보면 Visual C++ 6.0과 같이 프로젝트 이름과 경로를 설정하게 되어 있으며 솔루션용 디렉터리 만들기

체크 박스는 선택하지 않는다.

 

[그림 1-8] 프로젝트 생성에 관한 기본 설정

 

③ ‘Win32 응용 프로그램 마법사 시작’ 단계에서 하단의 다음>’ 버튼을 클릭하여 프로젝트의 형식을 설정한다.

 

[그림 1-9] 프로젝트 형식 확인

 

④ Win32 응용 프로그램 설정의 추가 옵션 부분에 있는 빈 프로젝트의 체크 박스를 선택하고 마침’ 버튼을 클릭하면

프로젝트가 생성된다.

 

 

⑤ [그림 1-11]은 프로젝트가 생성된 최종 화면이다.

프로젝트 생성을 확인하기 위해 왼쪽 하단의 솔루션 탐색기’ 탭을 클릭하면 아래와 같은 화면이 출력된다.

이 화면은 Visual studio 2008과 Visual studio 2010에서 모두 동일하다.

 

 

[그림 1-11] 프로젝트의 기본 폴더

 

 


 

02 소스 파일 생성

 

앞서 생성한 프로젝트의 생성이 프로그래밍을 위한 기본 환경을 만든 것이라면 소스 파일의 생성은 실제 C언어를 작성하기

 위한 파일을 생성하는 것이다.

소스 파일은 프로젝트 안에 생성이 되는데 생성하는 파일의 확장자에 따라 또는 C++ 컴파일러가 동작한다.

그 예로, C 컴파일러는 소스 파일의 확장자가 *.c 또는 *.C일 때만 동작하며 확장자가 *.cpp 또는 *.CPP 이면

C++ 컴파일러가 동작을 한다.

현재 우리는 C언어만으로 프로그래밍을 하는 것이므로 소스 파일의 확장자는 *.c 로 지정하여 생성한다.

이제 소스 파일의 생성 순서를 각 프로그래밍 툴별로 살펴보도록 하자.

 

■ 소스 파일의 생성 순서

 

Visual C++ 6.0

 

① 프로젝트를 생성한 후에 왼쪽의 Workspace창에서 FileView 탭을 클릭한다.

 

 

[그림 1-12] FileView 탭 선택

 

② 메인 메뉴에서 File을 클릭하고 New 메뉴를 선택한다.

 

[그림 1-13] New 메뉴 선택

 

③ 아래 [그림 1-14]의 New 창에서 Files 탭을 클릭한 후에 C++ Source Files 를 선택한다.

그리고 오른쪽의 File 란에 생성할 파일명에 확장자 c를 붙여 입력하고 OK 버튼을 클릭한다이때 주의할 점은파일명에

확장자 c를 반드시 붙여야 한다만약 파일명에 확장자 c를 붙이지 않으면 자동적으로 확장자는 cpp가 되어

C++ 컴파일러가 동작하게 된다.

 

[그림 1-14] 소스 파일 생성을 위한 대화 창

 

④ 왼쪽 Workspace창의 FileView 탭을 선택하고 Source Files 폴더를 클릭하여 생성된 파일을 확인한다.

 

[그림 1-15] 생성된 소스 파일

 

Visual Studio 2008과 Visual Studio 2010

 

① 프로젝트를 생성한 후에 아래 [그림 1-16]과 같이 툴의 왼쪽에서 있는 솔루션 탐색기를 선택하고 프로젝트명을

클릭한다프로젝트 안에는 리소스 파일 폴더와 소스 파일 폴더그리고 헤더 파일 폴더가 있다.

그 중에서 소스 파일 폴더를 클릭한 후에 마우스의 오른쪽 버튼을 클릭하여 추가 메뉴 안에 있는 새 항목(W)

선택한다.

 

 

[그림 1-16] 소스 파일을 생성하기 위한 대화 창 띄우기

 

② 새 항목 추가 대화창의 오른쪽 템플릿(T) 목록에서 C++ 파일(.cpp) 항목을 선택하고 하단의 이름(N)에 생성할

소스 파일명과 확장자 c를 입력하고 추가(A) 버튼을 클릭한다.

 

[그림 1-17] c 파일 생성에 대한 설정

 

여기서도 주의할 점은 파일명에 확장자 c를 붙여야 한다만약 확장자 c를 붙이지 않으면 cpp가 되어 C++ 컴파일러가

동작하게 된다.

 

③ 솔루션 탐색기 탭을 선택하고 소스 파일 폴더에 생성된 파일을 확인한다. 

 

[그림 1-18] 생성된 파일 확인

 

 

 


 

03 C언어

 

일반적인 C언어 문법책을 보면 상당히 많은 C언어 키워드(keyword)를 설명하고 있지만 그중 실제 사용되는 것은

아래 [표 1-1]과 같다.

 

 

 구분

키워드 

 데이터형과 관련

 char, int, float, unsigned, struct, typedef

 반복문

 for, while

 분기문

 if, else, switch, case, default,

 기타

 break, continue, return, sizeof, enum

 

 

[표 1-1] C언어 키워드(keyword)

 

위의 [표 1-1]은 앞으로 제작하게 될 게임 프로그래밍에 사용되는 C언어 키워드이며 실무에서도 이 정도가 사용된다.

중요한 것은 이 키워드를 얼마나 잘 활용하는가에 달려 있다.

이것은 프로그래밍 능력과 연관된다고 해도 과언이 아니다.

 

만약 [표 1-1]의 내용을 어느 정도 알고 있다면 이 책과 함께 게임 프로그래밍을 시작하는데 별 무리가 없을 것이다.

진행하다가 모르는 문법은 그때마다 찾아가면서 하면 된다.

실무에 있는 프로그래머들도 이렇게 프로그래밍을 시작하고 진행한다.

이것을 기억하자우리는 프로그래밍을 하기 위해서 C언어 문법을 배우는 것이지 C언어 문법을 위해서 C언어를

공부하는 것이 아니라는 것을 말이다.

이점을 기억하고 C언어를 바라본다면 아마도 많은 부담감이 줄어들었을 것이라 생각한다.

 

C언어에서 포인터는 상당히 중요한 부분을 차지한다포인터는 메모리 사용을 자유롭게 해줄 뿐만 아니라 변수를

자유로이 다룰 수 있게 해준다.

그러므로 포인터의 개념과 역할에 대해서는 반드시 이해하고 있어야 하지만 이 책을 따라 가다보면 이 부분도

자연스럽게 해결되므로 포인터에 대해 미리 두려워하지 말자.

그러면 복습 차원에서 [표 1-1]의 키워드를 사용하는 방법에 대해 살펴보도록 하자.

 

■ 데이터형 관련

 

int, char, float, unsigned

 

int, char, float는 변수의 데이터형(data type)에 해당하며 저장되는 메모리의 크기와 값의 범위를 결정한다.

예를 들어 int는 4byte의 메모리 크기를 가지는 변수가 생성된다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

unsigned는 int, char과 함께 사용되며 양수를 저장하는 변수로 선언할 때 사용한다.

float에는 unsigned를 사용할 수 없다.

 

 

 데이터형

메모리크기 

범위 

   char

1 byte

  ‐128 ~ +127

   unsigned char

1 byte

  0 ~ 255

   int

4 byte

  ‐2147483648 ~ +2147483647

   unsigned int

4 byte

  0 ~ 4294967295

   float

4 byte

  ±1.2e38 ~ ±3.4e38

 

[표 1-2] 데이터형에 따른 메모리 크기와 허용 범위

 

struct, typedef

 

struct는 여러 가지 변수를 묶어 새로운 데이터형으로 정의할 때 사용되는 키워드이다.

예를 들어 인사 관리를 위해 사용되는 이름소속주민등록번호직급학력입사년월일 등을 구조체로 정의하면

아래와 같다.

 

 

 

 struct _MEMBER_INFO

{

    char name[15]; // 이름

    int code; // 소속 코드

    char jumin[14]; // 주민등록번호

    int class; // 직급

    int education; // 학력

    int year; // 입사년

    int month; // 입사월

    int day; // 입사일

};

 

[소스 1-1] struct 사용 예

 

typedef는 기존의 데이터형을 새로운 이름의 데이터형으로 재정의할 때 사용하는 키워드로긴 문장의 데이터형을

간략히 나타내고자 할 때 사용된다.

 

 

 

typedef unsigned int UINT;

typedef struct _GAME_INFO GAME_INFO; 

 

[소스 1-2] typedef 사용 예

 

■ 반복문

 

for, while

 

for문과 while문은 조건식이 만족될 때만 와 사이를 반복하여 실행한다.

기본 형식과 실행 순서는 아래 [표 1-3]과 같다.

 

 

 for 형식

while 형식 

for초기화 조건식 증감값 )

{

      ④문장;

}

 

실행 순서 ① ② ④ ③ ② ④ ③ ② ④ ...

while조건식 )

{

     ②문장;

}

실행 순서 ① ② ① ② .........

 

[표 1-3] 반복문 형식

 

for문과 while문의 차이점은 조건식을 거짓으로 만들어 반복문을 종료하게 만드는 데 있다.

for문의 반복은 증감값에 의해 조건식이 거짓으로 될 때까지 반복하지만 while문은 와 사이에 조건식을 거짓으로

만들어 주는 코드를 넣어 반복을 종료한다.

 

■ 결정과 선택

 

if, else

 

if문과 함께 사용되는 조건식이 만족되면 if 영역을 실행하고 그 외에는 else 영역을 실행한다각 영역은 괄호로 나타낸다.

 

 

 

 if( 조건식 )

{

     // 조건식이 참(true)이면 실행

}else{

    // 조건식이 거짓(false)이면 실행

}

 

 

[표 1-4] if와 else 사용 형식

 

switch, case, default

 

switch문은 값에 따라 실행영역이 결정되며 기본 형식은 아래 [표 1-5]와 같다.

default는 switch문에 해당되는 값이 없는 경우에 실행되는 영역으로 이 부분은 생략할 수 있다특히 case의 실행영역은

break가 나오기 이전까지이다.

 

 

 

   switch( 변수1 또는 값 )

  {

   case 상수(값)1:

                       문장 1;

                       break;

   case 상수(값)2:

                       문장 2;

                       문장 3;

                       break;

   default :

                       문장4;

  }

 

 

 

[표 1-5] switch문 형식

 

■ static

 

변수는 크게 지역 변수와 전역 변수 그리고 정적 변수로 나눈다.

지역 변수는 함수 안에 선언된 변수를 말하며 함수 호출과 동시에 생성되고 함수가 종료될 때 소멸되는 변수이다.

전역 변수는 프로그램이 생성될 때 생성되며 프로그램이 종료될 때 소멸된다.

정적 변수는 static과 함께 아래 [표 1-6]과 같이 선언하며 정적 변수가 함수 안에 선언되면 함수 호출될 때 생성이 되고

프로그램이 종료될 때 소멸된다.

 

 

 

  static 데이터형 변수명;

 

 

 

[표 1-6] 정적 변수의 형식

 

정적 변수가 전역 변수처럼 선언되면 현재의 파일 안에서만 전역적으로 사용할 수 있다.

 

 

 

 구분

사용범위 

 지역 변수 (local variable)

 함수 안에서만 사용

 전역 변수 (global variable)

 프로젝트 전체에서 사용

 정적 변수 (static variable)

 선언된 함수 또는 파일(*.c)안에서만 사용

 

[표 1-7] 사용 범위에 따른 분류

 

■ 기타

 

break와 continue

 

break는 break와 가장 가까운 반복문 또는 switch문을 종료하게 한다.

continue는 반복문 안에 사용되며 continue가 속한 가장 가까운 반복문을 다시 반복하게 한다.

만약 반복문 안에서 continue를 만나면 continue 이하의 코드는 실행하지 않은 채 다시 반복문으로 제어를 옮겨 반복한다.

 

return

 

return은 함수를 종료하게 하는 키워드이다.

특히 함수를 통해 반환할 값이 있는 경우에 return과 함께 사용하면 함수를 호출한 쪽으로 값을 되돌려 준다.

그리고 호출한 함수 안에서 되돌려 주는 값 없이 함수를 강제적으로 종료할 때도 return을 사용한다.

 

sizeof

 

sizeof는 변수의 메모리 크기를 byte단위로 측정해 준다.

 

enum

 

enum은 상수를 대신하는 문자()를 변수값으로 사용하게 해준다.

기본 형식은 구조체와 유사하며 열거형 변수로 선언된 변수는 enum에 나열된 문자()를 값으로 설정한다.

선언과 사용방법은 아래 [소스 1-3]을 살펴보기 바란다.

 

 

1

2

3

4

5

6

7

8

9

10

11

#include <stdio.h>

 

enum COUNT { ZERO, ONE, TWO }; // ZERO: 0, ONE: 1, TWO : 2

 

int main(void)

{

    enum COUNT nCount; // enum형 선언

    nCount = ONE; // 값 대입

    printf( "출력 : nCount = %d n", nCount );

    return 0;

}

 

[소스 1-3] enum 사용

 

 

[그림 1-19] enum형 변수의 출력 결과

 

여기까지의 내용이 게임 제작에 필요한 C언어 키워드이다. 

이것 외에 여러분이 개념만 찾아봐야 하는 부분은 함수와 배열그리고 포인터이다.

따라서 이 부분을 학습할 때는 물론 문법을 개별적으로 봐도 좋겠지만 되도록 이 책의 게임 프로그래밍을 진행해

가면서 필요한 문법이 나올 때마다 찾아보는 방법을 적극 권하는 바이다.

 

실무자와 일반 학생이 같은 언어를 공부해도 많은 차이가 나는 것은 바로 목표’ 때문이다실무자들은 빠른 시간에

공부해서 현재 맡겨진 프로젝트에 적용해야 하므로 기본 원리만 이해하고 나머지는 프로그래밍을 하면서 필요할 때마다

찾아보면서 익히게 된다이렇게 진행하다보면 프로젝트가 끝날 때 문법도 같이 완성된다이때의 문법은 프로그래밍

속에 살아 있는 문법이 되는 것이다.

학생은 어떠한가모두 다 그런 것은 아니지만 문법서를 그냥 보는 것이다.

목표는 처음부터 끝까지 보는 것이다.

문법이 완성되었을 때 실제 프로젝트를 하려면 프로그래밍을 어떻게어디에 해야 할지 몰라 헤매게 된다.

이것은 프로그래밍과 문법이 연결되지 않았다는 증거이다.

 

이 책을 학습하기 위한 기본 문법은 [표 1-1]에 소개한 정도만 이해하고 있으면 된다특히 포인터가 어려우면 그냥 두라.

프로그래밍을 하면서 자연스럽게 알게 될 것이다그리고 그 부분을 프로그래밍에서 왜사용할 수밖에 없는지를 알게 되면

그와 관련된 문법을 스스로 찾아 공부할 수밖에 없을 것이다.

 

이제 독자의 옆에 C언어 문법서를 두고 이 책과 함께 게임 프로그래밍을 즐겨보자.

 

 

 

좋은하루강의가 도움이 되셨습니까? 손가락 꾸욱 눌러주는 센스 ~~ 

[출처] https://nowcampus.tistory.com/entry/1%EC%9E%A5-C%EC%96%B8%EC%96%B4?category=655340

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
108 [Xamarin] Xamarin.Forms. Android 실행/ 디버깅시에 에뮬리이터 배포오류 Why am I getting this error in Xamarin.Forms using Visual Studio? file 졸리운_곰 2021.12.01 22
107 [Xamarin] Visual Studio 2019 를 설치하고 Xmarin.forms 빌드시 에러 : I am just download and start Visual Studio (Xamarin Project). But there is an ERROR NU1101. file 졸리운_곰 2021.12.01 53
106 [게임개발] How to Create Smarter NPCs in Games file 졸리운_곰 2021.08.31 23
105 (CGP)16장. 탱크 게임 file 졸리운_곰 2021.06.28 802
104 (CGP) 15장. 탱크 맵툴 만들기 file 졸리운_곰 2021.06.28 225
103 (CGP) 14장 Sogo 게임 file 졸리운_곰 2021.06.28 21
102 (CGP)13장. 패턴 뷰어 file 졸리운_곰 2021.06.28 19
101 (CGP) 12장 Snake 게임 file 졸리운_곰 2021.06.28 23
100 (CGP) 11장 Snake 게임 툴 만들기 file 졸리운_곰 2021.06.28 51
99 (CGP) 10장. 하트담기 게임 file 졸리운_곰 2021.06.28 25
98 (CGP) 9장. 하트 툴 만들기 file 졸리운_곰 2021.06.28 24
97 (CGP) 8장. 벽돌깨기 게임 file 졸리운_곰 2021.06.28 48
96 (CGP)7장. 짝 맞추기 게임 file 졸리운_곰 2021.06.28 131
95 (CGP) 6장. 두더지 잡기 게임 file 졸리운_곰 2021.06.28 113
94 (CGP) 5장. 슛골인 게임 file 졸리운_곰 2021.06.27 151
93 (CGP) 4장. 사운드 file 졸리운_곰 2021.06.27 78
92 (CGP) 3장. 게임의 기본 구조 file 졸리운_곰 2021.06.27 126
91 (CGP) 2장. 함수 file 졸리운_곰 2021.06.27 36
» (CGP) 1장. C언어 file 졸리운_곰 2021.06.27 60
89 (CGP) 0장. C를 이용한 게임프로그래밍 강좌를 시작하기 전에 file 졸리운_곰 2021.06.27 173
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED