티스토리 뷰

728x90

고도 스크립트 개요, 예약어와 연산자, 고도 스크립트 타입과 변수 선언, 고도 스크립트 클래스와 함수에 이은 글이다.

 

조건문 

if, else, elif 키워드를 이용해서 조건문을 기술할 수 있다.

블록 내 조건문 "if (velocity.y > 0):"처럼 조건에 괄호를 사용해도 되지만 C/C++처럼 반드시 기술해야 하는 필수 요소는 아니다. 조건이 true 일 때, false 일 때 수행할 문장들은 탭 문자를 이용해서 들여 쓰기 해야 한다. 조건문을 반복해야 하는 경우 elif로 문장을 이어갈 수 있다.

 

조건에 따라 처리해야 할 문장이 짧은 경우 위의 예제처럼 조건 표현과 같은 줄에 기술할 수도 있다. 조건에 따른 작업이 단순한 대입문인 경우 앞서 기술한 삼항 연산자를 사용하는 것도 유용하다.

 

while 루프 

지정한 조건이 true일 동안 루프를 하며, 루프 중간에서 break로 루프를 빠지거나 continue로 루프 처음으로 이동할 수 있다.

 

for 루프

정수 범위, 배열이나 사전의 원소를 대상으로 루프를 반복하는 제어문으로 for, in, range 키워드를 사용하여 기술한다. for 루프에서도 breakcontinue로 흐름을 제어할 수 있다.

"for 반복자 in 대상:" 형식인데 대상에 배열이 오면 루프를 반복하며 반복자에 배열의 개별 원소가 하나씩 들어가고, 대상에 사전 타입이 오면 키값이 온다.

 

일정한 정수 범위의 루프를 수행할 경우 range(시작값, 종료값, 증분)의 형식으로 범위를 지정할 수 있다. 주의할 점은 종료 값 "미만"으로 처리한다는 점이다. 만약 1부터 10까지 루프를 돌리고 싶다면 range(1, 11)로 지정해야 한다. 증분을 생략하면 1로 간주한다. 증분에 음수를 지정하면 반대 방향으로 루프를 돌릴 수 있다. range(10, 0, -3)으로 지정하면 10, 7, 4, 1을 반복자에 대입하며 루프를 수행할 수 있다. 

 

위의 예제처럼 in 다음에 range(숫자): 로 기술하는 것은 "in 숫자:"와 동일한 효과를 내며 시작 값은 0, 지정한 숫자는 종료 값으로 간주된다. 즉, "for i in 3:"는 0, 1, 2 루프를 수행한다. 만약 숫자가 실수라면 소수점을 올림 처리한 정수로 루프를 수행한다. in 다음에 "문자열"을 기술하면 문자열 내의 개별 문자가 반복자에 대입되며 문자 개수만큼 루프를 수행한다.

 

다중 선택문 

다른 언어에서 switch로 사용하는 다중 선택문을 고도에서는 match로 기술한다. 위의 예제처럼 case, default, break 등은 사용하지 않는다. 들여 쓰기로 일치 여부를 검사할 상수 값이나 변수 등을  기술하고, 다시 들여 쓰기로 처리 루틴을 기술하면 된다. "_:"는 어느 것에도 해당되지 않을 때를(default) 처리한다. C/C++의 switch에서는 break를 기술하지 않으면 아래 문장을 계속 수행하지만 고도 스크립트의 match는 해당 블록을 수행하고 match문 아래로 이동한다. "_:" 대신에 "var etcvar:" 처럼 기술하면 어느 것에도 해당되지 않을 때 해당 값을 선언한 변수에 입력하면서 관련된 처리를 수행할 수 있다. 여러 값을 한 번에 비교하려면 콤마(,)로 여러 개의 값을 기술할 수 있다.

 

일치 여부 확인은 위의 예제들처럼 배열과 사전 타입에 대해서도 가능하다. 일단 배열 및 사전의 항목 개수가 같아야 한다. 기준 값이 비교 대상보다 항목 개수가 많은 경우, 즉 일부만 검사하고 나머지는 일치하지 않아도 되는 경우는 위의 예제처럼 .. 를 사용할 수 있다. 비교 대상 배열 항목이나 사전의 값에 _ 를 기술하여 어떤 값이 와도 좋다는 와일드카드로 활용할 수 있으며 _ 자리에 "var etcvar" 처럼 기술하면 와일드카드에 해당하는 값을 지정한 변수로 받을 수 있다.

 

 

728x90
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31