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

[게임메이커 강좌-기초][GMS2] 배열 함수-배열 검색

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

 

 

GAME MAKER 강좌

 

KAYAN

 

 

 

 

 

◈ 배열 검색

 

 

▣ 주요 목록 ▣


   - array_get(variable, index) : 지정한 위치의 값 반환
   - array_pop(variable) : 배열의 마지막 인덱스 값을 반환하고 삭제
   - array_shift(variable) : 배열의 첫번째 인덱스 값을 반환하고 삭제
   - array_first(array) : 배열의 첫번째 인덱스 값 반환(삭제 안함)
   - array_last(array) : 배열의 마지막 인덱스 값 반환(삭제 안함)
   - array_get_index(array, value, [offset], [length]) : 지정한 값의 인덱스 반환
   - array_find_index(array, function, [offset], [length]) : 콜백 메서드를 만족하는 인덱스 반환


   - undefined : 정의되지 않음을 나타내는 상수.
   - infinity : 무한대를 나타내는 상수.


 

 

 

 


   ● array_get(variable, index)

   - variable :배열을 보유한 변수.
   - index : 값을 가져올 배열의 인덱스.


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

주어진 배열 인덱스가 배열의 정의된 범위를 벗어난 경우 오류가 발생합니다.

 

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


   // 1차 배열
   array_get(my_array, 0);
   
   // 2차 배열
   array_get(my_array[0], 0);
   
   // 3차 배열
   array_get(my_array[0][0], 0);


 

   - 반환값 : 모두(배열이 보유할 수 있는 모든 유효한 데이터 유형)

 


   for (var i = 0; i < 10; ++i;)
       {
       show_debug_message(array_get(my_array, i));
       }


위 코드는 주어진 항목의 처음 10개 항목을 콘솔에 출력합니다.

 

 

 

 


   ● array_pop(variable)

   - variable :배열을 보유한 변수.


 

이 함수는 주어진 배열에서 마지막 인덱스의 요소를 반환하고 해당 요소를 삭제합니다.

배열이 비어 있으면 함수는 undefined를 반환합니다.

 

이 함수는 array_shift와 동일하게 작동하지만, array_shift는 첫 번째 요소, array_pop은 마지막 요소를 제거하고 반환합니다.

 

※ [참고] : 배열의 마지막 요소를 제거하지 않고 배열을 읽으려면 array_last를 사용하세요.

 

   - 반환값 : 값 (데이터 유형), 또는, undefined

 


   var _lastscore = array_pop(score_array);
   draw_text(32, 32, "Last Score = " + string(_lastscore));


위의 코드는 주어진 배열에서 마지막 값을 팝한 다음 일부 텍스트와 함께 화면에 그립니다.

검색된 항목은 점수 배열에서 삭제됩니다.

 

 

 


   ● array_shift(variable)

   - variable : 배열을 보유한 변수.


이 함수는 주어진 배열에서 첫 번째 인덱스의 요소를 반환하고 해당 요소를 삭제합니다.

이로 인해 다른 모든 요소는 왼쪽으로 한 자리 이동됩니다.

예를 들어, 인덱스 0의 값이 제거 되었을 때, 인덱스 1의 값이 제거되어 빈자리가 된 인덱스 0으로 이동하고,

인덱스 2의 값이 인덱스 1로 이동하는 식입니다.

배열의 마지막 요소는 대체할 값이 없으므로 배열의 길이가 1만큼 감소합니다.

 

배열이 비어 있으면 함수는 undefined를 반환합니다.

 

이 함수는 array_pop과 동일하게 작동하지만, array_pop은 마지막 요소, array_shift는 첫 번째 요소를 제거하고 반환합니다.

 

※ [참고] : 배열에서 첫 번째 요소를 제거하지 않고 첫 번째 요소를 가져오려면 array_first를 사용하세요.

 

 

   - 반환값 : 값 (데이터 유형), 또는, undefined

 


   var _array = ["A", "B", "C"];
   repeat(2)
   {
       array_shift(_array);
   }
   show_debug_message(_array);


