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)값(우선도와 함께) 을 삭제합니다. |
'GameMaker강좌[GM8] > 기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GM8] 윈도우 게임 배포 파일 만들기 (0) | 2018.08.19 |
---|---|
[게임메이커-기초]데이터 구조체-1(ds_stack, ds_queue, ds_list) (0) | 2018.04.19 |
[게임메이커강좌-기초] 텍스트 파일 작성 (2) | 2017.04.01 |
[게임메이커강좌-기초] ini 파일 작성 (2) | 2017.03.26 |
[게임메이커강좌-기초] 중력에 의한 이동 (2) | 2017.02.13 |
댓글