While 루프 해설 및 예제
While Loop는 특정 조건이 true로 평가될 때까지 반복하는 구조입니다. 이 루프는 변수를 사용하여 조건을 설정하고, 이 변수가 true가 되면 루프를 종료합니다. 루프 내에서 조건을 변경하더라도 그 조건은 루프가 끝난 후에 적용되기 때문에, 모든 루프 내의 동작이 완료될 때까지 기다렸다가 다음 동작으로 넘어갑니다.
기본 문법
While Loop를 사용할 때는 다음의 세 가지 요소를 정의해야 합니다:
- 변수: 조건 검사를 위한 변수
- 비교 유형: 수행할 비교의 종류(예: 작다, 크다, 같다 등)
- 값: 변수와 비교할 값
이를 바탕으로 다음과 같은 행동을 정의하고 루프 내에서 실행할 수 있습니다.
예제 코드
아래는 While Loop의 기본적인 예제입니다:
// 변수 초기화
var is_running = false;
// While 루프 시작
while (!is_running) {
// 랜덤한 x/y 위치 생성
var random_x = irandom(room_width);
var random_y = irandom(room_height);
// 충돌 체크
if (!collision_point(random_x, random_y, obj_wall, false)) {
// 충돌이 없으면 루프 종료
is_running = true;
}
}
// 충돌이 없는 위치에 객체 생성
instance_create_layer(random_x, random_y, "Instances", obj_player);
이 코드는 처음에 is_running 변수를 false로 설정하고, 충돌이 없을 때까지 랜덤 위치를 생성하는 루프를 실행합니다.
주요 요소 설명
| 번호 | 요소 | 설명 |
|---|---|---|
| 1 | 변수 | 루프 내의 조건을 확인하기 위한 변수 |
| 2 | 비교 유형 | 수행할 비교 유형(예: <, >, ==, >=, <=) |
| 3 | 값 | 변수와 비교할 값 |
| 4 | 루프 내 작업 | 루프 동안 실행할 작업 (변경, 처리 등) |
| 5 | Break 문 | 루프를 조기 종료시키기 위한 명령어 |
다양한 활용 예제
- 조건부 반복 작업
- 특정 게임 오브젝트가 화면에 있을 때까지 계속해서 이동하는 경우.
var is_moving = true;
while (is_moving) {
// 오브젝트를 이동
x += 5;
// 조건 체크 (화면 밖으로 나가면 이동 중지)
if (x > room_width) {
is_moving = false;
}
}
- 입력 처리
- 사용자가 특정 조건을 만족할 때까지 입력을 받아 처리하는 경우.
var is_waiting = true;
while (is_waiting) {
if (keyboard_check_pressed(vk_enter)) {
show_message("입력이 완료되었습니다!");
is_waiting = false; // 루프 종료
}
}
- 게임 이벤트 대기
- 특정 아이템을 수집할 때까지 대기하는 루프.
var item_collected = false;
while (!item_collected) {
// 아이템을 체크
if (instance_exists(obj_item)) {
item_collected = true; // 아이템이 존재하면 수집 완료
}
}
이러한 방식으로 While Loop는 다양한 상황에서 유용하게 활용될 수 있습니다. 필요한 상황에 맞게 자유롭게 조건과 행동을 조합하여 사용할 수 있습니다.
위 예제를 참고하여 여러분의 게임 로직에 적합한 While Loop 구조를 구현해 보세요!