언어/기타
2006.09.17 13:18

왜 C언어를 해야하나요? -2

조회 수 1487 추천 수 7 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

안녕하세요~ ^^


제가 주말엔 피씨방에서 야간 알바를 하기때문에


시간이 많아서 아마 강좌를 올리게 된다면 주말 타임을 이용하게 될겁니다


기대하시는 분이 많이실지는 모르겠지만 한분이시라도 도움이 될 수 있다면


감사히 생각하고 열심히 올려보겠습니다 ^^


아 참고로 msn 아이디는 oopdual@hotmail.com 입니다~


 


_______________________________________________________________________________


 


왜 C언어를 해야하나요? -1을 쭉 읽어보셨다고 해도


 


전혀 아직 C언어를 해서 어떻게 게임을 만들 수 있을까? 라는 생각만 드실겁니다


 


C언어를 열심히 공부하셔서 C언어 책을 1권에서 2권 정도 봤다


 


라고 하는 사람들이 되어도 게임프로그래밍으로의 길과 전혀 가깝게 느껴지지 않을 것입니다.


 


그정도 수준이 되어도 콘솔 화면에(도스 화면 같은거라고 생각하시면 되요) 무언가를 뿌려주는


 


것 밖엔 안되거든요. 그러니까 뭔가 어떠한 문제가 있을때 그 문제를 컴퓨터의 언어로


 


좀 더 자연스럽게 바꿀 수 있는 것 뿐입니다.


 


뭐 사실 C언어에 실력이 늘어가면 늘어갈 수록 좀 더 가까운 프로그램을 짤 수 있는건


 


사실입니다. 가령 전화번호부 프로그램이라든지 영어사전을 만드는 프로그램이라든지


 


현재 우리가 접할 수 있는 주변의 것들을 구현하기 쉬워진다는 말입니다.


 


그렇지만 여전히 콘솔환경에서 벗어날 수가 없습니다.


 


제 생각에 게임 프로그래밍을 하는 사람들이 갈 수 있는 환경은 크게 두가지에서 세가지로


 


보입니다.


 


첫번째 비디오 게임 시장.


 


두번째 컴퓨터 게임 시장


 


세번째 임베디드(모바일 게임 등) 게임 시장


 


물론 그 세가지만 있는것은 아니겠죠. 제가 아는바로 크게 분류를 봤을때 그렇다는 겁니다.


 


제가 여기서 주안점을 맞출 곳은 컴퓨터 게임 시장입니다.


 


우리가 현재 컴퓨터 게임을 만들어서 출시를 한다면 그 운영체제 환경은 어디일까요?


 


컴퓨터 게임 시장의 경우 거의 대다수가 윈도우즈 환경이 아닐까 생각합니다.


 


그렇지만 우리가 C언어를 배우면서 무언가를 처리하는 곳은?


 


콘솔환경인거죠


 


결국 우리는 윈도우즈 프로그래밍이라는 것을 배워야 하는 것입니다.


 


그럼 먼저 대체 윈도우즈 프로그래밍이란게 무엇인가를 생각해봅시다.


 


간단히 생각해봤을때 윈도우즈 프로그래밍이라고 하면 윈도우즈 환경에서의


 


프로그래밍을 뜻하게 될 것입니다.


 


그럼 대체 윈도우즈 환경에서의 프로그래밍은 우리가 콘솔환경에서의 프로그래밍과


 


무엇이 다를까요?


 


간단히 예를 들어보겠습니다.


 


#include<stdio.h>


void main()
{


  printf("Hello World");


}
라는 프로그램은 콘솔환경에 간단한 Hello world라는 문자열을 출력하는 프로그램이 되겠죠


 


제가 여기서 하고 싶은 말은


 


printf라는 함수 입니다.


 


이 printf라는 함수는 기능이 콘솔 환경의 표준 입출력 장치인 모니터에


 


어떠한 문자열을 출력하는 함수입니다.


 


감이 조금은 오셨습니까?(이런 설명을 듣고 감이 올까? -_-)


 


그러니까 제가 하고 싶은 말은 윈도우즈 화면에 어떠한 문자열을 출력하기 위해선


 


윈도우즈 환경에 출력할 수 있는 출력 함수를 써야 한다는 겁니다.


 


그래서 Windows API라는 것이 존재합니다.


 


