조회 수 1064 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
764 RPG Maker 나름대로 게임제작1 - 시나리오 작성법 켈리시 2006.12.26 1447
763 언어/기타 포토샵 완전 정복 !! - 1 - (채도감소) file 다크세이버™ 2006.12.20 532
762 언어/기타 바람수지매클 이동리스트 작성요령 file 청연 2006.12.20 372
761 RPG Maker 방사형 마법범위 좌표구하기 BAYONET 2006.12.17 1510
760 언어/기타 [이벤트 ID이용의 예]슈팅 게임 file masa 2006.12.16 1214
759 언어/기타 맵배치 이런식으로 하면 되려나요..?'';; file 땅콩아줌마 2006.12.15 1689
758 언어/기타 이벤트를 이용, 장애물을 포함한 적과의 거리계산[중급이상추천] file masa 2006.12.14 1291
757 언어/기타 각툴의 팔렛트비교 카타린 2006.12.13 752
756 언어/기타 주인공 이름이 마땅한게 없다면~ 3 네모상자 2006.12.12 1134
755 언어/기타 [C++] 객체 지향 프로그래밍 (OOP) -1- Zeprod 2006.12.12 1191
754 RPG Maker 알만툴 K강의. 스위치를 알자 ☆KBOY★ 2006.12.12 1184
» 언어/기타 [서론] 콘솔창으로 작업하는 것이 허무하신가요? Zeprod 2006.12.10 1064
752 언어/기타 축구게임 시스템 헤지혹 2006.12.10 1358
751 언어/기타 [도트] 포션그리기 카타린 2006.12.10 1041
750 언어/기타 [첫강좌] 양털을 깎아봅세~! file 땅콩아줌마 2006.12.10 627
749 RPG Maker 범위를 구할때 쓸 수 있는 식 둘 메카_탁 2006.12.09 1214
748 언어/기타 이론강의 3. 제작에 앞서 해야 될 것들 Vermond 2006.12.09 428
747 언어/기타 이론강의 2.Vnap으로 제작가능한 장르 Vermond 2006.12.09 562
746 언어/기타 이론강의 1. Vnap이란? Vermond 2006.12.09 545
745 언어/기타 외딴 집이랄까..? .. file 도야 2006.12.05 1289
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 51 Next
/ 51






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

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