배열 (Arrays)
배열은 여러 값을 한 개의 변수에 "리스트" 형태로 저장할 수 있는 데이터 타입입니다. 게임 제작에 매우 유용하며 필수적인 요소입니다. 다음은 배열의 기본 예시입니다:
```gml
numbers = [0, 1, 2, 3, 4, 5];
fruits = ["Apples", "Oranges", "Mangoes"];
위 코드에서 배열은 변수에 저장되며, 이후에는 [ ] 괄호 안에 정수 인덱스를 입력하여 값에 접근할 수 있습니다:
first_fruit = fruits[0];
second_fruit = fruits[1];
1차원 배열 (1-Dimensional Arrays)
배열의 기본 구조는 다음과 같습니다:
var _val = a[0];
show_debug_message(_val);
위 코드는 배열 a의 0번째 위치에 있는 값을 콘솔에 출력합니다. 배열의 인덱스는 항상 0에서 시작하며 음수는 사용할 수 없습니다.
배열 생성 (Creating Arrays)
배열을 사용하기 전에 초기화해야 합니다. 초기화는 배열의 각 슬롯에 초기 값을 지정하는 과정입니다. 다음은 반복 루프를 사용한 배열 초기화 예시입니다:
var i = 9;
repeat(10) {
array[i] = 0;
i -= 1;
}
이 코드는 10개의 슬롯을 가진 배열을 생성하며, 각 슬롯에는 0이 초기화됩니다.
배열의 범위 (Array Bounds)
유효한 배열 위치에만 접근해야 하며, 유효하지 않은 위치에 접근하면 오류가 발생합니다:
my_array = array_create(5, 0);
var _val = my_array[6]; // 오류 발생
위 코드에서 배열의 크기는 5이므로 6번째 위치에 접근하면 오류가 발생합니다.
배열 사용 (Using Arrays)
배열은 일반 변수처럼 사용할 수 있습니다. 다음은 배열 값을 합산하는 예시입니다:
var _total = 0;
for (var i = 0; i < 10; ++i) {
_total += array[i];
draw_text(32, 32 + (i * 32), array[i]);
}
draw_text(32, 32 + (i * 32), _total);
위 코드는 배열의 모든 값을 더하고, 각 값을 화면에 그린 뒤 최종 합계를 출력합니다.
배열 삭제 (Deleting Arrays)
참조가 없는 배열은 자동으로 가비지 컬렉터에 의해 삭제됩니다. 배열을 삭제하려면 다음과 같이 설정합니다:
a = undefined;
다차원 배열 (Multi-Dimensional Arrays)
GameMaker에서는 다차원 배열을 지원합니다. 2차원 배열의 예시는 다음과 같습니다:
array[0][0] = 5; // 2D 배열
배열 초기화 예시
2D 배열을 사용하여 적을 생성할 수 있습니다:
enemy[3][2] = 448; // y 위치
enemy[3][1] = 32; // x 위치
enemy[3][0] = obj_Slime; // 객체
이후에는 랜덤한 적을 생성하는 코드를 사용할 수 있습니다:
var i = irandom(3);
instance_create_layer(enemy[i][1], enemy[i][2], "Enemy_Layer", enemy[i][0]);
함수의 배열 인자 (Arrays as Function Arguments)
배열을 함수에 인자로 전달하여 변경할 수 있습니다:
modify_array = function(array) {
array[0] = 2;
array[1] = 4;
array[2] = 6;
};
my_array = [100, 4, 214];
modify_array(my_array);
show_debug_message(my_array); // [2, 4, 6] 출력
요약
배열은 간편하게 여러 데이터를 저장하고 관리할 수 있는 유용한 도구입니다. 배열을 잘 활용하면 코드의 효율성과 가독성을 높일 수 있습니다.
추가 예제
| 예제 번호 | 예제 내용 |
|---|---|
| 1 | 배열을 사용한 점수 기록: 각 플레이어의 점수를 배열에 저장. |
| 2 | 여러 NPC의 위치 정보를 2D 배열에 저장하여 관리. |
| 3 | 제품 목록을 배열로 저장하고, 사용자에게 특정 제품의 정보를 제공하는 예제. |
배열을 이해하고 활용하는 것은 게임 개발에 중요한 기술이므로 충분히 연습하길 바랍니다! ```