안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘은 while문에 대해서 얘기를 해보겠습니다.
지난번에 for문에 대해서 이야기를 했는데요.
for문은 항상 어디부터 어디까지 라는 범위가 있었습니다.
즉 반복의 끝이 있는 명령어입니다.
하지만 while문의 경우 범위에 대해서 미리 지정하지 않습니다.
단지 특정 조건을 가지고 있고, 그 조건이 만족할 때까지 반복을 하는 구조입니다.
만족을 하지 못한다면 무한 반복이 되는데요.
정말로 맥스가 다운될 때까지 반복되므로 사용에 주의가 따릅니다.
다음 예문을 보도록 합시다.
1
2
3
4
5
6
|
a = 1
while a < 5 do
(
format "a = %\n" a
a += 1
)
|
cs |
1번 라인은 변수 a에 1을 넣습니다.
2번 라인은 while 문을 사용해서 반복을 하는데 a가 5보다 작은 동안 반복을 합니다.
(while문은 조건이 참인 동안 반복을 합니다. 조건이 참만 나온다면 무한 반복됩니다.)
while문 안의 명령들은 변수 a를 출력하고, a에 1씩 값을 증가합니다.
머릿속으로 이 코딩을 따라가 봅시다.
우선 a에 1 값이 들어옵니다.
그 후 a는 5보다 작으므로 while문으로 반복을 시작합니다.
format문으로 a = 1이 출력됩니다.
a값을 증가시켜 1 + 1 해서 a는 2가 됩니다.
a는 2이므로 5보다 작아 반복을 합니다.
format문으로 a = 2가 출력됩니다.
a값을 증가시켜 2 + 1 해서 a는 3이 됩니다.
a는 3이므로 5보다 작아 반복을 합니다.
format문으로 a = 3이 출력됩니다.
a값을 증가시켜 3 + 1 해서 a는 4가 됩니다.
a는 4이므로 5보다 작아 반복을 합니다.
format문으로 a = 4가 출력됩니다.
a값을 증가시켜 4 + 1 해서 a는 5가 됩니다.
a는 5이므로 5보다 작아 반복에서 빠져나옵니다.
생각한 대로의 결과 값이 나왔습니다.
while문이 무한으로 반복을 할 수 있다고 방금 전에 얘기했습니다.
무한 반복을 하면 맥스가 다운될 때까지 두던가 Ctrl + Alt + Del을 눌러 맥스를 강제 종료해야 합니다.
납득할 수 없는 조치지요.
그래서 사용되는 명령어가 keyboard.escPressed입니다.
1
2
3
4
5
6
|
a = 1
while a < 5 do
(
format "a = %\n" a
if keyboard.escPressed do exit
)
|
cs |
조건 자체가 거짓만 나오게 바꿔 봤습니다.
a는 1인 상태에서 변하지 않기 때문에 영원히 5보다는 작습니다.
계속 1만을 출력하는 무한루프인데요.
if keyboard.escPressed do exit를 사용해서
만약 키보드의 esc가 눌렸다면 빠져나오라는 명령어를 넣었습니다.
별로 실행하고 싶진 않지만 실행해 보도록 하겠습니다.
경험은 중요한 거니까요.
esc를 누르자 다행히 잘 빠져나왔습니다.
while문은 끝을 알 수 없는 특수한 경우에 쓰이는데요.
맥스는 외부의 텍스트 파일들을 읽을 때 문자의 길이를 알기 어렵습니다.
그럴 때 끝을 모르겠지만 끝까지 읽으라는 명령으로 while를 많이 사용합니다.
유용한 함수이기 때문에 꼭 익숙해지세요.
다음에는 실질적으로 맥스에 적용되는 스크립트를 배우기 전에 이런저런 알아두면 좋은 것들에 대해 얘기해 보겠습니다.
'맥스스크립트 기초' 카테고리의 다른 글
오브젝트의 Transform (2) (0) | 2019.07.15 |
---|---|
오브젝트의 Transform (1) (2) | 2019.07.14 |
기본 오브젝트 만들기 (1) | 2019.07.12 |
맥스스크립트의 알아두면 좋은 것 (0) | 2019.07.12 |
반복문(for) (8) | 2019.07.09 |
제어문(case) (5) | 2019.07.07 |
제어문(if) (3) | 2019.07.07 |
배열 함수 (3) | 2019.07.05 |