윈도우즈 환경에서 어떠한 일을 처리하기 위해 존재하는 함수들을 Microsoft사가


 


제공한 것인데요


 


이것을 통해 윈도우즈 화면에 출력을 할 수 있게됩니다.


 


그리고 또 windows 프로그래밍은 메시지 구동방식입니다.


 


가령 C언어에서는 프로그래머가 정해준 방식대로 사용자에게 입력을 받고


 


출력을 해주는 식으로 순서가 정해져 있다고 볼 수 있습니다.


 


하지만 윈도우즈 프로그래밍에서는 이 메시지(이벤트)의 순서에 따라


 


프로그래밍이 진행되게 됩니다.


 


가령 게임이라고 한다면 가만히 아무 메시지(이벤트)가 발생하지 않을때는


 


화면에 그래픽을 뿌려주는 것 말고는 아무것도 하지를 않습니다.


 


그러다가 키보드에서 왼쪽으로 이동하는 키를 눌렀을때


 


키보드 다운이라는 메시지가 프로그램에 날라가면서 캐릭터가 왼쪽으로


 


움직이게 되는 것입니다.


 


자 간단히 말하면 바로 이런게 윈도우즈 프로그래밍 방식입니다.


 


사실 윈도우즈 프로그래밍을 이렇게 간단히 설명해서는 안되는데요


 


사실은 윈도우즈 프로그래밍을 배우기 전에 윈도우즈창을 화면에 띄우고


 


하는 식의 것들을 먼저 배워야 하지만


 


제 강의는 그냥 단순히 C언어와 게임프로그래밍과의 연관성 등을 알아보는게


 


목적이므로(잘도 둘러대는군 -_-;) 나중에 윈도우즈 프로그래밍을 공부하시면서


 


직접 알아보시는게 더 좋을거라 생각해서 중간 중간 부분들을 과감히


 


싹둑싹둑 잘랐답니다 =_=;


 


윈도우즈 프로그래밍이란게 대충 뭔지는 알았는데


 


그럼 왜 처음부터 윈도우즈 프로그래밍을 배우지 콘솔환경의 프로그래밍 방식을


 


배우냐? 윈도우즈 프로그래밍은 C언어랑 관계가 있느냐?


 


등의 생각들이 머리를 지배하실 겁니다(나만 그랬었나? -_-)


 


간단하게 말하면 콘솔환경에서의 C언어 방식의 프로그래밍을 잘 하시게 되면


 


윈도우즈 프로그래밍방식의 몇가지만 익히시면 그대로 프로그램 만들 수 있게됩니다.


 


콘솔 환경에서 전화번호부를 C로 짤 수 있으셨다면 윈도우즈 프로그래밍의


 


메시지 구동방식 및 윈도우즈 화면을 띄우는 방법


 


윈도우즈 환경에서의 함수들(이외에도 상당히 많이 있긴 하군요


 


DC 뭐 그런 것들 =_=)


 


을 배우시게 되면 이전 콘솔환경에서의 프로그램을 윈도우즈 환경에서


 


띄우실 수 있게 되시는 겁니다.


 


뭐 하지만 윈도우즈 프로그래밍을 다 배우셨다고 해도


 


게임을 또 만들 수 있는 건 아닙니다.(만들 수는 있지만 느립니다;;)


 


물론 그 윈도우즈 프로그래밍에 달관하시게 되어 그 구조를 자신이 조금


 


변형시키고 함수도 변형시키고 하시면 얼마든지 빠르게 만드실 수 있지만


 


그리고 나중에 정말 전문가가 되셨다면 그렇게 직접 엔진을 만드셔야 하지만


 


대부분 Direct X 또는 Open gl이라는 방식을 이용하게 됩니다.


 


윈도우즈 프로그래밍(API 및 MFC) 환경은 게임 프로그래밍 방식에 맞지 않게


 


무겁게 설계되었기 때문입니다.


 


그렇기에 C언어를 공부하시고 windows 프로그래밍을 공부하시면서


 


direct X를 공부하시게 되면 게임 프로그래밍을 하실 수 있게 되는 것입니다~ >_<


 


강좌같은걸 처음 쓰다 보니 뭔가 최대한 이해하기 쉽고 알아듣기 쉽게 하기 위해


 


전문적인 내용을 빼고 쓰려고 노력했는데


 


전문적인 내용도 은근히 많이 들어있고;; 전문적인 내용을 빼서


 


