본문 바로가기
GameMaker강좌[GM8]/기초강좌

[게임메이커-기초]데이터 구조체-2(ds_map, ds_grid, ds_priority)

by 타락카얀 2018. 4. 19.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

 

 


◈ 맵 (ds_map)


 

(ds_map) 은 ini 파일 구조와 비슷한 기능으로, 키를 이용하여 값을 입력하거나 찾을 수 있는 구조입니다.


(▲ 맵의 구조)


맵은 기본적으로 아래의 함수를 통해 생성하거나, 또는 파기하여 메모리에서 완전히 제거할 수 있습니다.

 



   ds_map_create( ) : 새로운 맵을 생성합니다.
   ds_map_destroy(id) : 지정한 (id)맵을 완전히 파기합니다.
   ds_map_clear(id) : 지정한 (id)맵을 클리어하여 입력된 값들을 모두 지웁니다.


 

맵을 생성할 때는 아래와 같이 생성하고, 맵의 id를 변수에 할당한 후, 그 변수를 통해 맵을 제어하게 됩니다.

 



예)


   map=ds_map_create( );

 

값을 넣을 때는 아래의 함수를 통해 값을 입력하게 됩니다.

 



   ds_map_set(id, key, value) : (id)맵에 (key)키와 (val)값의 페어를 할당합니다.


   ds_map_add(id,key,val) : (id)맵에 (key)키와 (val)값의 페어를 추가합니다.
      ※ 단, ds_map에 동일한 키가 이미 있거나 존재하지 않는 ds_map을 id로 지정하면
        실패할 수 있음므로 이 함수로 검사하여 키가 입력되었는지를 확인할 수 있습니다.
        지정한 키에 값이 성공적으로 입력되면 true를 반환하고, 실패하면 false를 반환합니다.

   ds_map_replace(id,key,val) : (id)맵에 (key)키에 관련된 값을 새로운(val)값으로 교체합니다.


 



   예)

   ds_map_add(map,"player",id);



값을 삭제하고자 할 때는 아래의 함수를 사용합니다.

 



   ds_map_delete(id,key) : (id)맵으로부터 (key)키에 관련된 값을 삭제합니다.


키가 존재하는지 체크할 때는 아래의 함수를 사용하여 체크할 수 있습니다.

 





   ds_map_exists(id,key) : (id)맵에 (key)키가 존재하는지를 반환합니다.

입력된 값을 찾고자 할 때는 아래의 함수를 사용합니다.

 



   ds_map_find_value(id,key) : (key)에 관련된 값을 반환합니다.


맵의 크기(입력된 값들의 개수)를 체크하고자 할 때는 아래의 함수를 사용합니다.

 



   ds_map_size(id) : 맵에 저장된 키의 수를 반환합니다.
   ds_map_empty(id) : (id)맵이 비었는지를 반환합니다. 이것은 사이즈가 0인지를 테스트하는

   것과 같습니다.

 

 




 


◈ 그리드 (ds_grid)

 

 

그리드 (ds_grid)는 (x,y)위치를 지정하여 값을 입력하는 구조입니다.

 

 

(▲ 그리드의 구조)


그리드는 기본적으로 아래의 함수를 통해 생성하거나, 또는 파기하여 메모리에서 완전히 제거할 수 있습니다.

 



   ds_grid_create(w,h) : 지정한 (w)너비와 (h)높이의 새로운 그리드를 생성합니다.
   ds_grid_destroy(id) : 지정한 (id)그리드를 완전히 파기합니다.


 

그리드는 아래와 같이 생성하고, 그리드의 id를 변수에 할당한 후, 그 변수를 통해 그리드를 제어하게 됩니다.

 



   예)


   map=ds_grid_create(640,480);

 

아래 함수는 그리드의 크기를 체크하고자 할 때 사용합니다.

 



   ds_grid_width(id) : 지정한 (id)그리드의 넓이를 반환합니다.
   ds_grid_height(id) : 지정한 (id)그리드의 높이를 반환합니다.


 

그리고 생성된 그리드의 크기를 재설정할 수도 있습니다.

 



   ds_grid_resize(id,w,h) : 새로운 (w)너비와 (h)높이로 (id)그리드를 리사이즈합니다.

 

그리드의 크기가 크거나, 또는 작아서 그리드의 크기를 재설정하고 싶을 때 이 함수를 사용합니다.

 

