`continue` 문 설명 및 예제
continue 문은 루프 내에서 현재 반복을 즉시 종료하고 루프의 시작으로 돌아가 새로운 반복을 시작합니다. 이는 루프 내의 continue 이후의 코드를 생략하게 됩니다. 또한, with 문 내에서도 사용될 수 있으며, 이 경우 다음 인스턴스로 건너 뛰어 다시 실행하게 됩니다. 만약 continue가 이러한 상황이 아닌 곳에서 사용된다면 에러가 발생합니다.
기본 문법
continue 문은 다음과 같은 기본 문법을 가집니다:
continue;
예제
아래는 continue 문이 사용된 다양한 루프의 예제입니다.
1. for 루프 예제
var _val = 0;
for (var i = 0; i < 10; i += 1) {
if (val_array[i] <= 0) {
continue;
}
_val += val_array[i];
}
draw_text(32, 32, "Positive Values Total = " + string(_val));
2. while 루프 예제
var file = file_text_open_read("Game_Data.txt");
var _num = 0;
while (!file_text_eof(file)) {
var _s = file_text_readln(file);
if (_s == "") {
continue;
}
str[_num++] = _s;
}
file_text_close(file);
3. do / until 루프 예제
do {
var _x = random(room_width);
var _y = random(room_height);
if (instance_position(_x, _y, obj_Enemy)) {
continue;
}
instance_create_layer(_x, _y, "Instances", obj_Enemy);
} until (instance_count(obj_Enemy) >= 10);
4. repeat 루프 예제
repeat (10) {
var _x = random(room_width);
var _y = random(room_height);
if (instance_position(_x, _y, obj_Enemy)) {
continue;
}
instance_create_layer(_x, _y, "Instances", obj_Enemy);
}
5. with 문 예제
with (obj_Enemy_Parent) {
if (object_index == obj_Enemy_InDestructible) {
continue;
}
hp -= 100;
if (hp <= 0) {
instance_destroy();
}
}
활용 및 응용 예제
아래 표는 continue 문을 활용한 다양한 예제를 정리한 것입니다.
| 루프 종류 | 설명 | 예제 코드 |
|---|---|---|
for |
배열 내 음수 값을 건너뛰고 합계를 집계 | gml var _val = 0; for (var i = 0; i < 10; i += 1) { if (val_array[i] <= 0) { continue; } _val += val_array[i]; } draw_text(32, 32, "Positive Values Total = " + string(_val)); |
while |
파일에서 빈 줄을 건너뛰고 읽기 | gml var file = file_text_open_read("Game_Data.txt"); var _num = 0; while (!file_text_eof(file)) { var _s = file_text_readln(file); if (_s == "") { continue; } str[_num++] = _s; } file_text_close(file); |
do |
적이 10개 아래일 때 계속 생성 | gml do { var _x = random(room_width); var _y = random(room_height); if (instance_position(_x, _y, obj_Enemy)) { continue; } instance_create_layer(_x, _y, "Instances", obj_Enemy); } until (instance_count(obj_Enemy) >= 10); |
repeat |
적 생성하는 중간에 겹치는 것을 피함 | gml repeat (10) { var _x = random(room_width); var _y = random(room_height); if (instance_position(_x, _y, obj_Enemy)) { continue; } instance_create_layer(_x, _y, "Instances", obj_Enemy); } |
with |
파괴 불가능한 적을 건너뛰고 체력을 감소 | gml with (obj_Enemy_Parent) { if (object_index == obj_Enemy_InDestructible) { continue; } hp -= 100; if (hp <= 0) { instance_destroy(); } } |
이 문서에서는 continue 문을 사용하여 여러 루프와 상황에서 원하는 로직을 구현하는 방법에 대해 설명했습니다. 이를 통해 코드의 가독성과 효율성을 높일 수 있습니다.