빈약해 보이는 부분도 있고 그러네요;; ㅜㅜ


 


결론적으로 말하면


 


C언어(혹은 다른 언어라도 좋습니다. 하지만 되도록 C언어 수준의 언어로)


 


를 공부하신다는 것은 게임프로그래밍의 기초를 닦는다 라는 것이라고 생각하셔도


 


물론 나중에 게임 프로그래밍을 하시려고 하신다면 요즘 추세로는


 


C++이 더 어울립니다.(객체 지향적인 설계가 필요하거든요;;)


 


하지만 C언어를 배운 사람이 C++을 배우기도 수월하기도 합니다.


 


결국 제 생각에 C언어라는 언어를 배운다는 것은 게임프로그래밍으로 가기 위해


(컴퓨터 게임 시장쪽을 말해요 ^^)


 


먼저 배워야 할 첫번째 언어가 아닐까 싶네요.


 


하지만 rpg 만들기 시리즈로 게임을 만들어보는 것은


 


미래에 게임 프로그래밍을 하실 분이시라면 상당히 도움이 된다고 생각합니다


 


시나리오, 그래픽, 게임 구성 등 rpg만들기로 만들어낸 게임도


 


게임의 요소가 분명하거든요


 


C언어는 빨리 시작하면 빨리 시작할 수록 좋습니다.


 


프로그래밍에 대한 눈도 트이고 시야도 넓어지거든요.


 


내가 중학생때 아니 고등학생때라도 이 C언어를 했다면 더 좋았을 텐데


 


라는 생각을 하면서 이 강좌를 쓰게 된건지도 모르겠네요


 


게임 프로그래밍의 길은 참 멀고도 험하답니다~ ㅋ


 


하지만 분명히 매력 있는 직업이라는 것에 대해서는


 


단언 할 수 있을 것 같네요 ^^


 


뭐 이렇게 대충 강좌를 마치겠습니다~


 


정말 제가 써놓고 읽어봐도 허접하네요;; =_=


 


이후 혹시 C언어 강좌를 원하신다면


 


천천히 하나둘 씩 올려 드리긴 하겠습니다~


 


오늘도 허접한 강좌 읽으시느라 수고하셨습니다(__)

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
704 언어/기타 스타 맵을 만들어 볼까? -기초 2- file 다크세이버™ 2006.09.24 394
703 언어/기타 [연재] 2강. 스크립트의 종류를 알아보자! 만삐 2006.09.24 641
702 언어/기타 확인 dnajs 2006.09.24 423
701 언어/기타 스타 맵을 만들어 볼까? -기초 1- file 다크세이버™ 2006.09.24 542
700 언어/기타 그냥 심심해서 생각해낸 플레이어 낚기 이벤트인데요... 네모상자 2006.09.24 1194
699 언어/기타 변수를 절약하자!! 1 길모나 2006.09.22 615
698 언어/기타 그래픽 제작 도구들 dnajs 2006.09.21 540
697 언어/기타 원의 방정식 알고리즘 file Spegel 2006.09.17 1271
» 언어/기타 왜 C언어를 해야하나요? -2 웁피 2006.09.17 1487
695 언어/기타 인터넷 프로그래밍 강의 시간에 실습했던 것. 아란 2006.09.17 951
694 언어/기타 왜 C언어를 해야하나요? -1 웁피 2006.09.16 1426
693 언어/기타 자바 기초 로직 ˙ dnajs 2006.09.16 1290
692 언어/기타 VNAP 배경음 예제 dnajs 2006.09.14 395
691 언어/기타 [소스첨부] 인자값 변경. 청연 2006.09.14 317
690 언어/기타 MSN 주소를 알려주세요. MrGeek 2006.09.13 2677
689 언어/기타 게시판 이용 및 라이센스 공지 J.Clifford 2006.09.13 2190
688 언어/기타 ★C언어 처음 하시는분들 보세요.. 청연 2006.09.13 501
687 언어/기타 주석제거 프로그램 (수정) 청연 2006.09.13 597
686 언어/기타 MFC 색상표 file 피군 2006.09.12 1770
685 언어/기타 미디를 하려면.. dnajs 2006.09.11 529
Board Pagination Prev 1 ... 11 12 13 14 15 16 17 18 19 20 ... 51 Next
/ 51






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

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