<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>사랑합니다님의 이글루</title>
	<link>http://ojb1112.egloos.com</link>
	<description></description>
	<language>ko</language>
	<pubDate>Thu, 08 Oct 2009 12:15:27 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>사랑합니다님의 이글루</title>
		<url>http://md.egloos.com/img/samplelogo2.gif</url>
		<link>http://ojb1112.egloos.com</link>
		<width>80</width>
		<height>80</height>
		<description></description>
	</image>
  	<item>
		<title><![CDATA[ 아이들 언어 발달 ]]> </title>
		<link>http://ojb1112.egloos.com/2550533</link>
		<guid>http://ojb1112.egloos.com/2550533</guid>
		<description>
			<![CDATA[ 
  <table class="post-top"><tbody><tr><td valign="bottom"><div class="htitle"><span class="pcol1 itemSubjectBoldfont"><strong>아이들 언어의 발달</strong></span> <span class="cate pcol2"><img class="pcol2b fil3" alt="" src="wlmailhtml:{AE482E3A-B579-498E-84EF-844DF69EEA28}mid://00000000/!x-usc:http://blogimgs.naver.com/imgs/nblog/spc.gif" width="1" height="11"></span></div><div class="htitle"><span class="cate pcol2"></span>&nbsp;</div><div class="htitle"><span class="cate pcol2"></span>&nbsp;</div></td></tr></tbody></table><div class="post-view pcol2"><!-- 포스팅 -->아이들의 언어발달은 여러가지를 보여주는 중요한 좌표입니다. 우선 인지 발달을 알아보는 데 언어능력은 무엇보다 중요한 기준이 됩니다. <br><br>아이들마다 개인차는 있지만 대부분 아이들이 돌 무렵이면 '엄마','아빠','맘마' 처럼 몇가지 의미있는 용어를 이야기합니다. <br><br>두돌이 되면 '우유 줘' 처럼 2개 단어를 붙여 간단한 의사표현을 하며 세돌이 되면 간단한 문장으로 이야기할 수 있어야 합니다.<br><br>언어 전문가들은 아이들의 언어 장애의 치료가 늦어지면 말 뿐 아니라 여러 가지 발달상의 문제가 되므로 되도록 빨리, 어른 수준으로 언어가 완성되는 만 4세 이전에 제대로 잡아 주어야 한다고 강조합니다. 언어 발달 장애가 생기면 여러 가지 후유증이 생길 수 있습니다.<br><br>아이들이 2∼4세에는 언어가 폭발적으로 증가하는 시기입니다. 이 시기를 거쳐 만 5세가 되면 어른 수준으로 언어 발달이 완성됩니다.<br><br>그리고 이 시기에는 또래 관계가 활발하게 이루어지는데, 또래와의 의사소통의 대표 수단이 언어입니다. 언어 습득 속도가 뒤떨어지는 아이들은 또래와 말이 잘 통하지 않으므로 잘 어울려 놀지 못합니다. <br><br>따라서 혼자 놀거나 친구로부터 억울한 일을 당했을 때 말로 표현하는 능력이 부족하므로 떠밀거나 때리는 등 행동이 앞서게 되므로 떠돌림을 당하기 쉽습니다.<br><br>또 다른 문제점은 말을 해야 할 때에 잘 못하거나 이상하게 하면 주변사람들로부터 이상한 눈초리를 받게 마련입니다. 엄마조차도 '우리 아이는 유난히 말이 느려요' 라고 반복적으로 걱정하는 말을 하면 아이는 점점 더 주눅이 들게 됩니다. <br><br>말을 하고 싶은데 잘 안되고, 주눅이 드니 말로 표현하는 것이 더 어려워지고, 자신감이 없어져 매사에 소극적이 되기 쉽습니다.<br><br>그리고 말이 늦은 아이들의 상당수가 치료 시기를 놓쳐 인지 능력까지 지체되는 경우가 많습니다. 유치원 때까지는 그 영향이 잘 나타나지 않지만, 학교에 들어가서 읽기, 쓰기 등 학업상의 부진을 보이는 경우가 많습니다. <br><br>생각하고, 생각을 말로 정확하게 표현하고, 다른 사람의 말을 귀기울여 듣고, 이해하고, 다시 자신의 의견으로 정리해 말로 표현하는 능력이 결여되면 지능 저하 현상까지 우려됩니다.<br><br>아이들의 언어발달이 현저히 더뎌 보이면 먼저 다른 어려움이 없는지 살펴보아야 합니다.<br><br>신체 발달, 운동 발달, 감각능력 발달이 다른 아이와 비교해 더딘지 알아보고 발달지체 원인을 찾아야 근원적 도움을 줄 수 있습니다. <br><br>아이가 말은 늦지만 다른 사람이 하는 것을 유심히 보고 따라하는 모방 능력이 있다면 인지 능력에는 어려움이 없다고 볼 수 있습니다.<br><br>가족과는 문제가 없지만, 다른 사람 앞에서만 말을 않는다면 말을 못하는 것이 아니라 성격문제로 볼 수 있습니다. <br><br>하지만 언어발달 뿐 아니라 사회성 발달에 문제가 있어 보이면 전반적 발달 장애나 자폐증 징후일 수 있으니 조기 진단과 치료가 필요합니다.<br><br><b>※ 언어 발달 기준표</b><br><br>- 4주 이전: 말이 아닌 짧은 외마디 소리를 냅니다. <br><br>- 생후 1개월: 보고 웃고 옹알이를 합니다. <br><br>- 생후 2개월: 모음 비슷한 소리를 내기 시작. 그러나 어른의 모음과는 다릅니다.<br><br>- 생후 3개월: 덜 울게 됩니다. 말을 걸거나 고개를 끄덕여 주면 미소 짓고, 꾸르륵 소리를 내며 좋아합니다.<br><br>- 생후 4개월: 모음 비슷한 소리가 섞여서 나타납니다. 머리를 돌리고 눈은 말하는 사람을 찾는 것처럼 보이며 기뻐하는 웃음 소리를 냅니다.<br><br>- 생후 6개월<br>한 음절의 옹알이가 나타나기 시작합니다. 까르르 내는 소리나 목구멍에서 꼴깍꼴깍 내는 소리 등을 좋아하고, 고함 소리나 신음 소리 등은 <br>싫어합니다.<br><br>- 생후 8개월: 옹알이에 억양이 나타납니다. 간혹 '마마', '바바' 같은 두 음절의 소리를 냅니다.<br><br>- 생후 10개월: 동작이 섞인 단어를 간혹 이해합니다. <br><br>- 생후 12개월:'아빠', '엄마' 등 1어문 사용이 증가합니다. 간단한 요구에 이해했다는 표시를 하기 시작합니다. 어휘 수는 평균 3개정도 입니다. <br><br>- 생후 15개월: 3-5개 단어를 적절히 사용하고, 신체 부위를 말할 수가 있습니다. 어휘 수는 평균 19개정도 입니다. <br><br>- 생후 18개월<br>3단어에서 50단어까지 사용 가능합니다. 2어문 '엄마','빠빠이'등의 사용이 시작됩니다. <br><br>아직 옹알이를 하지만 묘한 억양이 섞인 여러 음절의 옹알이를 합니다.<br><br>자기 이름과 그 외에 몇 가지 단어를 말하고, 그림을 보고 이야기하는 흉내를 냅니다. <br><br>- 생후 24개월<br>50단어 이상 사용 가능합니다. 2어문 사용이 증가합니다. 언어에 대한 흥미가 증가합니다.<br><br>간단한 심부름을 하기도 하고 그림을 보고 3-5개의 이름을 댈 수 있습니다.<br><br>- 생후 30개월<br>새로운 단어 획득이 급속히 늘어납니다. 옹알이는 전혀 하지 않고 발성 전체가 의사소통의 의도를 가지고 있습니다. <br><br>두 개의 단어로 구성된 말이 대부분이며 세 단어, 다섯 단어로 구성된 문장을 사용하기도 합니다. 이해하기 어려운 유아식 말들을 많이 사용합니다.<br><br>- 생후 36개월<br>어른 말의 60-80%를 이해합니다. 말뜻의 차이를 이해합니다. <br><br>질문을 합니다. <br><br>소꿉장난을 하기도 하고, 노래를 부르고 음절을 반복합니다.<br><br>완벽한 음높이를 갖습니다.<br><br>어휘수가 100개 정도로 증가합니다. <br><br>- 생후 48개월<br>경험외적인 내용외에는 어른의 대화를 이해하고 광범위한 어휘를 가지게<br>됩니다. <br><br>정확한 문법을 사용하나 일부 표현은 미성숙합니다. <br><br>상상적 놀이와 대화를 하고 무엇이든지 묻습니다. <br><br>4개를 정확히 샙니다. 의사대로 이야기 할 수 있습니다. 만든 것으로 <br>이름을 붙일 수 있습니다. 중요한 전치사의 뜻을 알 수 있습니다. <br><br>어휘 수는 평균 1,540개 정도입니다. <br><br>- 생후 60개월 <br><br>집에서나 밖에서나 성숙된 말을 하고 높은 지능을 요구하는 내용만 <br>이해하지 못합니다.<br><br>언어는 지능적이고 문법적으로도 정확합니다. <br><br>일어난 일, 이야기 그리고 지식을 다시 말할 수 있으며 활발한 상상력을 <br>가지고 있습니다. <br><br>크게 읽기 시작합니다. <br><br>4가지 기본 색을 정확히 알며, 단어의 의미를 물어 봅니다. 어휘 수는 <br>평균 2,072개 정도입니다. <!-- //포스팅 --></div><div style="BORDER-BOTTOM: #e5e5e5 1px solid; BORDER-LEFT: #e5e5e5 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #f6f6f6; MARGIN-TOP: 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333333; FONT-SIZE: 12px; BORDER-TOP: #e5e5e5 1px solid; BORDER-RIGHT: #e5e5e5 1px solid; PADDING-TOP: 12px" id="scrapInfo" class="d_12_333333"><div style="LINE-HEIGHT: 5px; HEIGHT: 5px; CLEAR: both; FONT-SIZE: 5px; OVERFLOW: hidden"></div><div style="HEIGHT: 14px"><div style="TEXT-ALIGN: right; WIDTH: 70px; FLOAT: left; OVERFLOW: hidden" id="scrapWhere" class="fl"><b>가져온 곳</b>&nbsp;:&nbsp; </div><div style="FLOAT: left"><span id="scrapFrom" class="d_12_666666">카페</span> &gt;유아교육 대표카페</div><div style="MARGIN: 0px 5px; COLOR: #c9c9c9" class="fl">|</div><div style="FLOAT: left" id="scrapWriter" class="fl"><b>글쓴이</b> : 닭맛나는사탕<span style="MARGIN: 0px 3px 0px 5px; COLOR: #c9c9c9">|</span><a class="d_12_ec790d" href="wlmailhtml:{AE482E3A-B579-498E-84EF-844DF69EEA28}mid://00000000/!x-usc:http://cafe.daum.net/_service/bbs_read?grpid=EKBv&amp;fldid=DsY&amp;contentval=000Ytzzzzzzzzzzzzzzzzzzzzzzzzz" target="_new"> <u>원글보기</u><img style="MARGIN-LEFT: 2px" align="absMiddle" src="wlmailhtml:{AE482E3A-B579-498E-84EF-844DF69EEA28}mid://00000000/!x-usc:http://mimg.daum-img.net/05mail/ui/i_aror.gif" width="10" height="10"></a></div></div></div>			 ]]> 
		</description>
		<category>울 아들♡</category>

		<comments>http://ojb1112.egloos.com/2550533#comments</comments>
		<pubDate>Thu, 08 Oct 2009 12:15:27 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ CRT 메모리 릭 ]]> </title>
		<link>http://ojb1112.egloos.com/2490276</link>
		<guid>http://ojb1112.egloos.com/2490276</guid>
		<description>
			<![CDATA[ 
  <div style="FONT-FAMILY: 돋움; FONT-SIZE: 9pt" class="view"><p><span style="FONT-FAMILY: 돋움"><a href="http://blog.naver.com/winkey83/46506798">http://blog.naver.com/winkey83/46506798</a></span></p></div>			 ]]> 
		</description>
		<category>0xffffDEV</category>

		<comments>http://ojb1112.egloos.com/2490276#comments</comments>
		<pubDate>Wed, 16 Sep 2009 05:43:10 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 내 프로세스는 몇비트짜린가 ]]> </title>
		<link>http://ojb1112.egloos.com/2466684</link>
		<guid>http://ojb1112.egloos.com/2466684</guid>
		<description>
			<![CDATA[ 
  &nbsp;BOOL bIsWow64Process = FALSE;<br>&nbsp;IsWow64Process(GetCurrentProcess(), &amp;bIsWow64Process);<br>#ifdef _X86_<br>&nbsp;LOG_INFO(_T("Running on %s"), (bIsWow64Process) ? _T("WOW64") : _T("32-bit Windows"));<br>#else<br>&nbsp;LOG_INFO(_T("Running on %s"), (bIsWow64Process) ? _T("WOW64") : _T("64-bit Windows"));<br>#endif<br><br><br>나중에 시간날때 해봐야긋당 ㅡ,,ㅡ;			 ]]> 
		</description>
		<category>0xffffDEV</category>

		<comments>http://ojb1112.egloos.com/2466684#comments</comments>
		<pubDate>Tue, 18 Aug 2009 02:46:42 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 아들과 첫 짠~ ]]> </title>
		<link>http://ojb1112.egloos.com/2465607</link>
		<guid>http://ojb1112.egloos.com/2465607</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200908/17/36/e0055036_4a883e39f0729.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200908/17/36/e0055036_4a883e39f0729.jpg');" /></div><br><br>승후는 건배를 너무 좋아한다 ㅎㅎㅎ			 ]]> 
		</description>
		<category>울 아들♡</category>

		<comments>http://ojb1112.egloos.com/2465607#comments</comments>
		<pubDate>Sun, 16 Aug 2009 17:15:44 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 잠깐 짬내서 만들어본거.. 프로젝트 만들때마다 짬내서 만드네 ㅡ,,ㅡ ]]> </title>
		<link>http://ojb1112.egloos.com/2460202</link>
		<guid>http://ojb1112.egloos.com/2460202</guid>
		<description>
			<![CDATA[ 
  <p>WCHAR* g_wszTestText = L"{0}가\r\n{1}나다{2}라마{4}바사아자{3}차카타파{1}하{4}ABCDEGG{2}吳宗法";<br>D3DCOLOR&nbsp; d3dTextColor[10] =<br>{<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 0, 0 ) },&nbsp;&nbsp;///깜장<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 255, 0, 0 ) },&nbsp;///빨강<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 255, 0 ) },&nbsp;///녹색<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 0, 255 ) },&nbsp;///파랑<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 255, 255, 0 ) },<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 0, 0 ) },<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 0, 0 ) },<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 0, 0 ) },<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 0, 0 ) },<br>&nbsp;{ D3DCOLOR_ARGB( 2255, 0, 0, 0 ) },<br>};</p><p>void SetMultiColorText( CGuiWindow* pModifyWindow, WCHAR* wModifyText )<br>{<br>&nbsp;if( pModifyWindow )<br>&nbsp;&nbsp;ZeroMemory( pModifyWindow-&gt;m_sMultiColorText, sizeof( pModifyWindow-&gt;m_sMultiColorText ) );<br>&nbsp;<br>&nbsp;SIZE size;<br>&nbsp;HDC hdc = pModifyWindow-&gt;GetFont()-&gt;GetDC();</p><p>&nbsp;///#############################<br>&nbsp;///##########&nbsp; Issue&nbsp; ##########<br>&nbsp;///#############################<br>&nbsp;/// 1. 컬러 코드 단위로 (구조체로)묶여야 함.<br>&nbsp;/// 2. 자동 행넘김이 되어야 하면 묶여야 함.</p><p><br>&nbsp;/// Parsing<br>&nbsp;///1. '{'를 찾고 '}'까지의 칼라값을 알아온다.<br>&nbsp;///2. '}'부터 다음 '{'까지의 텍스트를 하나씩 가져오면서. 자동 행넘김을 해야 하는 상황이면 묶는다.</p><p>&nbsp;int nArray = 0;<br>&nbsp;int nLastText = wcslen( wModifyText );<br>&nbsp;int nStructArray = -1;<br>&nbsp;CGuiRect rtGui;<br>&nbsp;pModifyWindow-&gt;GetWindowRect( rtGui );<br>&nbsp;<br>&nbsp;for( int i = nArray; i &lt; nLastText; i++ )<br>&nbsp;{<br>&nbsp;&nbsp;if( wModifyText[i] == '{' )<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;nStructArray++;</p><p>&nbsp;&nbsp;&nbsp;wstring wstrColorCode;<br>&nbsp;&nbsp;&nbsp;wstrColorCode.clear();<br>&nbsp;&nbsp;&nbsp;int nColor = 0;<br>&nbsp;&nbsp;&nbsp;/// 칼라값이 1자리 경우<br>&nbsp;&nbsp;&nbsp;if( wModifyText[ i + 2 ] == '}')<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;wstrColorCode +=&nbsp; wModifyText[ i + 1 ];<br>&nbsp;&nbsp;&nbsp;&nbsp;nArray = i + 3;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;///칼라값이 2자리 경우<br>&nbsp;&nbsp;&nbsp;else if( wModifyText[ i + 3 ] == '}')<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;wstrColorCode +=&nbsp; wModifyText[ i + 1 ];<br>&nbsp;&nbsp;&nbsp;&nbsp;wstrColorCode +=&nbsp; wModifyText[ i + 2 ];<br>&nbsp;&nbsp;&nbsp;&nbsp;nArray = i + 4;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;i = nArray;</p><p>&nbsp;&nbsp;&nbsp;/// 칼라값 세팅<br>&nbsp;&nbsp;&nbsp;nColor = _wtoi( wstrColorCode.c_str() );<br>&nbsp;&nbsp;&nbsp;pModifyWindow-&gt;m_sMultiColorText[nStructArray].d3dColor = d3dTextColor[nColor];<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;nArray = i;<br>&nbsp;&nbsp;pModifyWindow-&gt;m_sMultiColorText[nStructArray].wstrText += wModifyText[i];</p><p>&nbsp;&nbsp;/// 문자열 Rect 세팅<br>&nbsp;&nbsp;if( wModifyText[i + 1] == '{' || i == nLastText - 1 || (wModifyText[i + 1] == '\r' &amp;&amp; wModifyText[i + 2] == '\n') )<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;SMultiColorText* pMultiColor = &amp;pModifyWindow-&gt;m_sMultiColorText[nStructArray];<br>&nbsp;&nbsp;&nbsp;if( nStructArray == 0 )<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;GetTextExtentPoint32( hdc, pModifyWindow-&gt;m_sMultiColorText[nStructArray].wstrText.c_str(), pModifyWindow-&gt;m_sMultiColorText[nStructArray].wstrText.size(), &amp;size);<br>&nbsp;&nbsp;&nbsp;&nbsp;rtGui.right = rtGui.left + size.cx;<br>&nbsp;&nbsp;&nbsp;&nbsp;rtGui.bottom = rtGui.top + size.cy;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.left&nbsp;= rtGui.left;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.top&nbsp;&nbsp;= rtGui.top;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.right&nbsp;= rtGui.left + size.cx ;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.bottom&nbsp;= rtGui.top + size.cy;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;rtGui.left = pModifyWindow-&gt;m_sMultiColorText[nStructArray - 1].rtText.right;<br>&nbsp;&nbsp;&nbsp;&nbsp;rtGui.top = pModifyWindow-&gt;m_sMultiColorText[nStructArray - 1].rtText.top;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.left&nbsp;= rtGui.left;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.top&nbsp;&nbsp;= rtGui.top;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;GetTextExtentPoint32( hdc,pMultiColor-&gt;wstrText.c_str(), pMultiColor-&gt;wstrText.size(), &amp;size);<br>&nbsp;&nbsp;&nbsp;&nbsp;rtGui.right = rtGui.left + size.cx;<br>&nbsp;&nbsp;&nbsp;&nbsp;rtGui.bottom = rtGui.top + size.cy;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.right&nbsp;= rtGui.left + size.cx ;<br>&nbsp;&nbsp;&nbsp;&nbsp;pMultiColor-&gt;rtText.bottom&nbsp;= rtGui.top + size.cy;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;/// 행넘김<br>&nbsp;&nbsp;&nbsp;if( i + 2 &lt; nLastText )<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if( wModifyText[i + 1] == '\r' &amp;&amp; wModifyText[i + 2] == '\n'&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtGui.left&nbsp;&nbsp;= 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtGui.top&nbsp;&nbsp;= rtGui.top + rtGui.bottom;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtGui.right&nbsp;= 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rtGui.bottom&nbsp;= rtGui.bottom + size.cy;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;}<br>}</p>			 ]]> 
		</description>
		<category>0xffffDEV</category>

		<comments>http://ojb1112.egloos.com/2460202#comments</comments>
		<pubDate>Mon, 10 Aug 2009 06:54:27 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Z축으로 사각형 돌리기 ]]> </title>
		<link>http://ojb1112.egloos.com/2424659</link>
		<guid>http://ojb1112.egloos.com/2424659</guid>
		<description>
			<![CDATA[ 
  <center>&nbsp;</center><br><p>&nbsp;<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200906/30/36/e0055036_4a4a0d16dde2d.jpg" width="232" height="103" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200906/30/36/e0055036_4a4a0d16dde2d.jpg');" /></div></p><p>&nbsp;</p><p>빨간 색으로 표시된 네개의 정점을 Z 축을 중심으로 회전 시키는 방법&nbsp;</p><p>D3DXVECTOR3 vRevolvePos;</p><p>//vRevolvePos 의 값으로는 네개의 정점의 위치 값을 넣어주면 된다.</p><p>&nbsp;</p><p>float fAngle;</p><p>// fAngle 의 값으로는 회전 시키고자하는 각도 값을 넣으면 된다. (&nbsp;0.0f ~ 2 *&nbsp;PI )&nbsp;</p><p>// 4 개의 정점에 대해서 아래의 공식을 각각 넣어주면 fAngle 각도 만큼 회전된 정점 위치를 얻을 수 있다.&nbsp;<br></p><p>vRevolvePos.x = ( cos( fAngle ) * In.Pos.x ) + ( ( -sin( fAngle ) * In.Pos.y ) );<br>vRevolvePos.y = ( sin( fAngle ) * In.Pos.x ) + ( cos( fAngle ) * In.Pos.y );</p><p>&nbsp;</p><p>&nbsp;</p>			 ]]> 
		</description>
		<category>0xffffDEV</category>

		<comments>http://ojb1112.egloos.com/2424659#comments</comments>
		<pubDate>Tue, 30 Jun 2009 13:03:28 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 하나더 ]]> </title>
		<link>http://ojb1112.egloos.com/2406570</link>
		<guid>http://ojb1112.egloos.com/2406570</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/11/36/e0055036_4a31186899cd9.jpg" width="323" height="285" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/11/36/e0055036_4a31186899cd9.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/11/36/e0055036_4a31190ec7e06.jpg" width="150" height="200" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/11/36/e0055036_4a31190ec7e06.jpg');" /></div>			 ]]> 
		</description>
		<category>나의 발자취</category>

		<comments>http://ojb1112.egloos.com/2406570#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:47:56 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 아들 사진 업뎃 ]]> </title>
		<link>http://ojb1112.egloos.com/2406497</link>
		<guid>http://ojb1112.egloos.com/2406497</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds13.egloos.com/pds/200906/11/36/e0055036_4a310af33b4ae.jpg" width="500" height="507.582515611" onclick="Control.Modal.openDialog(this, event, 'http://pds13.egloos.com/pds/200906/11/36/e0055036_4a310af33b4ae.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/11/36/e0055036_4a310af575ce3.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/11/36/e0055036_4a310af575ce3.jpg');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200906/11/36/e0055036_4a310af8757a3.jpg" width="500" height="375" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200906/11/36/e0055036_4a310af8757a3.jpg');" /></div>			 ]]> 
		</description>
		<category>울 아들♡</category>

		<comments>http://ojb1112.egloos.com/2406497#comments</comments>
		<pubDate>Thu, 11 Jun 2009 13:48:29 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Lua 기본적인 사용법 ]]> </title>
		<link>http://ojb1112.egloos.com/2330766</link>
		<guid>http://ojb1112.egloos.com/2330766</guid>
		<description>
			<![CDATA[ 
  <a href="http://pds13.egloos.com/pds/200903/26/36/e0055036_Lua_Study1.ppt">e0055036_Lua_Study1.ppt</a><br><br><a href="http://pds10.egloos.com/pds/200903/26/36/e0055036_Lua_Study2.ppt">e0055036_Lua_Study2.ppt</a><br><br>루아 책을 잃어 버리는 바람에... 흑흑 ㅠㅠ			 ]]> 
		</description>
		<category>0xffffDEV</category>

		<comments>http://ojb1112.egloos.com/2330766#comments</comments>
		<pubDate>Thu, 26 Mar 2009 02:31:53 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Lua ♡ C++ ]]> </title>
		<link>http://ojb1112.egloos.com/2325239</link>
		<guid>http://ojb1112.egloos.com/2325239</guid>
		<description>
			<![CDATA[ 
  <h1>1 개요</h1><ul><a class="con_link" href="http://excel96.cafe24.com/moin.cgi/Cpp" target="_blank">Cpp</a> 프로그램에다가 루아 가상 머신을 집어넣어 보자. 목적은 간단한 함수 레벨의 튜토리얼이다. 유저 데이터니 클래스니 들어가면 상당히 복잡해지기 때문이다. 게다가 루아가 주(主)가 되지 않는 이상, 함수 정도로도 충분하다. <br><br>루아를 C++와 연동시킬 때 루아와 C++, 둘 중에 어느 쪽을 주인으로 삼을지는 상당히 중요한 문제다. 여기서 주인이라 함은, 실제 객체가 어느 쪽에 존재하느냐다. 음. 뭔가 표현하기가 어려운데, 게임을 예로 들면 PC나 NPC 등이 어느 쪽에 존재하느냐 이 말이다. <br><br><ul><li><b>루아 쪽에 게임 객체가 존재하는 경우:</b> C++ 쪽에서 루아 테이블을 받아와 조작한 후, 루아에게 알려주는 형식이 된다. 상당 분량의 코딩이 루아 쪽에서 이루어지고, 메인 루프도 루아 쪽에 존재하게 된다. 물론 그렇지 않을 수도 있다. 짜기 나름이니깐. <br><li><b>C++ 쪽에 게임 객체가 존재하는 경우:</b> 루아는 C++ 쪽을 바로 액세스할 수 없으므로, 이전에 프로그래머가 가상 머신에다 등록한 래퍼 함수를 통해, C++ 상의 객체를 조작한 후 이를 C++에게 알려주는 방식이 된다. <br><br></li></ul>결국 스크립트 언어를 얼마나 주언어로 많이 사용할 것인가에 대한 이야기라고 할 수 있는데, 위에서도 이야기했듯이 여기에서는 C++ 쪽을 주(主)로 한다. 또한 <a class="con_link" href="http://excel96.cafe24.com/moin.cgi/LuaPlus" target="_blank">LuaPlus</a> 같은 애드인 라이브러리는 사용하지 않는다. 함수로만 끝낼 것이기 때문에 필요가 없다.<img height="15" alt=" :) " hspace="6" src="http://excel96.cafe24.com/img/smile.gif" width="15"><br><br><br></ul><a class="con_link" target="_blank" name="head-cc50ab1a9f54e6b3401f83f47c5b77d41cfc4be3"></a><h1>2 루아 설치</h1><ul>일단 루아 라이브러리가 있어야 한다. <a class="con_link" href="http://www.lua.org/" target="_blank"><img height="11" alt="[WWW]" hspace="4" src="http://excel96.cafe24.com/img/moin-www.gif" width="11" border="0">루아 공식 사이트</a>에서 배포본을 다운로드받는다. <br><br>배포본의 압축을 풀면 include 디렉토리와 src 디렉토리가 있을 것이다. 다른 디렉토리도 많다만 다 필요없다. <br><br><ul><li>include - 라이브러리 헤더가 들어있다. <br><li>src - 라이브러리 소스가 들어있다. <br><ul><li>lib - 루아 표준 라이브러리가 들어있다. 표준 라이브러리에 관한 내용은 <a class="con_link" href="http://excel96.cafe24.com/moin.cgi/LuaStandardLibrary" target="_blank">LuaStandardLibrary</a> 페이지를 참고하시라. <br><li>lua - 루아 인터프리터가 들어있다. <br><li>luac - 루아 컴파일러가 들어있다. <br><br></li></ul></li></ul>이중에 실제로 필요한 것은 include, src, src/lib 디렉토리에 들어있는 파일 뿐이다. 따로 빌드해도 되지만 영 귀찮다면, lib 디렉토리에 들어있는 소스 파일도 프로젝트에 같이 추가해서 빌드해버려도 된다. 어쨌든 이렇게 빌드하면 헤더 파일과 라이브러리 파일을 가지게 된다! <br><br><br></ul><a class="con_link" target="_blank" name="head-7e733f191d53b662e72df20466ab92d91e6628c3"></a><h1>3 구현 목표</h1><ul>플레이어가 NPC를 클릭하면 플레이어의 명성에 따라 NPC가 다른 말을 출력하도록 만들어보자! GUI까지 다 집어넣어서 마우스 클릭 처리까지 하는 것은 아무리 생각해도 오바~이므로 콘솔 프로그램에서 간단히 시뮬레이션하는 정도로만 하자. <br><br><br></ul><a class="con_link" target="_blank" name="head-4d5f1c5ff6b39fa8d80025ca1b3a23863b9f1018"></a><h1>4 구현 순서</h1><ul><a class="con_link" target="_blank" name="head-143b74942647083e5fbb7bae32b369f2d52d2a29"></a><h2>4.1 C++ 쪽에서 게임 객체를 구현</h2><ul><pre class="code"><span style="COLOR: #000000; FONT-FAMILY: Courier New"><span style="COLOR: #0000ff"><b>class</b></span> <span style="COLOR: #000000">Player<br></span><span style="COLOR: #0000c0">{<br></span><span style="COLOR: #0000ff"><b>   public</b></span><span style="COLOR: #0000c0">:</span> <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">name</span><span style="COLOR: #0000c0">;</span><span style="COLOR: #008200">// 플레이어의 이름</span> <br>   <span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">fame</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200">// 플레이어의 명성<br></span><span style="COLOR: #0000c0">}</span><span style="COLOR: #0000c0">;<br><br> <br></span><span style="COLOR: #0000ff"><b>extern</b></span> <span style="COLOR: #000000">Player</span> <span style="COLOR: #000000">g_player</span><span style="COLOR: #0000c0">;<br> <br></span><span style="COLOR: #0000ff"><b>class</b></span> <span style="COLOR: #000000">NPC<br></span><span style="COLOR: #0000c0">{<br>   </span><span style="COLOR: #0000ff"><b>public</b></span><span style="COLOR: #0000c0">:<br>    </span> <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">name</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200">// NPC의 이름</span> <br>     <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">click_script_name</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200">// 플레이어가 클릭했을 때 실행할 스크립트의 이름</span> <br>     <span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #0000ff"><b>const</b></span> <span style="COLOR: #771111">string</span><span style="COLOR: #0000c0">&amp;</span> <span style="COLOR: #000000">n</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #004080">"", const string&amp; clicked = "</span><span style="COLOR: #004080">")<br>       </span><span style="COLOR: #0000c0">:</span> <span style="COLOR: #000000">name</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">n</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">click_script_name</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">clicked</span><span style="COLOR: #0000c0">)</span> <span style="COLOR: #0000c0">{</span><span style="COLOR: #0000c0">}<br></span><span style="COLOR: #0000c0">}</span><span style="COLOR: #0000c0">;</span></span></pre>일단 간단히 그냥 로컬에서 돌아가는 1인용 게임이라고 간주하고, 플레이어는 전역 변수로 둔다. <br><br></ul><a class="con_link" target="_blank" name="head-86a853a95c9e6505cf1983ead4ce6ca9699e1afb"></a><h2>4.2 루아에서 쓰일 래퍼 함수 구현</h2><ul><pre class="code"><span style="COLOR: #000000; FONT-FAMILY: Courier New"><span style="COLOR: #008200">// NPC의 대사를 화면에다 출력한다.<br></span><span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">NPC_SAY</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000c0">{</span> <br><span style="COLOR: #008200">   // 스택에서 메시지를 뽑아낸다.<br></span>   <span style="COLOR: #000000">luaL_checkstring</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #0000c0">-</span><span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>   <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">msg</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_tostring</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #0000c0">-</span><span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>   <span style="COLOR: #000000">lua_pop</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #771111">cout</span> <span style="COLOR: #0000c0">&lt;</span><span style="COLOR: #0000c0">&lt;</span> <span style="COLOR: #000000">msg</span> <span style="COLOR: #0000c0">&lt;</span><span style="COLOR: #0000c0">&lt;</span> <span style="COLOR: #000000">endl</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200"><br>  <br>   // 스택에 푸쉬한 리턴값의 갯수를 반환해야한다.</span> <br><span style="COLOR: #008200">   // 루아 쪽으로 넘겨야할 반환값이 없으므로 0을 반환한다.<br></span>   <span style="COLOR: #0000ff"><b>return</b></span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000c0"> }<br></span><span style="COLOR: #008200"> <br> // 플레이어의 명성치를 루아 쪽으로 넘긴다.<br></span><span style="COLOR: #0000ff"><b> int</b></span> <span style="COLOR: #000000">GET_PLAYER_FAME</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000c0"> {<br></span>    <span style="COLOR: #008200">// 플레이어의 명성치를 루아 스택에다가 푸쉬한다.</span><br>    <span style="COLOR: #000000">lua_pushnumber</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">g_player</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">fame</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>    <br><span style="COLOR: #008200">   // 스택에 푸쉬한 리턴값의 갯수를 반환해야한다.<br></span>   <span style="COLOR: #008200">// 플레이어의 명성을 푸쉬했으니, 1을 반환한다.<br></span>   <span style="COLOR: #0000ff"><b>return</b></span> <span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000c0"> }</span></span></pre>NPC의 대사를 출력하는 함수와 플레이어의 명성치를 루아 쪽으로 넘기는 함수다. C++ 쪽이 메인이 된다고 했으므로, 래퍼 함수는 그냥 약간의 파라미터를 주고받으며 C++ 쪽의 함수를 호출하는 함수가 대부분이 된다. <br><br></ul><a class="con_link" target="_blank" name="head-f7a873b8a2906e85a853b63f0fc8295a58e75113"></a><h2>4.3 루아 함수 구현</h2><ul>clicked.lua <br><pre class="code"><span style="COLOR: #000000; FONT-FAMILY: Courier New"><span style="COLOR: #000000">player_fame</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #000000">GET_PLAYER_FAME</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000ff"><b>if</b></span> <span style="COLOR: #000000">player_fame</span> <span style="COLOR: #0000c0">&gt;</span> <span style="COLOR: #008080"><b>5</b></span><span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #008080"><b>0</b></span> <span style="COLOR: #0000ff"><b>then</b></span> <br><span style="COLOR: #000000">    NPC_SAY</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #004080">"Oh, I know you!"</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000ff"><b>else<br>   </b></span> <span style="COLOR: #000000">NPC_SAY</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #004080">"Who are you?"</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000ff"><b>end</b></span></span></pre>플레이어의 명성치가 500 이상일 때만 아는 체를 하는 NPC 스크립트이다. <br><br></ul><a class="con_link" target="_blank" name="head-1671e867e6dc83aca1749055bf55f0cb610b865a"></a><h2>4.4 루아 호출 부분 구현</h2><ul><pre class="code"><span style="COLOR: #000000; FONT-FAMILY: Courier New"><span style="COLOR: #008200">// 플레이어가 NPC를 클릭한 경우에 호출한다.<br></span><span style="COLOR: #008200">// 스크립트를 무사히 실행한 경우에는 false를 반환하고, <br></span><span style="COLOR: #008200">// 무언가 에러가 생긴 경우에는 true를 반환한다.<br></span><span style="COLOR: #0000ff"><b>bool</b></span> <span style="COLOR: #000000">OnNpcClick</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">&amp;</span> <span style="COLOR: #000000">npc</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000c0">{<br>   </span> <span style="COLOR: #0000ff"><b>const</b></span> <span style="COLOR: #771111">string</span><span style="COLOR: #0000c0">&amp;</span> <span style="COLOR: #000000">filename</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #000000">npc</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">click_script_name</span><span style="COLOR: #0000c0">;<br> <br></span>    <span style="COLOR: #008200">// 먼저 스크립트를 파싱해서 청크를 만든 다음, 스택에 푸쉬</span> <br>    <span style="COLOR: #0000ff"><b>if</b></span> <span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">luaL_loadfile</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">filename</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">c_str</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span> <br>    <span style="COLOR: #0000c0">{</span> <br>        <span style="COLOR: #008200">// 파싱 실패!<br>       </span> <span style="COLOR: #0000ff"><b>return</b></span> <span style="COLOR: #008080"><b>true</b></span><span style="COLOR: #0000c0">;<br>   </span> <span style="COLOR: #0000c0">}</span> <br><br> <br>    <span style="COLOR: #008200">//</span><span style="COLOR: #008200"> 트레이스 함수를 위에서 파싱한 청크 밑에다 끼워넣는다.</span> <br><span style="COLOR: #008200">    // 트레이스 함수는 전역 테이블에 "_TRACEBACK"이란 이름으로 들어가있다.<br></span><span style="COLOR: #0000ff"><b>    int</b></span> <span style="COLOR: #000000">base</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #000000">lua_gettop</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #000000">    lua_getglobal</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"_TRACEBACK"</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #000000">    lua_insert</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">base</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #008200"><br> <br>// 실행한다.<br></span><span style="COLOR: #0000ff"><b>return</b></span> <span style="COLOR: #000000">lua_pcall</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">base</span><span style="COLOR: #0000c0">)</span> <span style="COLOR: #0000c0">!</span><span style="COLOR: #0000c0">=</span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000c0">}</span></span></pre>NPC를 클릭한 경우, 그 NPC의 click_script_name 파일 이름을 읽어와 해당 파일을 실행하게 된다. 디버깅을 좀 더 용이하게 하기 위해서 _TRACEBACK 함수를 스택의 맨 아래에다 집어넣고, lua_pcall을 호출하는 부분이 약간 복잡하긴 하다. <br><br></ul><a class="con_link" target="_blank" name="head-5f0a38d8415448253c0c7270998ab4cc9eb8aeff"></a><h2>4.5 통합</h2><ul><pre class="code"><span style="COLOR: #000000; FONT-FAMILY: Courier New"><span style="COLOR: #0000ff"><b>extern</b></span> <span style="COLOR: #004080">"C"</span> <span style="COLOR: #0000c0">{<br></span><span style="COLOR: #804000">#include &lt;lua.h&gt;<br></span><span style="COLOR: #804000">#include &lt;lualib.h&gt;<br></span><span style="COLOR: #804000">#include &lt;lauxlib.h&gt;<br></span><span style="COLOR: #0000c0">}<br></span><span style="COLOR: #804000">#include &lt;iostream&gt;<br></span><span style="COLOR: #804000">#include &lt;string&gt;<br></span><span style="COLOR: #804000">#include &lt;vector&gt;<br></span><span style="COLOR: #0000ff"><b>using</b></span> <span style="COLOR: #0000ff"><b>namespace</b></span> <span style="COLOR: #771111">std</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #008200"> <br>//////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #008200">// class Player<br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br><br></span><span style="COLOR: #0000ff"><b>class</b></span> <span style="COLOR: #000000">Player<br></span><span style="COLOR: #0000c0">{<br></span><span style="COLOR: #0000ff"><b> public</b></span><span style="COLOR: #0000c0">:<br></span>   <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">name</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200">// 플레이어의 이름</span> <br>   <span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">fame</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200">// 플레이어의 명성<br></span><span style="COLOR: #0000c0">}</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #000000">Player</span> <span style="COLOR: #000000">g_player</span><span style="COLOR: #0000c0">;<br><br><br><br><br><br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br><br><br><br><br></span><span style="COLOR: #008200">// class NPC<br></span><span style="COLOR: #008200"><br>//////////////////////////////////////////////////////////////////////////////<br><br><br></span><span style="COLOR: #0000ff"><b>class</b></span> <span style="COLOR: #000000">NPC<br></span><span style="COLOR: #0000c0">{<br></span><span style="COLOR: #0000ff"><b> public</b></span><span style="COLOR: #0000c0">:<br></span>   <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">name</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200">// NPC의 이름<br>  </span> <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">click_script_name</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #008200">// 플레이어가 클릭했을 때 실행할 스크립트의 이름<br>  </span> <span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #0000ff"><b>const</b></span> <span style="COLOR: #771111">string</span><span style="COLOR: #0000c0">&amp;</span> <span style="COLOR: #000000">n</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #004080">"", const string&amp; clicked = "</span><span style="COLOR: #004080">") <br>         </span><span style="COLOR: #0000c0">:</span> <span style="COLOR: #000000">name</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">n</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">click_script_name</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">clicked</span><span style="COLOR: #0000c0">)</span> <span style="COLOR: #0000c0">{</span><span style="COLOR: #0000c0">}</span><span style="COLOR: #0000c0">}</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br><br></span><span style="COLOR: #008200">// Function Prototypes<br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br><br></span><span style="COLOR: #0000ff"><b>bool</b></span> <span style="COLOR: #000000">OnNpcClick</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">&amp;</span> <span style="COLOR: #000000">npc</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">NPC_SAY</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">GET_PLAYER_FAME</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #0000ff"><b>void</b></span> <span style="COLOR: #000000">main</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000c0">{</span> <span style="COLOR: #008200">// 루아 상태 객체를 생성한다.<br></span>  <span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">pLuaState</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #000000">lua_open</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #008200">// 필요한 라이브러리들을 연다. <br><br><br></span><span style="COLOR: #000000">  lua_baselibopen</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">lua_tablibopen</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #008200">//lua_iolibopen(pLuaState);<br></span>  <span style="COLOR: #008200">//lua_strlibopen(pLuaState);<br></span>  <span style="COLOR: #000000">lua_mathlibopen</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">lua_dblibopen</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;</span> <br><span style="COLOR: #008200">  // 래퍼 함수들을 등록한다. 두번째 인자는 루아에서 쓰일 함수의 <br></span><span style="COLOR: #008200">  // 이름인데, 혼란을 방지하기 위해서 실제 래퍼 함수의 이름과 똑같게 </span><span style="COLOR: #008200"><br>  // 하는 것이 좋다.</span> <br><span style="COLOR: #000000">  lua_register</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"NPC_SAY"</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">NPC_SAY</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">lua_register</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"GET_PLAYER_FAME"</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">GET_PLAYER_FAME</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #008200">// NPC들을 생성한다.<br></span>  <span style="COLOR: #0000ff"><b>typedef</b></span> <span style="COLOR: #771111">vector</span><span style="COLOR: #0000c0">&lt;</span><span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">&gt;</span> <span style="COLOR: #000000">NPC_VECTOR</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">NPC_VECTOR</span> <span style="COLOR: #000000">npcs</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">npclist</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">push_back</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #004080">"NPC1"</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"clicked.lua"</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">npclist</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">push_back</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #004080">"NPC2"</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"clicked.lua"</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">npclist</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">push_back</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #004080">"NPC3"</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"clicked.lua"</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">npclist</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">push_back</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #004080">"NPC4"</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"clicked.lua"</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;</span> <br><span style="COLOR: #008200">  // 플레이어의 상태를 입력받는다.<br></span>  <span style="COLOR: #771111">cout</span> <span style="COLOR: #0000c0">&lt;</span><span style="COLOR: #0000c0">&lt;</span> <span style="COLOR: #004080">"플레이어의 명성을 입력하시오 &gt;&gt; "</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #771111">cin</span> <span style="COLOR: #0000c0">&gt;</span><span style="COLOR: #0000c0">&gt;</span> <span style="COLOR: #000000">g_player</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">fame</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #008200">// 선택을 입력받아, 클릭 함수를 호출한다.<br> </span> <span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">index</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #771111">cout</span> <span style="COLOR: #0000c0">&lt;</span><span style="COLOR: #0000c0">&lt;</span> <span style="COLOR: #004080">"클릭할 NPC의 인덱스를 입력하시오 (0~3) &gt;&gt; "</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #771111">cin</span> <span style="COLOR: #0000c0">&gt;</span><span style="COLOR: #0000c0">&gt;</span> <span style="COLOR: #000000">index</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #000000">OnNpcClick</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">npcs</span><span style="COLOR: #0000c0">[</span><span style="COLOR: #000000">index</span><span style="COLOR: #0000c0">]</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <span style="COLOR: #008200">// 다 끝났으니 루아 상태 객체를 삭제한다.<br></span>  <span style="COLOR: #000000">lua_close</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #0000c0">}</span><span style="COLOR: #008200"><br>  <br>  /////////////////////////////////////////////////////////////////////////////</span><span style="COLOR: #008200">//<br>  // 플레이어가 NPC를 클릭한 경우에 호출한다.<br></span><span style="COLOR: #008200">  // 스크립트를 무사히 실행한 경우에는 false를 반환하고, <br></span><span style="COLOR: #008200">  // 무언가 에러가 생긴 경우에는 true를 반환한다.<br></span><span style="COLOR: #008200">  //////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #0000ff"><b>  <br>  bool</b></span> <span style="COLOR: #000000">OnNpcClick</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">NPC</span><span style="COLOR: #0000c0">&amp;</span> <span style="COLOR: #000000">npc</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000c0">  {</span> <br><span style="COLOR: #0000ff"><b>      const</b></span> <span style="COLOR: #771111">string</span><span style="COLOR: #0000c0">&amp;</span> <span style="COLOR: #000000">filename</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #000000">npc</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">click_script_name</span><span style="COLOR: #0000c0">;<br></span>      <span style="COLOR: #008200">//먼저 스크립트를 파싱해서 청크를 만든 다음, 스택에 푸쉬</span> <br><span style="COLOR: #0000ff"><b>      if</b></span> <span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">luaL_loadfile</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">filename</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">c_str</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)<br></span>      <span style="COLOR: #0000c0">{</span> <br><span style="COLOR: #008200">         // 파싱 실패!<br>        </span> <span style="COLOR: #0000ff"><b>return</b></span> <span style="COLOR: #008080"><b>true</b></span><span style="COLOR: #0000c0">;<br>      </span><span style="COLOR: #0000c0">}<br><br> <br></span>   <span style="COLOR: #008200">// 트레이스 함수를 위에서 파싱한 청크 밑에다 끼워넣는다.<br>  </span> <span style="COLOR: #008200">// 트레이스 함수는 전역 테이블에 "_TRACEBACK"이란 이름으로 들어가있다.<br></span>   <span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">base</span> <span style="COLOR: #0000c0">=</span> <span style="COLOR: #000000">lua_gettop</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>   <span style="COLOR: #000000">lua_getglobal</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #004080">"_TRACEBACK"</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>   <span style="COLOR: #000000">lua_insert</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">base</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>   <br><span style="COLOR: #008200">   // 실행한다.</span> <br><span style="COLOR: #0000ff"><b>   return</b></span> <span style="COLOR: #000000">lua_pcall</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">base</span><span style="COLOR: #0000c0">)</span> <span style="COLOR: #0000c0">!</span><span style="COLOR: #0000c0">=</span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000c0">}<br> <br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #008200">// NPC의 대사를 화면에다 출력한다.<br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">NPC_SAY</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000c0">{<br>   </span><span style="COLOR: #008200">// 스택에서 메시지를 뽑아낸다.<br>  </span> <span style="COLOR: #000000">luaL_checkstring</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #0000c0">-</span><span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>   <span style="COLOR: #771111">string</span> <span style="COLOR: #000000">msg</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_tostring</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #0000c0">-</span><span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>   <span style="COLOR: #000000">lua_pop</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">pLuaState</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;</span> <span style="COLOR: #771111">cout</span> <span style="COLOR: #0000c0">&lt;</span><span style="COLOR: #0000c0">&lt;</span> <span style="COLOR: #000000">msg</span> <span style="COLOR: #0000c0">&lt;</span><span style="COLOR: #0000c0">&lt;</span> <span style="COLOR: #000000">endl</span><span style="COLOR: #0000c0">;<br></span>   <br><span style="COLOR: #008200">   // 스택에 푸쉬한 리턴값의 갯수를 반환해야한다.</span> <br><span style="COLOR: #008200">   // 루아 쪽으로 넘겨야할 반환값이 없으므로 0을 반환한다.</span><br>   <span style="COLOR: #0000ff"><b>return</b></span> <span style="COLOR: #008080"><b>0</b></span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000c0"> }<br></span><span style="COLOR: #008200"> <br>//////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #008200">// 플레이어의 명성치를 루아 쪽으로 넘긴다.<br></span><span style="COLOR: #008200">//////////////////////////////////////////////////////////////////////////////<br></span><span style="COLOR: #0000ff"><b>int</b></span> <span style="COLOR: #000000">GET_PLAYER_FAME</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">lua_State</span><span style="COLOR: #0000c0">*</span> <span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">)<br></span><span style="COLOR: #0000c0">{</span> <br>   <span style="COLOR: #008200">// 플레이어의 명성치를 루아 스택에다가 푸쉬한다.</span><br>   <span style="COLOR: #000000">lua_pushnumber</span><span style="COLOR: #0000c0">(</span><span style="COLOR: #000000">L</span><span style="COLOR: #0000c0">,</span> <span style="COLOR: #000000">g_player</span><span style="COLOR: #0000c0">.</span><span style="COLOR: #000000">fame</span><span style="COLOR: #0000c0">)</span><span style="COLOR: #0000c0">;<br></span>  <br>   <span style="COLOR: #008200">// 스택에 푸쉬한 리턴값의 갯수를 반환해야한다.<br></span>   <span style="COLOR: #008200">// 플레이어의 명성을 푸쉬했으니, 1을 반환한다.<br></span>   <span style="COLOR: #0000ff"><b>return</b></span> <span style="COLOR: #008080"><b>1</b></span><span style="COLOR: #0000c0">;<br></span><span style="COLOR: #0000c0"> }</span></span></pre>에러 처리는 대부분 생략했다. 컴파일은 안해봤는데, 루아 디렉토리만 include 패스에 잘 추가했다면, 아마 컴파일될 것이다. -_-;;; <br><br><br></ul></ul><a class="con_link" target="_blank" name="head-3cbfd6cfbfa964dd5b781d55faddcdbc45225856"></a><h1>5 요약</h1><ul>결국 필수적으로 처리해야하는 일들을 요약해보자면... <br><ul><li>플레이어의 입력에 따라 실행할 스크립트를 판단할 수 있는 시스템이 필요하다. 위의 예에서는 NPC의 인덱스를 플레이어로부터 입력받아, 해당 NPC 객체의 멤버 변수로 들어가있는 스크립트 파일 이름을 이용했다. <br><li>루아 쪽에서 C++ 쪽에 있는 객체의 상태를 쿼리할 수 있는 래퍼 함수가 필요하다. 위의 예에서는 플레이어의 명성치를 쿼리하는 GET_PLAYER_FAME 함수가 있다. <br><li>루아 쪽에서 C++ 쪽에 있는 기능을 호출할 수 있는 래퍼 함수가 필요하다. 위의 예에서는 NPC의 대사를 화면에 출력하는 NPC_SAY 함수가 있다. <br><br><br></li></ul></ul><a class="con_link" target="_blank" name="head-22ac3e87e7a39736ab7eeed8fb07ee006c904f24"></a><h1>6 주의사항</h1><ul><li>루아 관련 헤더를 C++ 프로젝트에다가 포함시킬 때에는 include 문을 아래와 같이 extern "C" 문으로 감싸줘야한다. 그렇지 않으면 링크 에러가 발생한다. <br><pre class="code">extern "C" {     #include &lt;lua.h&gt;     #include &lt;lualib.h&gt;     #include &lt;lauxlib.h&gt; } </pre></li></ul>			 ]]> 
		</description>
		<category>0xffffDEV</category>

		<comments>http://ojb1112.egloos.com/2325239#comments</comments>
		<pubDate>Fri, 20 Mar 2009 06:51:35 GMT</pubDate>
		<dc:creator>사랑합니다</dc:creator>
	</item>
</channel>
</rss>