위 코드는 _array 배열에서 array_shift를 두 번 호출합니다.

그 후 디버그 메시지에 배열의 내용이 표시됩니다.

함수에 대한 첫 번째 array_shift 호출은 "A" 값을 제거하고, 두 번째 array_shift 호출은 "B" 값을 제거하므로,

디버그 메시지에서는 배열에 "C"만 포함됩니다.

 

 

 

 


   ● array_first(array)

   - array : 첫 번째 값을 가져올 배열


이 함수는 배열의 시작 부분에 있는 요소, 즉 인덱스 0의 첫 번째 요소를 반환합니다.

검색한 값은 삭제하지 않습니다.

 

※ [참고] : 배열의 첫번째 요소를 가져오고 해당 요소를 제거하려면 array_shift를 사용하세요.

 

   - 반환값 : 모두(배열이 보유할 수 있는 모든 유효한 데이터 유형)

 


   var _first_added_enemy = array_first(enemies);
   
   with (_first_added_enemy)
   {
       show_debug_message(string(id) + " is the first enemy in the array.");
   }


위의 코드는 적 배열에 추가된 첫 번째 적 인스턴스를 가져와 임시 변수 _first_add_enemy에 저장합니다.

그런 다음 인스턴스가 인스턴스 ID와 함께 디버그 메시지를 표시하도록 합니다.

 

 

 

 


   ● array_last(array)

   - array : 마지막 값을 가져올 배열


이 함수는 주어진 배열의 마지막 인덱스의 요소를 반환합니다.

검색한 값은 삭제하지 않습니다.

 

※ [참고] : 배열의 마지막 요소를 가져오고 해당 요소를 제거하려면 array_pop을 사용하세요.

 

   - 반환값 : 모두(배열이 보유할 수 있는 모든 유효한 데이터 유형)

 


   var _last_added_enemy = array_last(enemies);
   
   with (_last_added_enemy)
   {
       show_debug_message(string(id) + " is the last enemy in the array.");
   }


위의 코드는 적 배열에 추가된 마지막 적 인스턴스를 가져와 임시 변수 _last_add_enemy에 저장합니다.

그런 다음 해당 인스턴스가 인스턴스 ID와 함께 디버그 메시지를 표시하도록 합니다.

 

 

 

 


   ● array_get_index(array, value, [offset], [length])

   - array : 값을 찾을 배열
   - value : 배열에서 찾을 값

   - [offset] : [선택 사항] 값을 탐색할 시작 위치. 음수 값을 설정하면 배열 끝부터 계산됩니다.
   - [length] : [선택 사항] 값을 탐색할 범위입니다. 음수 값은 배열을 거꾸로 탐색합니다.


이 함수는 주어진 배열에서 지정한 값의 인덱스를 가져옵니다.

 

선택적으로 오프셋 및 길이 매개변수를 함수에 제공하면, 검색할 배열 범위를 정의할 수 있습니다.

값을 찾을 수 없으면 -1이 반환됩니다.

 

   - 반환값 : 실수(값이 발견되었을 때 처음으로 나타나는 인덱스, 발견되지 않으면 -1)

 

※ [참고] 콜백 메서드로 조건을 만족하는 첫 번째 배열 요소의 인덱스를 찾으려면 array_find_index를 사용하세요.

 


   var _array = array_create(100, 1);
   _array[7] = 13;
   var _index = array_get_index(_array, 13);
   show_debug_message("The value 13 was found at index {0}", _index);


위 코드는 먼저 크기 100의 임시 배열 _array를 만들고 인덱스 7의 값을 13으로 설정합니다.

그런 다음 array_get_index를 사용하여 해당 값 13의 인덱스를 찾습니다.

