GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2] 배열 함수-배열 생성 및 배열 추가

타락카얀 2023. 12. 31. 10:29
728x90

 

 

GAME MAKER 강좌

 

KAYAN

 

 

 

 

 

◈ 배열 생성

 

 


   ● array_create(size, [value])

   - size : 만들 배열의 크기

   - [value] : [선택 사항] 모든 배열 인덱스의 값을 초기화하는데 사용할 값


 

이 함수를 사용하면 주어진 크기의 1차 배열을 만들 수 있습니다.

생성 할 배열의 길이를 함수에 알려 주면 배열에 대한 "핸들"을 반환하여 변수에 할당 할 수 있습니다.

그리고 이 변수를 통해 생성한 배열을 참조하거나 제어할 수 있죠.

이러한 방식으로 생성된 배열은 초기화 값(선택사항)을 지정하지 않으면, 각 항목이 0으로 초기화됩니다.

 

   - 반환값 : Array

 

예)


   instance_array = array_create(100, noone);

 

 

 

 

 

 

◈ 배열 추가 및 삽입

 

 

▣ 주요 목록 ▣


   - array_set(variable, index, value) : 지정한 위치에 값 설정
   - array_push(variable, value, [value], [value], [etc...]) : 배열 끝에 값 추가
   - array_insert(variable, index, value, [value], [value], [etc...]) : 배열 값 삽입
   - array_delete(variable, index, number) : 배열 삭제
   - array_copy(dest, dest_index, src, src_index, length) : 배열 복사


 

 

 

 


   ● array_set(variable, index, value)

   - variable :배열을 보유한 변수
   - index : 값을 설정할 배열의 인덱스
   - value : 설정할 값


 

이 함수를 사용하면 배열의 인덱스에 값을 설정할 수 있습니다.

이 함수는 다음 패턴에 따라 다차원 배열에도 사용할 수 있습니다.


   // 1차 배열
   array_set(my_array, 0, 100);
   
   // 2차 배열
   array_set(my_array[0], 0, 100);
   
   // 3차 배열
   array_set(my_array[0][0], 0, 100);
   
   // 기타...


 

   - 반환값 : 없음

 

예)


   for (var i = 0; i < 10; ++i;)
       {
       array_set(score_array, i, i*100));
       }


 

위 코드는 주어진 배열의 처음 10개 항목을 값으로 설정합니다.

 

 

 

 


   ● array_push(variable, value, [value], [value], [etc...])

   - variable : 배열을 보유하는 변수
   - value : 배열의 끝에 추가할 값

   - [value], [value], [etc...] : [선택 사항] 배열에 추가할 추가 값


 

이 함수를 사용하면 배열 끝에 값을 추가 할 수 있습니다.

 

   - 반환값 : 없음

 


   array_push(score_array, obj_Player1.scr, obj_Player2.scr, obj_Player3.scr, obj_Player4.scr);

 

위의 코드는 주어진 배열의 끝에 4개의 값을 추가합니다.

 

 

 

 

 


   ● array_insert(variable, index, value, [value], [value], [etc...])

   - variable : 배열을 보유하는 변수
   - index : 값을 삽입 할 배열의 인덱스 (위치)
   - value : 삽입 할 값

   - [value], [value], [etc...] : [선택 사항] 배열에 추가할 추가 값


 

이 함수를 사용하면 배열의 주어진 위치에 값을 삽입 할 수 있습니다.

 

주어진 인덱스가 배열의 길이를 벗어난 경우, 값은 지정된 인덱스에 추가되고,

배열의 마지막 인덱스와 삽입된 인덱스 사이에 있는 모든 공백은 기본값 0으로 설정됩니다.

 

   - 반환값 : 없음

 


   array_insert(my_array, 0, score);

 

위의 코드는 my_array 배열의 0 인덱스 위치에 score 값을 추가하는 것입니다.

지정한 위치에 값을 삽입하는 것이기 때문에, 원래 있던 인덱스와 후순위에 있는 인덱스와 값이 뒤로 밀려납니다.

 

 

 


   ● array_delete(variable, index, number)

   - variable : 변수 배열을 보유하는 변수.

   - index : 값을 삭제할 배열의 인덱스(위치). 음수 인덱스는 배열 끝에서부터 계산됩니다.
                 -1의 오프셋은 배열의 마지막 인덱스이고, -2의 오프셋은 마지막 끝에서 두번째 인덱스입니다.

   - number : 삭제할 값의 개수. 음수는 오프셋 인덱스에서 시작하여 거꾸로 삭제됩니다.


 

이 함수를 사용하면 주어진 위치에 있는 인덱스와 값을 삭제할 수 있습니다.

인덱스가 삭제된 만큼 배열의 길이도 줄어듭니다.

 

   - 반환값 : 없음

 


   array_delete(score_array, 0, 10);

 

위의 코드는 score_array 배열의 인덱스 0에서부터 인덱스 9까지 지정된 배열의 모든 값을 삭제합니다.

 

 

 

 

 


    ● array_copy(dest, dest_index, src, src_index, length)

   - dest : 저장할 배열의 ID
   - dest_index : 저장할 배열 내의 인덱스. 음수 인덱스는 배열 끝에서부터 계산됩니다.

   - src : 복사할 원본 배열의 ID
   - src_index : 원본 배열에서 복사를 시작할 인덱스. 음수 인덱스는 배열 끝에서부터 계산됩니다.
   - length : 원본 배열에서 복사할 길이 (배열 인덱스 개수). 음수는 오프셋 인덱스에서 시작하여 거꾸로 복사합니다.


 

이 기능을 사용하면 배열의 전체, 또는, 일부를 임의의 위치에있는 다른 배열로 복사 할 수 있습니다.

복사중인 데이터가 대상 배열의 길이를 초과하면 배열이 확장되어 데이터를 수용(배열의 길이도 그 만큼 늘어남)합니다.

 

이 함수는 다음과 같이, 다차원 배열에도 사용할 수 있습니다.


   // 2차 배열을 1차 배열로 복사하기
   array_copy(item_array, 0, inventory_array[0], 0, len);
   
   // 1차 배열을 3차 배열로 복사하기
   array_copy(item_array[0][0], 0, inventory_array, 0, len);


 

   - 반환값 : 없음

 

예)


if !array_equals(inventory_array, item_array)
   {
   var len = array_length(inventory_array);
   array_copy(item_array, 0, inventory_array, 0, len);
   }


 

위의 코드는 array_equals를 사용하여 두 개의 배열을 검사하여 동일한 값을 보유하는지 확인합니다.

그렇지 않은 경우 코드는 Inventory_array 배열의 전체 내용을 item_array 배열로 복사합니다.

 

 

 

 

 

 

 

 

300x250