조회 수 1091 추천 수 3 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

제가 창조도시에 마지막으로 들어온지 벌써 5년이 되었군요.


 


그때는 Create_Zeno라는 닉네임을 사용하고 있었지만, 오늘 들어와보니 아이디가 사라져 있더군요.


 


많은 시간이 흘렀음을 실감합니다.


 


어리고, 게임 제작에 대해 아무것도 몰랐던 제가 이곳에서 게임 개발의 꿈을 키운 것도 좋은 인연인 것 같습니다.


 


그래서 다시 찾아온 이유는 이곳에 계신 많은 예비 게임 제작자분들에게 제가 받은 만큼 배풀기 위해서입니다.


 


 


게임제작에 대한 강좌라니...


 


 


 


이 홈페이지 중에서도 언어게시판이라는 독특한 게시판에 오신 여러분이라면 C언어를 공부해보시거나 이제 공부를 시작하시려는 분들이 많을 것입니다.


 


하지만, C언어에 대해 실망 하시는 분들이 계실텐데, 콘솔창에 단순히 문자를 찍어대는것을 보면서 한숨을 쉬고 계시는 겁니까?


 


 


C언어는 구동속도가 매우 빠르며 사람이 이해하기 쉬운 형태를 갖춘 언어입니다.


 


단지 속도문제로 어셈블리어를 이용해 게임을 만들겠다는 꿈을 가지신 분이 계시다면, 추천하고 싶은 방법은 아닙니다.


 


코드 자체를 이해하기도 어려우며, 추후에 문제가 발생하여 디버그를 하는데에도 문제가 많기 때문이죠.


 


 


C언어는 운영체제를 개발하기 위해 만들어진 언어로서, Windows 역시 C언어로 제작이 되어있습니다.


 


 


그리고 그 Windows는 자체적으로 그래픽 환경을 구축할 수 있는 API들을 공개했습니다.


 


그 덕분에 거의 모든 프로그래밍 언어는 그래픽적인 윈도우창을 기반으로 프로그램을 만들 수 있고, 또 실행될 수 있는것이지요.


 


 


 


 


가장 기본적인 Window 구현 코드를 볼까요?


 


#include


 


LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
 POINT pt;
 //메세지가 들어오면 실행되는 함수
    switch( msg ) //메세지별로 분배해줍니다.
    {
        case WM_DESTROY: //WM_DESTROY 메세지라면?
            PostQuitMessage( 0 ); //프로그램을 전체 종료하라고하고.
            return 0; //프로시저를 끕니다.
  case WM_KEYDOWN :
   switch( wParam )
   {
    case VK_ESCAPE :
     PostMessage( hWnd, WM_DESTROY, 0, 0L );
     break;
   }
   break;
    }


    return DefWindowProc( hWnd, msg, wParam, lParam );
}


 


INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    // Register the window class
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      L"Odin", NULL };
    RegisterClassEx( &wc );


    // Create the application's window
    HWND hWnd = CreateWindow( L"Odin", L"Project. Odin View",
                              WS_OVERLAPPEDWINDOW, 100, 100, WIDTH, HEIGHT,
                              NULL, NULL, wc.hInstance, NULL );
 
 
 
  ShowWindow( hWnd, SW_SHOWDEFAULT );
  UpdateWindow( hWnd );


   // 메세지 루프로 들어갑니다.
   MSG msg;
   ZeroMemory( &msg, sizeof(msg) ); //메모리 초기화 00000000....0000~~~...0000
   while( msg.message!=WM_QUIT )
   {
    if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) //윈도우 메세지가 튀어나왔다.
    {
     TranslateMessage( &msg );
     DispatchMessage( &msg ); //윈도우 자체 기능을 수행하기 위함
    }
   }
    UnregisterClass( L"Odin", wc.hInstance );
    return 0;
}


 


 


위의 많은 코드들이 보이시나요?


 


위의 코드를 컴파일하고 실행해보신다면, 내용이 아무것도 없는 윈도우창이 생성될 것입니다.


 


중요한 내용들에 대해서는 나중에 알려드릴테지만,


 


저런식으로 코드를 구현하여 윈도우창을 생성하고, 여러분이 지금 공부하시는 C언어를 이용해 기능만 구현하면 윈도우 프로그래밍의 기본을 하시는 것입니다.


 


 


 


따라서 현재 공부하시는 것에 대한 회의를 갖지 마시고, 모든 내용을 숙지하십시오.


 


여러분이 최소한으로 배우게 되는, 포인터, 구조체, 알고리즘등은 기본적인 프로그램 설계시에 꼭 필요한 내용이니까요.


 


그렇지 않다면 기본적인 기능마저도 구현할 수 없게 됩니다.

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
1004 언어/기타 목에 좋은것들.... 1 켄타 2005.05.17 2070
1003 RPG Maker 좌표대입(ARPG) 사고실험.[이론편] 늑대소년 2005.05.18 1509
1002 언어/기타 스킬데미지를 10000이상 뜨게해보자.(턴알,액알 둘다) Dship 2005.05.18 1888
1001 언어/기타 Fruity Loops에서 FX탭 사용방법 (1) Mr^Lee 2005.05.18 1709
1000 RPG Maker RPG XP 배워보기 <변수를 마스터하자 상편> 1 덩키동크 2005.05.18 2206
999 언어/기타 100%고수강의!(변수이론) 늑대소년 2005.05.18 2470
998 언어/기타 나름대로 - 변수강좌 켈리시 2005.05.18 1624
997 언어/기타 변수(變數)의 기초 바람을 가르는 자 2005.05.19 1270
996 언어/기타 이번에는 오프닝을! 장아찌 2005.05.20 2635
995 RPG Maker 액션RPG 속성무기를 만들어보자!! 천룡수 2005.05.20 1538
994 RPG Maker 아르바이트를 만들자 . - 1 Norid 2005.05.20 1739
993 언어/기타 플레이어가 자기의 이름을 정한다 . [영어] file Norid 2005.05.21 1780
992 언어/기타 레벨업을 하라 . 그리하면 살것이니.. 1 file Norid 2005.05.22 1574
991 [RPG2000] 가이드북 -7- 창조도시 2005.05.22 11106
990 언어/기타 나라의 PHP 초보탈출 - 1편 나라 2005.05.22 1732
989 RPG Maker 경영 RPG만들기[콤플리트판] 늑대소년 2005.05.24 2039
988 [RPG2000] 가이드북 -1- (표지내용무) 창조도시 2005.05.25 14508
987 언어/기타 [c++] 생성자,파괴자 챔피온 2005.05.26 1668
986 언어/기타 《완벽하게 현실적인 게임을 만들려면 해야되는 조작 몇 가지》-[上편] 자이크로 2005.05.27 1852
985 언어/기타 [R2000] 초간단 단거리액알 2 비밀소년 2005.05.27 2521
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)