DS 그리드를 MP 그리드로 변환하기
이 문서는 DS 그리드를 MP 그리드로 변환하는 함수에 대해 설명합니다. 이 함수는 DS 그리드의 모든 0 값을 "빈" 셀로 변환하고, 나머지 값들은 "점유"된 셀로 변환합니다. 선택적으로 매핑 함수를 제공하여 DS 그리드에서 어떤 값이 "빈" 또는 "점유"로 간주될지를 결정할 수 있습니다. MP 그리드를 DS 그리드로 변환하려면 mp_grid_to_ds_grid
함수를 사용하세요.
사용 방법
- DS 그리드에서 0으로 설정된 셀은 MP 그리드에서 빈 셀로 변환됩니다. 나머지 값들은 점유된 셀로 변환됩니다.
- 기본적으로
ds_grid_create
로 생성된 DS 그리드는 모든 요소가 0으로 설정되어 있어, 이를 기반으로 생성된 MP 그리드는 빈 상태입니다. - 그리드는
real
함수로 변환할 수 있는 모든 값을 포함할 수 있습니다. 변환할 수 없는 값(예: 문자만 포함된 문자열)이 있을 경우, 함수는 실패하고 오류 메시지가 표시됩니다.
매핑 함수
선택적으로 전달하는 매핑 함수는 다음과 같은 매개변수를 가져야 합니다:
매개변수 | 유형 | 설명 |
---|---|---|
value | Real | 현재 셀의 값 |
x | Real | 그리드 셀의 x 인덱스/위치 |
y | Real | 그리드 셀의 y 인덱스/위치 |
문법
ds_grid_to_mp_grid(ds_grid, mp_grid[, func]);
매개변수 | 유형 | 설명 |
---|---|---|
ds_grid | DS Grid ID | 변환할 DS 그리드 |
mp_grid | MP Grid ID | 데이터를 기록할 MP 그리드 |
func | Function | 사용할 매핑 함수 |
반환값
- MP 그리드 ID
예제 1: 기본 사용법
var _size = 10;
grd_data = ds_grid_create(_size, _size);
repeat(20) {
ds_grid_set(grd_data, irandom(_size-1), irandom(_size-1), choose(0, false, true, "7", 47));
}
mpg_data = mp_grid_create(0, 0, _size, _size, 16, 16);
ds_grid_to_mp_grid(grd_data, mpg_data);
위 코드는 10x10 크기의 DS 그리드를 생성하고, choose
함수를 사용하여 5개의 가능한 값 중 하나를 20개의 무작위 선택된 셀에 할당합니다. 이후 mp_grid_create
를 사용하여 MP 그리드를 생성하고, ds_grid_to_mp_grid
함수를 호출하여 DS 그리드의 내용을 MP 그리드에 채웁니다. DS 그리드의 0 또는 false 값을 가진 셀은 MP 그리드에서 "빈"으로 표시되고, true, "7" 또는 47 값을 가진 셀은 "점유"로 표시됩니다.
예제 2: 매핑 함수 사용하기
width = 128;
height = 128;
cellsize = 4;
function occupied(value, x, y) {
switch(value) {
case "Mountains":
case "Water":
case "Forest":
return true;
case "Grass":
return false;
default:
return false;
}
}
grd_level = ds_grid_create(width, height);
ds_grid_clear(grd_level, "Grass");
ds_grid_set_disk(grd_level, 60, 60, 20, "Water");
ds_grid_set_disk(grd_level, 100, 60, 20, "Mountains");
ds_grid_set_region(grd_level, 60, 100, 110, 110, "Forest");
mpg_level = mp_grid_create(0, 0, width, height, 4, 4);
ds_grid_to_mp_grid(grd_level, mpg_level, occupied);
위 코드는 매핑 함수를 사용하는 예제를 보여줍니다. 먼저 width
, height
, cellsize
를 정의하고, 값이 "Mountains", "Water", "Forest" 중 하나일 경우 true를 반환하고, "Grass" 또는 다른 값일 경우 false를 반환하는 매핑 함수 occupied
를 정의합니다. 이후 주어진 너비와 높이로 DS 그리드 grd_level
을 생성하고 몇 가지 지형 유형으로 채웁니다. 그 후, mp_grid_create
를 사용하여 같은 너비와 높이의 MP 그리드를 생성하고, ds_grid_to_mp_grid
를 사용하여 DS 그리드의 내용을 MP 그리드에 초기화합니다.