조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
724 RPG Maker [변종 액알] 노 스테이더스. 오직, 랜덤형 게임 천공MiD짱 2006.06.17 1211
723 언어/기타 [고난도 시스템] 당구를 만들어 보자 5 SSS 2007.03.12 1209
722 언어/기타 [Nelba]강의2-초보들은 모여랏![R2000] Nelba 2005.06.01 1206
721 언어/기타 분수의 사용 Yggdrasil 2007.01.26 1206
720 언어/기타 원형 거리 측정 Zeprod 2006.12.30 1206
719 언어/기타 제어문자 간편하게 쓰기 file EverSmileMan 2007.02.13 1205
718 언어/기타 캐릭터 행동에 대한 팁? mk_brand_ 2006.10.12 1205
717 언어/기타 [C++] WinAPI를 이용한 GUI 프로그래밍 Zeprod 2007.01.08 1204
716 언어/기타 blitz basic 리닥터즈 2007.01.11 1201
715 언어/기타 [DX&C++] 3대 행렬 연산의 비대칭성(unsymmetry) Zeprod 2007.04.27 1199
714 RPG Maker 이런거 올려도 되나? Action Rpg 개념 BB.Crow 2006.08.29 1198
713 RPG Maker RPG XP 배워보기 <변수를 마스터하자 중편> 덩키동크 2005.06.17 1196
712 언어/기타 오랜만에 잡담 하나 아란 2007.04.30 1196
711 언어/기타 그냥 심심해서 생각해낸 플레이어 낚기 이벤트인데요... 네모상자 2006.09.24 1194
710 언어/기타 [C++] 객체 지향 프로그래밍 (OOP) -1- Zeprod 2006.12.12 1191
709 RPG Maker RPG2003 인터페이스를 알아보자! 타다기 2005.11.05 1190
708 RPG Maker 알만툴 K강의. 스위치를 알자 ☆KBOY★ 2006.12.12 1184
707 언어/기타 [자료구조] Binary Search Tree Zeprod 2006.12.29 1181
706 언어/기타 template에 관한 간단한 예. 김두한 2007.03.12 1180
705 언어/기타 BGM 페이드에 관한 팁 『덩키동크』 2006.10.30 1173
Board Pagination Prev 1 ... 10 11 12 13 14 15 16 17 18 19 ... 51 Next
/ 51






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

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