<?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://grayowl.egloos.com</link>
	<description>...</description>
	<language>ko</language>
	<pubDate>Mon, 16 Nov 2009 11:56:53 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>부정확한 정보들</title>
		<url>http://pds16.egloos.com/logo/200910/17/75/e0084575.jpg</url>
		<link>http://grayowl.egloos.com</link>
		<width>80</width>
		<height>98</height>
		<description>...</description>
	</image>
  	<item>
		<title><![CDATA[ 이상한 코드를 많이 봐야, 노멀한 코드에 감사하게 된다. ]]> </title>
		<link>http://grayowl.egloos.com/2751993</link>
		<guid>http://grayowl.egloos.com/2751993</guid>
		<description>
			<![CDATA[ 
  <p>&nbsp;int dogs = 0;<br>&nbsp;int cats = (dogs = 17,240);<br><br>&nbsp;printf("%d\n",cats);<br>&nbsp;printf("%d\n",dogs);<br><br><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200911/16/75/e0084575_4b013a21148d8.jpg" width="400" height="261.883408072" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200911/16/75/e0084575_4b013a21148d8.jpg');" align="left" /><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>-<br><br>&nbsp;int* Js = new int[1004];<br>&nbsp;int*&nbsp; p = Js;<br>&nbsp;<br>&nbsp;Js[0] = 0;<br>&nbsp;Js[1] = 1;<br>&nbsp;<br>&nbsp;// 접미형 증감, 참조 연산자가, 접두형 증감, 참조 연산자보다 우선순위가 높다. 따라서 포인터 연산이 발생하나<br>&nbsp;// x에 대입 되는 값은 포인터 연산에 영향을 받지 않은 값이다.<br>&nbsp;int&nbsp; x = *p++;<br>&nbsp;&nbsp;</p><p>&nbsp;printf("%d\n",x);<br>&nbsp;printf("%d\n",*p);</p><p>&nbsp;</p><p>&nbsp;delete [] Js;<br><br><br><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200911/16/75/e0084575_4b013de7be827.jpg" width="400" height="261.883408072" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200911/16/75/e0084575_4b013de7be827.jpg');" align="left" /></p>			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2751993#comments</comments>
		<pubDate>Mon, 16 Nov 2009 11:40:26 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 일반, 템플릿 함수를 템플릿함수포인터 형태의 매개 변수에 넘겨보기 ]]> </title>
		<link>http://grayowl.egloos.com/2745958</link>
		<guid>http://grayowl.egloos.com/2745958</guid>
		<description>
			<![CDATA[ 
  <p>template&lt;class T&gt;<br>T testFunc(T a[][4])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; printf("%d",sizeof(a));</p><p>&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>}</p><p><br>template&lt;class T&gt;<br>void testFunc2(T (*pFunc)(T a[][4]))<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; T arr[][4] = { {0, 0, 0, 0} };<br>&nbsp;&nbsp;&nbsp;&nbsp; pFunc(arr);<br>}</p><p><br>int testFunc3(int a[][4])<br>{<br>&nbsp;&nbsp;&nbsp; printf("%d",sizeof(a));</p><p><br>&nbsp;&nbsp;&nbsp; return 0;<br>}</p><p><br>int _tmain(int argc, _TCHAR* argv[])<br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp; // 반환 타입 및 인수 타입이 결정된 형태의 함수는 당연히 되고<br>&nbsp;&nbsp;&nbsp;&nbsp; testFunc2(testFunc3);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p><br>&nbsp;&nbsp;&nbsp; // 템플릿으로 지정된 반환 타입 및 인자가 결정안된 상태의 순수 템플릿 함수는 안되고<br>&nbsp;&nbsp;&nbsp;&nbsp; testFunc2(testFunc);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;템플릿 문법으로 인자 형식을 전달받은 템플릿 함수포인터를 받는 함수는 순수 템플릿&nbsp;함수를 수용할 수 있고(헐; 왠지 멋지다)<br>&nbsp;&nbsp;&nbsp;&nbsp;testFunc2&lt;int&gt;(testFunc);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;// 템플릿 문법으로 형식으로 전달받은&nbsp;형식과 인자로 전달되는 형식에 차이가 있으면 안되고<br>&nbsp;&nbsp;&nbsp;&nbsp;testFunc2&lt;int&gt;(testFunc&lt;char&gt;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp;&nbsp;&nbsp; // 템플릿으로 지정된 반환 타입 및 인자를 결정할 수 있는 정보를 제공 받은&nbsp;상태의 템플릿 함수는 함수포인터로 전달이 되고<br>&nbsp;&nbsp;&nbsp;&nbsp; testFunc2(testFunc&lt;int&gt;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>}<br></p><p>&nbsp;<br>-<br><br>요점은 템플릿 함수는 <strong>인자 혹은 템플릿 문법 으로부터</strong> 자신에 대한 형식 정보를 어떻게든 추측할 수 있어야 한다는 것, 2가지다 제공 된다면 두 정보가&nbsp;같아야 된다는 점.(테스트 환경은 VS2008)</p>			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2745958#comments</comments>
		<pubDate>Wed, 11 Nov 2009 08:05:08 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 다차원 배열에 대한 메모 ]]> </title>
		<link>http://grayowl.egloos.com/2743387</link>
		<guid>http://grayowl.egloos.com/2743387</guid>
		<description>
			<![CDATA[ 
  <p>값을 배당할때나, 함수로 전달할때나 맨앞 인덱스만 생략이 가능하다.<br><br>int a[][2] = {&nbsp;&nbsp;&nbsp;&nbsp;{ 1, 2 }, { 3, 4 } };<br>되지만<br>int a[2][] = {&nbsp;&nbsp;&nbsp;&nbsp;{ 1, 2 }, { 3, 4 } };<br>안된다.<br><br>void function( int p_array[][4] )<br>되고<br>void function( int p_array[4][] )<br>안된다<br><br>맨앞&nbsp;인덱스 길이가 유동적일 수 있는 배열을 넘길때에는<br><br>void Process( int p_monsters[][3], int p_monstertypes )<br><br>이런식으로 맨 앞 인덱스의 값을 따로 넘겨주는 기법을 쓰면 된다.<br><br><a href="http://www.yes24.com/24/goods/419724" target="_blank">이책</a>을 읽으며 - <!--       <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"		    xmlns:dc="http://purl.org/dc/elements/1.1/"		    xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">       <rdf:Description	        rdf:about="http://grayowl.egloos.com/2740381"	        dc:identifier="http://grayowl.egloos.com/2740381"	        dc:title="정말 부정확한 메모 경로 찾기 - A*"	        trackback:ping="http://grayowl.egloos.com/tb/2740381"/>       </rdf:RDF>       --></p>			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2743387#comments</comments>
		<pubDate>Mon, 09 Nov 2009 07:13:05 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 패턴이라는것 ]]> </title>
		<link>http://grayowl.egloos.com/2741222</link>
		<guid>http://grayowl.egloos.com/2741222</guid>
		<description>
			<![CDATA[ 
  //&nbsp;출현프레임,유닛종류,이동패턴 <br>int Enemy_AppearSchedule_Table[5][3] = <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ 20, 0, 0,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20, 0, 1,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30, 0, 2,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40, 0, 0,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50, 0, 1};<br>이렇게 출현 스케쥴표를 만들어 놓고 패턴은 다음과 같이 정의해볼 수 있다.<br><br>//시작x,y&nbsp;증감치&nbsp;&nbsp;중간목표위치&nbsp;증감치 중간목표위치 증감치 종료x,y<br>int pattern[2][14] =<br>{ 640, 100,&nbsp; -6, 0,&nbsp; 220, 100,&nbsp; 0,&nbsp; 10,&nbsp; 220, 200,&nbsp; -10, 0, -200, 200,<br>&nbsp; 640, 400,&nbsp;-10, 0,&nbsp; 220, 400,&nbsp; 0, -10,&nbsp; 220, 300,&nbsp; -10, 0, -200, 300<br>}<br><br>중간에 꼭 거쳐야 하는 지점과, 그 지점 사이의 이동 속도와 방향을 정의해서 지그재그로도 이동도 지정할 수 있다.<br>패턴 정의를 링크드 리스트 등으로 구현하면 조금 더 유연하게 이동을 디자인할 수 있겠다는 생각이 든다. 다만 링크드 리스트를 사용하면 자료를 처음에 초기화할때 고정된 테이블을 사용하는 것 보다 복잡하게 로딩해야 할 것 같다.<br><br><a href="http://www.yes24.com/24/goods/1422225" target="_blank">이책</a>을 읽으며 - 			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2741222#comments</comments>
		<pubDate>Sat, 07 Nov 2009 11:40:22 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 정말 부정확한 메모 경로 찾기 - A* ]]> </title>
		<link>http://grayowl.egloos.com/2740381</link>
		<guid>http://grayowl.egloos.com/2740381</guid>
		<description>
			<![CDATA[ 
  2차원 맵구조에서 지점에서 지점으로의 경로를 추출하는 방법에는 일단 초보적인 너비우선탐색법 이라는 것이 있다. 이 방식은 시작점에서 떨어진&nbsp;수준 순서로 처리가 된다. 여기서 처리라 함은 간단히 자기 주변 노드들을 처리 대상 모음 힙에 넣는 일이다. 넣을때 중요한 일이 하나 있는데, 넣어지는 녀석의 데이터 구조에 자신을 넣은 노드를 지목하는 란에 현재 처리 대상 노드를 넣어서 힙에 넣는다.<br>&nbsp;<br>이 방법은 너무 제약과 단점이 많기 때문에 게임 에서는 주로 다른 방식을 사용하는데 거리우선탐색법 이라는 구조다. 너비우선탐색법에서는 대각선에 놓인 노드와 수평으로 옆에 놓인 노드가 같은 실행 순서를 할당받을 수 있었다면, 거리우선탐색 구조에서는 대각선은 수평,수직 부분 처리가 모두 이루어진 후에 이루어지게 된다. <br><br>거리우선탐색법을 응용한 여러&nbsp;방식이 있는데 그 중에서 가장 유명한 것이 A*(에이스타)라고 하는 방식이다. 이 방식에서는 힙에서 정렬 값으로 삼는(그래서 처리 순서에 영향을 주는 값)휴리스틱 변수에 현재까지 계산된 진행된거리 + 목표셀까지의 직선거리를 합산한 방식을 사용한다.<br><br><a href="http://www.yes24.com/24/goods/419724" target="_blank">이책</a>을 읽으며 -			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2740381#comments</comments>
		<pubDate>Fri, 06 Nov 2009 13:55:50 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 허프만트리압축 메모 ]]> </title>
		<link>http://grayowl.egloos.com/2739216</link>
		<guid>http://grayowl.egloos.com/2739216</guid>
		<description>
			<![CDATA[ 
  빈도 역순으로 정렬하는 힙에 삽입된 노드들이&nbsp;차례로 2개씩 쌍으로 인출되서, 한 부모를 모시는 하위 트리로 2개로 변화하게 된다. 그리고 새로 생긴 부모 트리는 자식들의 빈도를 합산한 빈도값을 지니게 된체로 다시 힙으로 들어간다.&nbsp;이 방식을 통해서 잦은 값은 상위 레벨에, 드문 값은 점점 트리 하위 레벨로 가게&nbsp;된다. 결과적으로 그래서 잦은 값은 적은 비트로 표현하고, 드믄 값은 그보다 많은 비트로 표현하겠다는 것 같은데, 출현값들의 테이블의 인덱스를 압축코드로 쓰면서&nbsp;경제적인 가변길이 인덱스를 지원한다고 말하는게 더 맛이 나는 것 같기도 하다.<br><br><a href="http://www.yes24.com/24/goods/419724" target="_blank">이책</a>을 읽으며 -<br><br>간단히 순서를 정리하자면, 우선 [데이터][빈도] 이렇게 구성되는 빈도표를 구성하고 간 항목을 빈도값을 역순으로 비교하는 힙에 넣는다. 그런 후에 2개씩 빼서 허프만 트리 만들기 알고리즘을 실행하고, 완성된 허프만 트리에서 실제 [데이터][허프만속성]&nbsp;모양으로&nbsp;변환표를&nbsp;구성해서&nbsp;압축할때 이표를 참조해서 간단히 허프만 코드로 변환한다. 압축 해제할때 허프만 트리가 필요하니, 트리는 배열 형태로 변환 후 허프만코드 파일에 같이 저장한다.			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2739216#comments</comments>
		<pubDate>Thu, 05 Nov 2009 11:56:35 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 힙트리 메모 ]]> </title>
		<link>http://grayowl.egloos.com/2735788</link>
		<guid>http://grayowl.egloos.com/2735788</guid>
		<description>
			<![CDATA[ 
  힙트리는 조밀해야 한다. 또한 부모와 자식&nbsp;노드 사이의&nbsp;크기 관계가 모든 노드에서 같아야 한다. <br>다시 말해서 부모 노드가 자식 노드보다 크기로 했으면 다른 모든 노드에서도 그 조건이 만족 되어야 한다.<br><br><a href="http://www.yes24.com/24/goods/419724" target="_blank">이책</a>을 읽으며 -			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2735788#comments</comments>
		<pubDate>Tue, 03 Nov 2009 08:33:47 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 다차원 배열을 이용한 유한상태기계... ]]> </title>
		<link>http://grayowl.egloos.com/2734866</link>
		<guid>http://grayowl.egloos.com/2734866</guid>
		<description>
			<![CDATA[ 
  <p>int [상태][사건][조건상태1][조건상태2] .... 이런 식으로 사용하는 거란 말이던데, 다른 방식들보다 기억에 남는다. 인상적이랄까... 상태에 <strong>따른</strong> AI루틴 전에, 사건 발생 조건 검사해서, 상태&nbsp;전이부터 처리해줘야 한다는 순서도 인상적이다.<br><br><a href="http://www.yes24.com/24/goods/419724" target="_blank">이책</a>을 읽으며 -</p>			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2734866#comments</comments>
		<pubDate>Mon, 02 Nov 2009 11:54:17 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 타일맵 자료 구조에 대한 이상한 생각 정리 ]]> </title>
		<link>http://grayowl.egloos.com/2734751</link>
		<guid>http://grayowl.egloos.com/2734751</guid>
		<description>
			<![CDATA[ 
  <p>쉽게 생각하기 위해서, 이동을 타일 단위로 한다고 하고,&nbsp;이동 기능을 위해서&nbsp;뭐가 필요한가&nbsp;정리해보면&nbsp;<strong>방향값</strong>이 하나 필요하다는 것을 적어두고, 현재 타일 에서 해당 방향으로 이어진 타일에 접근할 수 있는 자료 구조가 필요하다. 만약 64X64 정도의 초소형&nbsp;타입맵이고, 그 중 거의&nbsp;전부를 사용하는 꽉찬 맵이라면 그냥&nbsp;배열로 관리하는 것이 합리적이나, 1024X1024 정도의 대형 크기에 실제로 캐릭터가 이동 가능한 면적은 전체 대비 15% 정도 밖에 되지 않는다면 배열을 사용하는 것은 다소 비합리적이다. 이럴때는 각 타일이 각 방향별로 연결된 타일들을 유일하게 지목할 수 있는 자료구조를 (물론 그림도 그렇게 그려져야 하고, 그리고 그릴때는 그냥 다 다 그려버리면 된다) 가지면 해결이 된다. 머리 아프면 그냥 다 다차원 배열로 관리하면 된다. 램값도 싼데...<br><br><a href="http://www.yes24.com/24/goods/419724" target="_blank">이책</a>을 읽으며 - </p>			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2734751#comments</comments>
		<pubDate>Mon, 02 Nov 2009 09:49:40 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 이상한 정리 - diff & patch, 그리고 hunk ]]> </title>
		<link>http://grayowl.egloos.com/2733831</link>
		<guid>http://grayowl.egloos.com/2733831</guid>
		<description>
			<![CDATA[ 
  <p><br>우선 사용법은 <a href="http://wiki.kldp.org/wiki.php/DiffAndPatch" target="_blank">여기에</a>.<br><br>hunk라는 개념이 나오는데, 기본적으로 변화가 시작 되기 직전 세줄과, 변화가 끝난 직후 세줄 그리고&nbsp;변화가 이루어진 부분 이 3부분을 통째로 합쳐서 hunk라는 논리 단위로 호칭한다. <br><br>patch 에러메세지를 보면 hunk 번호가 나오는데 변화가 일어난 덩어리 단위로 청크 번호를 생각해서 찾으면 된다. 기본 값은 위로, 아래로 3줄까지 하나의 헝크에 넣는데, 헝크 끼리 겹치면 하나의 헝크로 합친다. 이렇게 합쳐진 헝크는 사이에 변화&nbsp;없는 행이 껴있는 여러개의 변화 덩어리를 보유하게 되는 모양이 된다.<br><br><a href="http://www.yes24.com/24/goods/2817871" target="_blank">이책</a>을 읽으며 -</p>			 ]]> 
		</description>

		<comments>http://grayowl.egloos.com/2733831#comments</comments>
		<pubDate>Sun, 01 Nov 2009 13:05:40 GMT</pubDate>
		<dc:creator>grayowl</dc:creator>
	</item>
</channel>
</rss>