마지막으로 인덱스를 보여주는 디버그 메시지가 표시됩니다.


   var _array = ["a", "b", "c", "d", "e", "d", "c", "b", "a"];
   var _pos1 = array_get_index(_array, "d"); // 3
   var _pos2 = array_get_index(_array, "d", 6); // -1
   var _pos3 = array_get_index(_array, "d", -1, -infinity); // 5


위 코드에서 배열 _array는 문자 집합으로 초기화됩니다.

그런 다음 오프셋과 길이에 대해 서로 다른 값을 사용하여 문자 "d"의 위치를 세 번 탐색합니다.

첫번째는 배열에서 "d"값이 3 인덱스에서 발견되었으므로 3을 반환합니다.

두번째는 6번 인덱스부터 "d"값을 찾았지만 없죠. 그래서 -1을 반환합니다.

세번째는 "d"값이 배열 끝에서부터 역순으로 탐색해 5번째 인덱스에서 먼저 발견되었기 때문에 5를 반환합니다.

 

 

 

 


   ● array_find_index(array, function, [offset], [length])

   - array : 값을 찾을 배열
   - function : 각 요소에서 실행되는 콜백 메서드. true 또는 false 를 반환하는 조건자 메서드.

   - [offset] : [선택 사항] 값을 탐색할 시작 위치. 음수 값을 설정하면 배열 끝부터 계산됩니다.
   - [length] : [선택 사항] 값을 탐색할 범위입니다. 음수 값은 배열을 거꾸로 탐색합니다.


이 함수는 주어진 배열에서 특정 값의 인덱스를 가져옵니다.

배열의 모든 요소에 대해 실행되는 콜백 메서드를 제공하며 조건에 따라 true 또는 false를 반환해야 합니다.

콜백 메서드가 요소에 대해 true를 반환하는 즉시, 함수는 중지되고, 해당 요소의 인덱스를 반환합니다.

조건자가 어떤 요소에서도 true를 반환하지 않으면, 함수는 -1을 반환합니다.

 

   - 반환값 : 실수(값이 발견되었을 때 처음으로 나타나는 인덱스, 발견되지 않으면 -1)

 

※ [참고] : 오프셋 -1과 음수 길이(-infinity, 무한대)를 사용하는 경우 이 함수는 배열의 끝에서 역방향으로 검색합니다.

 


   var _f = function(_element, _index)
   {
       return (_element > 0);
   }
   
   var _array = [-1, -8, -2, -4, 0, 3, 8, 7, 5];
   var _index = array_find_index(_array, _f);


위의 코드는 먼저 배열 요소와 해당 인덱스를 입력으로 사용하는 콜백 메서드를 만듭니다.

콜백 메서드는 배열 요소가 0보다 크면 true를 반환하고 그렇지 않으면 false를 반환합니다.

그러면 이 조건을 만족하는 배열 값의 인덱스를 반환하게 될 겁니다.

 

마지막으로 array_find_index를 사용하여 콜백 메서드의 조건에 맞는 인덱스를 찾아 임시 변수 _index에 저장합니다.

배열에서 0보다 큰 값이 3이 먼저 발견되었고, 배열 인덱스 5에 있으므로, 이 변수에는 5가 저장됩니다.

 

 

 

다음은 배열 함수에서 반환되거나, length 매개 변수로 사용할 수 있는 상수입니다.


   ● undefined : 정의되지 않음.
                      이 상수는 함수가 무언가를 반환해야 하지만, 반환할 적절한 또는 올바른 값이
                      없을 때 반환됩니다.
                      주로 값이 정의되지 않았을 때 반환됩니다.


   ● infinity : 무한대를 나타내는 상수.
                      배열 함수의 탐색 범위에 지정하면 지정 범위 끝까지 탐색할 수 있습니다.
                      음수로 지정하면 역순으로 탐색할 수 있습니다.



 

 

 

 

 

 

 

 

 

 

 

300x250