그리드 위치에 값을 입력할 때는 아래의 함수를 통해 값을 입력하게 됩니다.

 



   ds_grid_set(id,x,y,val) : 지정한 (id)그리드의 지정한 (x,y)셀에 (val)값을 지정하여 설정합니다.
   ds_grid_add(id,x,y,val) : 지정한 (id)그리드의 지정한 (x,y)셀에 (val)값을 추가합니다.


 



   예) 그리드의 x,y 위치에 10 값으로 지정할 경우


   ds_grid_set(_grid,x,y,10);


 

지정한 값을 지우고자 할 때는 아래 함수를 사용할 수 있습니다.

 



   ds_grid_clear(id,val) : 지정한 (id)그리드의 지정한 값을 클리어합니다.


그리드의 지정한 위치에 있는 값을 찾고 싶을 때는 아래의 함수를 사용합니다.

 



   ds_grid_get(id,x,y) : 지정한 (id)그리드의 (x,y)셀 값을 반환합니다.

 

또는, 찾고 싶은 값이 있는 위치를 범위를 지정하여 찾을 수도 있습니다.



   ds_grid_value_x(id,x1,y1,x2,y2,val) : 범위 내 (val)값이 있는 셀의 X좌표를 반환합니다.
   ds_grid_value_y(id,x1,y1,x2,y2,val) : 범위 내 (val)값이 있는 셀의 Y좌표를 반환합니다.


 

범위를 지정해 그 범위에 지정한 값이 있는지 체크할 수도 있습니다.



   ds_grid_value_exists(id,x1,y1,x2,y2,val) : 범위 내 어딘가에 (val)값이 있는지를 체크합니다.

그리드에 입력한 값들을 랜덤으로 섞을 수 있습니다.

 



   ds_grid_shuffle(id) : 그리드의 값을 랜덤으로 뒤섞습니다.

 




 

 

◈ 우선 순위 큐 (ds_priority)

 

 

우선 순위 큐(ds_priority)는 큐(ds_queue)와 비슷한 형태지만, 값에 우선 순위를 정해 분류할 수가 있습니다.

 


(▲ 우선도의 구조)


우선 순위 큐는 기본적으로 아래의 함수를 통해 생성하거나, 또는 파기하여 메모리에서 완전히 제거할 수 있습니다.

 



   ds_priority_create( ) : 새로운 우선 순위 큐를 생성합니다.
   ds_priority_destroy(id) : 지정한 (id)우선 순위 큐를 완전히 파기합니다.
   ds_priority_clear(id) : 지정한 (id)우선 순위 큐를 클리어하여 입력된 값들을 모두 지웁니다.


 

우선 순위 큐의 크기(입력된 값들의 개수)를 체크하고자 할 때는 아래의 함수를 사용합니다.



   ds_priority_size(id) : 우선 순위 큐에 저장된 값의 수를 반환합니다.
   ds_priority_empty(id) : 우선 순위 큐가 비었는지를 반환합니다. 이것은 사이즈가 0인지를

   테스트하는 것과 같습니다.

값을 추가하거나 값에 대한 우선 순위를 변경할 때는 아래의 함수를 사용합니다.

 



   ds_priority_add(id,val,prio) : 지정한 (prio)우선 순위와 함께 (val)값을 (id)우선 순위 큐에
   추가합니다.

   ds_priority_change_priority(id,val,prio) : (id)우선 순위 큐의 지정한 (val)값의 (prio)우선 순위를

   변경합니다.

 

우선 순위 큐는 입력된 값을 찾은 후 해당 값을 제거하는 것과 값만 찾는 2가지 형태가 있습니다.

입력된 값을 찾고자 할 때는 아래의 함수를 사용합니다.

 



   ds_priority_delete_min(id) : 우선 순위가 가장 작은 값을 반환하고 값을 삭제합니다.
   ds_priority_find_min(id) : 우선 순위가 가장 작은 값을 반환하지만 값을 삭제하지는 않습니다.

   ds_priority_delete_max(id) : 우선 순위가 가장 큰 값을 반환하여 값을 삭제합니다.
   ds_priority_find_max(id) : 우선 순위가 가장 큰 값을 반환하지만 값을 삭제하지는 않습니다.



값에 대한 우선 순위를 알아보거나 값을 삭제하고자 할 때는 아래의 함수를 사용합니다.

 



   ds_priority_find_priority(id,val) : (id)우선 순위 큐의 지정한 (val)값의 우선도를 반환합니다
   ds_priority_delete_value(id,val) : (id)우선 순위 큐로부터 지정한 (val)값(우선도와 함께) 을

   삭제합니다.

 



 

300x250

댓글